ex8.9

from scipy.integrate import odeint
import numpy as np
import pylab as plt

np.random.seed(2)  #为了进行一致性比较,每次运行取相同随机数
sigma=10; rho=28; beta=8/3;
g=lambda f,t: [sigma*(f[1]-f[0]), rho*f[0]-f[1]-f[0]*f[2],
               f[0]*f[1]-beta*f[2]]   #定义微分方程组的右端项
s01=np.random.rand(3)   #初始值
t0=np.linspace(0,50,5000)
s1=odeint(g,s01,t0)   #求数值解
plt.rc('font', family='SimHei')
plt.rc('axes', unicode_minus=False)
ax=plt.subplot(121, projection='3d')
plt.plot(s1[:,0],s1[:,1],s1[:,2],'r')  #画轨线
ax.set_xlabel('$x$'); ax.set_ylabel('$y$'); ax.set_zlabel('$z$')
s02=s01+0.000001
s2 = odeint(g,s02,t0)  #初值变化后,再求数值解
plt.subplot(122)
plt.plot(t0,s1[:,0]-s2[:,0],'.-') #画x(t)的差
plt.xlabel('$t$'); plt.ylabel('$x_1(t)-x_2(t)$',rotation=90)
plt.show()


posted @ 2024-11-12 14:31  等我刷把宗师  阅读(1)  评论(0编辑  收藏  举报