matlab求微分方程精确解,matlab求微分方程精确解及近似解.ppt

matlab求微分方程精确解及近似解.ppt

3ce72ba4d15dddf235f9dd58016e0de7.gif

还剩

24页未读,

继续阅读

下载文档到电脑,马上远离加班熬夜!

亲,喜欢就下载吧,价低环保!

内容要点:

求微分方程的解q 自牛顿发明微积分以来,微分方程在描述事物运动规律上已发挥了重要的作用。实际应用问题通过数学建模所得到的方程,绝大多数是微分方程。q 由于实际应用的需要,人们必须求解微分方程。然而能够求得解析解的微分方程十分有限,绝大多数微分方程需要利用数值方法来近似求解。q 本实验主要探讨如何用 Matlab 来计算微分方程(组)的数值解,并重点介绍一个求解微分方程的基本数值解法-- Euler折线法 。问题背景和实验目的q 考虑一维经典 初值问题u 基本思想: 用差商代替微商根据 Talyor 公式, y(x) 在点 xk 处有Euler 折线法初值问题的 Euler折线法q 具体步骤:等距剖分:步长:u 分割求解区间u 差商代替微商得方程组:分割求解区间,差商代替微商,解代数方程为分割点k = 0, 1, 2, ..., n-1yk 是 y (xk) 的近似Euler 折线法举例例: 用 Euler 法解初值问题取步长 h = (2 - 0)/n = 2/n, 得差分方程当 h=0.4, 即 n=5 时, Matlab 源程序见 fulu1.m解:Euler 折线法源程序clearf=sym(''y+2*x/y^2'');a=0; b=2;h=0.4;n=(b-a)/h+1; % n=(b-a)/h;x=0; y=1;szj=[x,y];for i=1:n-1 % i=1:ny=y+h*subs(f,{''x'',''y''},{x,y});x=x+h;szj=[szj;x,y];endszjplot(szj(:,1),szj(:,2),''or-'') Euler折线法举例(续)解析解:解析解近似解Runge-Kutta 方法q 为了减小误差,可采用以下方法:u 让步长 h 取得更小一些;u 改用具有较高精度的数值方法:q 龙格 -库塔方法Runge-Kutta (龙格 -库塔 ) 方法u 是 一类 求解常微分方程的数值方法u 有多种不同的迭代格式Runge-Kutta 方法q 用得较多的是 四阶 R-K方法 (教材第 92 页)其中四阶 R-K 方法 源程序clear;f=sym(''y+2*x/y^2'');a=0; b=2; h=0.4;n=(b-a)/h+1; % n=(b-a)/h;x=0; y=1; szj=[x,y];for i=1:n-1 % i=1:nl1=subs(f,{''x'',''y''},{x,y});l2=subs(f,{''x'',''y''},{x+h/2,y+l1*h/2});l3=subs(f,{''x'',''y''},{x+h/2,y+l2*h/2});l4=subs(f,{''x'',''y''},{x+h,y+l3*h});y=y+h*(l1+2*l2+2*l3+l4)/6; x=x+h;szj=[szj;x,y];endplot(szj(:,1),szj(:,2), ''dg-'')Runge-Kutta 方法Euler 法与 R-K法误差比较Matlab 解初值问题q 用 Maltab自带函数 解初值问题u 求解析解: dsolveu 求数值解: ode45、 ode23、ode113、 ode23t、 ode15s、ode23s、 ode23tbdsolve 求解析解q dsolve 的使用y=dsolve(''eq1'',''eq2'', ... ,''cond1'',''cond2'', ... ,''v'')其中 y 为输出, eq1、 eq2、 ...为微分方程, cond1、 cond2、...为初值条件,

发表评论

暂无评论,赶快抢占沙发吧。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值