- 1、本文档共90页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MATLAB在数值分析中的应用讲述
MATLAB软件实现 解析解 dsolve(eqn1,eqn2, …, c1 ,…, var1 ,…) 微分方程组 初值条件 变量组 注意:① y Dy,y D2y ② 自变量名可以省略,默认变量名‘t’。 例① 输入:y=dsolve (Dy=1+y^2) y1=dsolve(Dy=1+y^2,y(0)=1,x) 输出:y= tan(t-C1) (通解,一簇曲线) y1= tan(x+1/4*pi)(特解,一条曲线) 例② 常系数的二阶微分方程 y=dsolve(D2y-2*Dy-3*y=0,x) y=dsolve(D2y-2*Dy-3*y=0,y(0)=1,Dy(0)=0,x) 输入 : x=dsolve(D2x-(1-x^2)*Dx+x=0, x(0)=3,Dx(0)=0) 上述两例的计算结果怎样?由此得出什么结论? 例③ 非常系数的二阶微分方程 例③无解析表达式! x=dsolve((Dx)^2+x^2=1,x(0)=0) 例④ 非线性微分方程 x = [ sin(t)] [ -sin(t)] 若欲求解的某个数值解,如何求解? t=pi/2; eval(x) 输入: [x,y]=dsolve(Dx=3*x+4*y,Dy=-4*x+3*y) [x,y]=dsolve(Dx=3*x+4*y,Dy=-4*x+3*y, x(0)=0,y(0)=1) 例④ 输出: ( li3.m) 数值解 1、欧拉法 2、龙格—库塔法 数值求解思想:(变量离散化) 研究常微分方程的数值解法是十分必要的。 [t,x]=solver(’f’,ts,x0,options) ode23 ode45 ode113ode15sode23s 由待解方程写成的m-函数文件 ts=[t0,tf],t0、tf为自变量的初值和终值 函数的初值 ode23:组合的2/3阶龙格-库塔算法 ode45:运用组合的4/5阶龙格-库塔算法 自变量值 函数值 用于设定误差限(缺省时设定相对误差10-3, 绝对误差10-6), 命令为:options=odeset(’reltol’,rt,’abstol’,at), rt,at:分别为设定的相对误差和绝对误差. Matlab软件计算数值解 f=@(x,y) -y+x+1; [x,y]=ode23(f, [0, 1], 1) plot(x,y,r); hold on ezplot(x+exp(-x) ,[0, 1]) %精确解 例1 y’= - y+x+1,y(0) = 1 标准形式: y’= f(x , y) 1、在解n个未知函数的方程组时,x0和x均为n维向量,m-函数文件中的待解方程组应以x的分量形式写成. 2、使用Matlab软件求数值解时,高阶微分方程必须等价地变换成一阶微分方程组. 注意: 注意1: 1、建立M文件函数 function xdot = fun(t,x,y) xdot = [f1(t, x(t), y(t)); f2(t, x(t), y(t))]; 2、数值计算(执行以下命令) [t,x,y]=ode23(‘fun,[t0,tf],[x0,y0]) 注意:执行命令不能写在M函数文件中。 xd(1)=f1(t, x(t), y(t)); xd(2)=f2(t, x(t), y(t)); xdot=xd’; % 列向量 例如: 令 注意2: function xdot = fun1(t,x,y) (fun1.m) xdot = [f(t, x(t), y(t));x(t)]; [t,x,y]= ode23(‘fun1,[t0,tf],[x0,y0]) M-文件函数如何写呢? 注意:y(t)是原方程的解。 x(t)只是中间变量。 如果方程形式是:z’’’ = f(t, z, z’’ )? 例2 Van der pol 方程: 令 y1=x (t), y2 = x’(t); 该方程是否有解析解? 编写程序如下: f=@(t,y) [y(2);(1-y(1)^2)*y(2)-y(1)]; [t,y]=ode23(f,[0,20],[3,0]); y1=y(:,1); % 原方程的解 y2=y(:,2); plot(t,y1,t,y2,--) %y1(t),y2(t) 曲线图 pause, plot(y1,y2), % 相
文档评论(0)