如何使用integrate.odeint解释已解决的ODE系统的结果?

时间:2015-11-26 22:10:26

标签: python scipy ode

我正在解决洛伦兹方程组(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]。

阵列中的所有数字是多少?当然,对于微分方程组,每个方程只有一个解决方案吗?

1 个答案:

答案 0 :(得分:0)

您知道ODE集成的结果是一个函数吗?

k(以0开头)对应于t[k]时的函数值。时间t[0]的第一行包含初始值state0