我的问题是关于如何解决 ODE 的耦合系统,并在图中打印出变量。
我正在求解一个 q 值和一个 e 值,在下面的这组耦合 ODE 中可以看到:
我的初始值为是 0.95 是我的初始值为 1,其中常数= 1e9。
对于我的结果,我想绘制 q vs. e。我希望 e 值在 q 增加时变为零。
def q_e(x,t):
    # M, a constant
    M = 1e9
    # q and e input assignment
    q = x[0]
    e = x[1]
    # Eq.
    dqdt = (48/(5*math.pi*M**2))*(2*math.pi*M*q)**(11/3)*((1+(73/24)*e**2+(37/96)*e**4)/(1-e**2)**(7/2))
    dedt = -1*(304/(15*M))*(2*math.pi*M*q)**(8/3)*e*((1+(121/304)*e**2)/(1-e**2)**(5/2))
    return [dfdt,dedt]
x0 = [1,0.95]   # initial values q = 1, e = 0.99
t = np.linspace(0,100)
y = odeint(q_e,x0,t)
q = x[:,0]      # output in sep. columns 
e = x[:,1]
plt.plot(q,e)
#plt.semilogy(q,e) # test
我假设如果我打印出我的 q 和 e 值,我可以看到哪里出错了。于是我试了一下,
print(y)
并得到了输出
[[  1.00000000e+00   9.50000000e-01]
[  6.29120765e+05   3.44703571e-05]
[  1.39158341e+02   4.86785907e+02]
[  1.39158341e+02   4.86793360e+02]
其中 [ 1.39158341e+02 4.86793360e+02] 在之后的许多列中重复其长度为. 注意到 [ 6.29120765e+05 3.44703571e-05] 的 q 和 e 值是正常的,这有点积极。
我试过弄乱我的代码,用 e 值代替时间 t,但没有任何效果。求指点和帮助,谢谢!