我的问题是关于如何解决 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,但没有任何效果。求指点和帮助,谢谢!