我试图在python中使用西皮·奥德林功能。在
目前,我能够实现这种形式的等式
在python中使用以下脚本:
def dY(y1, x):
a = 0.001
yin = 1
C = 0.01
N = 1
dC = C/N
b1 = 0
return (a/dC)*(yin-y1)+b1*dC
x = np.linspace(0,20,1000)
y0 = 0
res = odeint(dY, y0, x)
plt.plot(t,res, '-')
plt.show()
我对第一个等式的问题是“我”。我不知道如何积分方程,仍然能够提供当前和以前的‘y’(yi-1和yi)值我只是一个在0到100范围内的序列号。在
编辑1:
我用y,x,a,b和C重写的
编辑2: 我编辑了Pierre de Buyl的代码并更改了N值。幸运的是,我有一个验证表来验证结果。不幸的是,结果并不相同。在
这是我的验证表:
下面是numpy的输出:
使用代码:
^{pr2}$如您所见,值的偏移量为0.02。。在
我是不是漏了点东西导致了这个偏移?在
这个方程是一个“耦合”的常微分方程(见Wikipedia上的“ODEs系统”)。在
变量是一个包含
y[0]
、y[1]
等的向量。要求解ODE,必须输入一个向量作为初始条件,dY
函数也必须返回一个向量。在我修改了您的代码以实现此结果:
我已经将
y[i-1] - y[i]
部分编写为NumPy向量操作,并对坐标y[0]
进行了特殊大小写(这是表示法中的y1,但在Python中数组从0开始)。在对所有yi使用初始值0的解决方案是
^{pr2}$相关问题 更多 >
编程相关推荐