我正在解决洛伦兹方程组(3个常微分方程),我的代码如下。
from scipy.integrate import odeint
import numpy as np
from numpy import array, arange
def Lorentz(state,t): #Define the function for the derivatives for each equation
u = state[0]
v = state[1]
w = state[2] #Give each differential equation (u, v and w) a state.
a = 5.0
b = 0.9
c = 8.2 #Define the constants a, b and c.
du = -a*(u - v)
dv = c*u - v - u*w
dw = -b*w + u*v #Define the differential equations u, v and w.
return [du, dv, dw] #Return the set of differential equations that the function defines.
state0 = [0.0, 1.0, 2.0] #Define the set of inition conditions for u, v and w, respectively.
t = arange(0.0, 10.0, 0.7) #Solve the equations from t=0 to t=10.
print odeint(Lorentz, state0, t)
当我用
运行代码时t = arange(0.0, 10.0, arg)
我得到的结果数量取决于“arg”的值。如果我选择一个大值,我会得到少量结果。对于大于10.0的任何东西,这给出了一个数组[0.0,1.0,2.0]。
对于较低的值,数组中的行数会变大,但第一行保持不变。对于像0.01这样的非常低的值,我得到了大量的数字,总是第一行为[0.0,1.0,2.0]。
阵列中的所有数字是多少?当然,对于微分方程组,每个方程只有一个解决方案吗?
答案 0 :(得分:0)
您知道ODE集成的结果是一个函数吗?
行k
(以0
开头)对应于t[k]
时的函数值。时间t[0]
的第一行包含初始值state0
。