微分代数方程.docx

微分代数方程.docx

ID:35973462

大小:20.37 KB

页数:4页

时间:2019-04-29

微分代数方程.docx_第1页
微分代数方程.docx_第2页
微分代数方程.docx_第3页
微分代数方程.docx_第4页
资源描述:

《微分代数方程.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、微分代数方程(DAE)的Matlab解法所谓微分代数方程,是指在微分方程中,某些变量满足某些代数方程的约束。假设微分方程的更一般形式可以写成1.gif(1.08KB)2009-1-1010:05前面所介绍的ODEs数值解法主要针对能够转换为一阶常微分方程组的类型,故DAE就无法使用前面介绍的常微分方程解法直接求解,必须借助DAE的特殊解法。其实对于我们使用Matlab求解DAE时,却没有太大的改变只需增加一个Mass参数即可。描述f(t,x)的方法和普通微分方程完全一致。注意:ode15i没法设置Mass属性,换句话说除了ode15i外其他ode计算

2、器都可以求解DAEs问题1.当M(t,y)非奇异的时候,我们可以将微分方程等效的转换为y'=inv(M)*f(t,y),此时就是一个普通的ODE(当然我们可以将它当成DAEs处理),对任意一个给定的初值条件都有唯一的解2.当m(t,y)奇异时,我们叫它为DAEs(微分代数方程),DAEs问题只有在同时提供状态变量初值y0和状态变量一阶导数初值py0,且满足M(t0,y0)*yp0=f(t0,y0)时才有唯一解,假如不满足上面的方程,DAEs解算器会将提供的y0和py0作为猜测初始值,并重新计算与提供初值最近的封闭初值3.质量矩阵可是一个常数矩阵(稀疏

3、矩阵),也可以是一个自定义函数的输出。但是ode23s只能求解Mass是常数的DAEs4.对于Mass奇异的DAEs问题,特别是设置MassSingular为yes时,只能ode15s和ode23t解算器5.对于DAE我们还有几个参数需要介绍a.Mass:质量矩阵,不说了,这个是DAE的关键,后面看例子就明白了b.MStateDependence:质量矩阵M(t,y)是否是y的函数,可以选择none

4、{weak}

5、strong,none表示M与y无关,weak和strong都表示与y相关c.MvPattern:注意这个必须是稀疏矩阵,S(i,j)=1

6、表示M(t,y)的第i行中任意元素都与第j个状态变量yi有关,否则为0d.MassSingular:设置Mass矩阵是否奇异,当设置为yes时,只能使用ode15s和ode23te.InitialSlope:状态变量的一阶导数初值yp0,和y0具有相同的size,当使用ode15s和ode23t时,该属性默认为0下面我们以实例说明,看下面的例子,求解该方程的数值解2.gif(3.61KB)2009-1-1010:05【解】真是万幸,选取状态变量和求状态变量的一阶导数等,微分方程转换工作,题目已经帮我们完成。可是细心的网友会发现,最后一个方程不是微分方

7、程而是一个代数方程(这就是为什叫DAE的原因),其实我们可以将它视为对三个状态变量的约束。(1)用矩阵形式表示出该DAEs3.gif(4.14KB)2009-1-1010:08(2)编写Matlab代码复制内容到剪贴板代码:odefun=@(t,x)[-0.2*x(1)+x(2)*x(3)+0.3*x(1)*x(2);      2*x(1)*x(2)-5*x(2)*x(3)-2*x(2)*x(2);      x(1)+x(2)+x(3)-1];%微分方程组  M=[100;010;000];%质量矩阵  options=odeset('mass'

8、,M);%对以DAE问题,mass属性必须设置  x0=[0.8;0.1;0.1];%初值  [t,x]=ode15s(odefun,[020],x0,options);%这里好像不能使用ode45  figure('numbertitle','off','name','DAEdemo—byMatlabsky')  plot(t,x)legend('x1(t)','x2(t)','x3(t)')p1.jpg(26.64KB)2009-1-1010:05在介绍隐式ODEs时,我们说了ode15i也可以求解DAEs,原理就是将约束看成一个隐式,好,下面我

9、们看看,验证下所说的:复制内容到剪贴板代码:odefun=@(t,x,dx)[dx(1)+0.2*x(1)-x(2)*x(3)-0.3*x(1)*x(2);      dx(2)-2*x(1)*x(2)+5*x(2)*x(3)+2*x(2)^2;      x(1)+x(2)+x(3)-1];%状态变量初值,题目中给出x0=[0.8;0.1;0.1];%该初值全部给定,按理说应该全部为1,但是记住方程中有一个约束,故其实只有两个独立初值x0_fix=[1;0;1];%随意一个改为0都可以,比如[0;1;1]或者[1;1;0]%状态变量一阶微分初值,题

10、目没有给出,可以任意写dx0=[1;1;1];%该初值一个都没有给出,故全部为0dx0_fix=[0;0;0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。