如何提取常微分方程的多重解

时间:2019-06-09 16:19:18

标签: python-3.x odeint

我想绘制一个函数,当一个常微分方程不断变化时,它会改变。

我尝试了以下代码,以使函数F随机变化,并且当函数F发生变化时,曲线的初始条件取自最后一个解,因此曲线自身可以适应新的微分方程。

import numpy
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import random as rd
def F(Y,t):
    Y0,Y1,Y2,Y3=Y
    return numpy.array([f(Y0,Y1,Y2,Y3,r0),g(Y0,Y1,Y2,Y3,r1),u(Y0,Y1,Y2,Y3,r2),v((Y0,Y1,Y2,Y3,r3))]

N=50
for i in range(N):
     r0=rd.random()
     r1=rd.random()
     r2=rd.random()
     r3=rd.random()
     T=np.linspace(i,i+1,500)
     if i==0:
         s=odeint(F,np.array([1,1,0,0]),T)
         y0,y1,y2,y3=s[:,0],s[:,1],s[:,2],s[:,3]
         plt.plot(y0,y1)
     else:
         i0,i1,i2,i3=y0[499],y1[499],y2[499],y3[499]
         s=odeint(F,np.array([i0,i1,i2,i3]),T)
         y0,y1,y2,y3=s[:,0],s[:,1],s[:,2],s[:,3]
         plt.plot(y0,y1)
plt.show()

该程序可以工作,但是它只能给我相同的解决方案,而应该改变。每当我执行脚本时,它都会给我确切的数字。此外,我没有“物理上”正确的解决方案,但这不是问题,我希望每次执行程序时首先拥有不同的身材。我想我犯了错​​误,但是我看不到哪里。 希望您能帮助我发现我误解的地方。

0 个答案:

没有答案