《Python数学建模算法与应用课件》08第8章 常微分方程与差分方程.pptx

《Python数学建模算法与应用课件》08第8章 常微分方程与差分方程.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共190页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;;;;1.指数传播模型;2.SI模型;3.SIS模型;4.SIR模型;;8.3.1常微分方程的符号解;#程序文件ex8_3.py

importsympyassp

?

sp.var(x);y=sp.Function(y)

eq=y(x).diff(x)+2*y(x)-2*x**2-2*x

s=sp.dsolve(eq,ics={y(0):1})

s=sp.simplify(s);print(s)

;#程序文件ex8_4.py

importsympyassp

?

sp.var(x);y=sp.Function(y)

eq=y(x).diff(x,2)-2*y(x).diff(x)+y(x)-sp.exp(x)

con={y(0):1,y(x).diff(x).subs(x,0):-1}

s=sp.dsolve(eq,ics=con);print(s);#程序文件ex8_5.py

importsympyassp

?

sp.var(t);y=sp.Function(y)

u=sp.exp(-t)*sp.cos(t)

eq=y(t).diff(t,4)+10*y(t).diff(t,3)+35*y(t).diff(t,2)+\

50*y(t).diff(t)+24*y(t)-u.diff(t,2)

con={y(0):0,y(t).diff(t).subs(t,0):-1,

y(t).diff(t,2).subs(t,0):1,y(t).diff(t,3).subs(t,0):1}

s=sp.dsolve(eq,ics=con);s=sp.expand(s)

print(s);print(------);print(s.args[1]);#程序文件ex8_6.py

importsympyassp

?

sp.var(t)

sp.var(x1:4,cls=sp.Function)#定义3个符号函数

x=sp.Matrix([x1(t),x2(t),x3(t)])#列向量

A=sp.Matrix([[3,-1,1],[2,0,-1],[1,-1,2]])

eq=x.diff(t)-A@x

s=sp.dsolve(eq,ics={x1(0):1,x2(0):1,x3(0):1})

print(s)

;8.3.2常微分方程的数值解;#程序文件ex8_7.py

fromscipy.integrateimportodeint

importnumpyasnp

importpylabasplt

importsympyassp

?

dy=lambday,x:-2*y+2*x**2+2*x#自变量参数在函数参数最后

xx=np.linspace(0,3,31)

s=odeint(dy,1,xx)

print(x={}\n对应的数值解y={}.format(xx,s.flatten()))

plt.plot(xx,s,*)

sp.var(x);y=sp.Function(y)

eq=y(x).diff(x)+2*y(x)-2*x**2-2*x

s2=sp.dsolve(eq,ics={y(0):1})

sx=sp.lambdify(x,s2.args[1],numpy)#符号函数转匿名函数

plt.plot(xx,sx(xx))

plt.show()

;#程序文件ex8_8.py

fromscipy.integrateimportodeint

importnumpyasnp

importpylabasplt

?

yx=lambday,x:[y[1],np.sqrt(1+y[1]**2)/5/(1-x)]

x0=np.arange(0,1,0.00001)

y0=odeint(yx,[0,0],x0)

plt.rc(font,size=16)

plt.plot(x0,y0[:,0]);plt.show()

;#程序文件ex8_9.py

fromscipy.integrateimportodeint

importnumpyasnp

importpylabasplt

?

np.random.seed(2)#为了进行一致性比较,每次运行取相同随机数

sigma=10;rho=28;beta=8/3;

g=lambdaf,t:[sigma*(f[1]-f[0]),rho*f[0]-f[1]-f[0]*f[2],

f[0]*f[1]-beta*f[2]]#定义微分方程组的

您可能关注的文档

文档评论(0)

gcmguochunming + 关注
实名认证
内容提供者

高级工程师持证人

小小的人

领域认证该用户于2025年07月19日上传了高级工程师

1亿VIP精品文档

相关文档