带有微分方程数组的Python节点

问题描述 投票:0回答:1

我有下一个一阶微分方程(示例):

dn/dt=A*n; n(0)=28

当A为常数时,可以使用python odeint完美解决。但是我有一个.txt文件中A的不同值数组[不是函数,只是一个值数组]

A = [0.1,0.2,0.3,-0.4,0.7,...,0.0028]

[我希望在每次迭代(或每时每刻t)中求解ode A是数组中的新值。我的意思是:第一次迭代(或t = 0)-A = 0.1第二次迭代(或t = 1)-A = 0.2,依此类推。

如何使用python odeint做到这一点?

python ode odeint
1个回答
0
投票

是的,您可以做到这一点,但不能直接在odeint中使用,因为它没有事件机制,并且您提出的内容需要事件-动作机制。

但是您可以将问题分成多个步骤,在每个步骤odeint中使用现在带有常量A的参数,然后最后加入这些步骤。

T = [[0]]
N = [[n0]]
for k in range(len(A)):
    t = np.linspan(k,k+1,11);
    n = odeint(lambda u,t: A[k]*u, [n0],t)
    n0 = n[-1]
    T.append(t[1:])
    N.append(n[1:])

T = np.concatenate(T)
N = np.concatenate(N)
© www.soinside.com 2019 - 2024. All rights reserved.