gpt4 book ai didi

python - Scipy、odeint 以及 odeint 输入函数的输入设置

转载 作者:行者123 更新时间:2023-12-01 02:27:25 24 4
gpt4 key购买 nike

我正在通过 odeint 集成生化常微分方程(见下图),但是主输入函数似乎在调用时用奇怪的数字重新设置(或替换)输入参数。尽管参数“iu”(v 的感应率,应在整个过程中保持恒定)和“v”(结果之一,应在整个 odeint 中更改)分别设置为 100 和 0,如果在整个函数中打印,输出似乎是:

'0.000999900009999 100 0 0 10 9 2 2 3'

虽然它应该看起来更像这样:

'0 0 0 100 10 9 2 2 3'

我不确定错误是在我的初始函数中,还是在我的 odeint 实现中:第一次做这种事情,但是我发现很奇怪 switch_a 函数只是忽略预设输入:关于如何执行的任何想法解决这个问题/可能出了什么问题?我已经尝试从内部手动播种该函数,但是由于至少其中一个输入 (v) 在 odeint 过程中应该发生变化,因此这是行不通的。

initial = np.array([0,0])#sets initial
#parameters
iv = 0
iu= 100
u = 0
v = 0
au = 10
av = 9
b=2
n=2
k=3


def switch_a(initial, timepool, u, v, iv, iu , au , av ,b , n , k ):
zu = (1+iv/k)**n #to simplify equation
zv = (1+ iu/k)**n
u = -u + (au/(1+((v/zu)**b)))
print (u, v, iv, iu, au, av, b, n, k)
v = -v + (av/(1+((u/zv)**b)))
res = np.array([u, v])
return res

args = (iv, iu, u, v, au, av, b, n, k)
timepool = np.linspace (1, 50, 50)
solution1a = sp.odeint (switch_a, initial, timepool,args)

Function

最佳答案

鉴于 u 和 v 是该方程系统中的动态变量,它们应该进入 switch_a 函数的第一个参数,而不是后面的参数。我认为这可能更接近您想要做的事情:

def switch_a(variables, timepool, iv, iu , au , av ,b , n , k ):
u, v = variables
zu = (1+iv/k)**n #to simplify equation
zv = (1+ iu/k)**n
u2 = -u + (au/(1+((v/zu)**b)))
print (u, v, iv, iu, au, av, b, n, k)
v2 = -v + (av/(1+((u/zv)**b)))
res = np.array([u2, v2])
return res

args = (iv, iu, au, av, b, n, k)
timepool = np.linspace (1, 50, 50)
solution1a = sp.odeint (switch_a, initial, timepool, args)

关于python - Scipy、odeint 以及 odeint 输入函数的输入设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47238752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com