特殊微分方程的数值解——微分代数方程

所谓的微分代数方程(DAE),是指在微分方程中,某些变量间满足某些代数方程的约束。

微分代数方程的一般形式为:

在这里插入图片描述
其中,M(t,x)矩阵的为奇异矩阵。在求解微分方程时,两边不能同时乘以M矩阵的逆矩阵M‘,所以这类方程并不能变成普通的微分方程取求解。

例题1:

假设我们这里有三个微分方程,第一个和第二个是常规形式的微分方程,第三个方程退化成了一个代数方程,所以这类方程又称为微分代数方程。
在这里插入图片描述
给定初值条件,x1(0)=0.8, x2(0)=x3(0)=0.1

用矩阵形式表示该微分代数方程:
在这里插入图片描述

f=@(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=[1,0,0;0,1,0;0,0,0];
options=odeset;options.Mass=M;
x0=[0.8;0.1;0.1];
[t,x]=ode15s(f,[0,20],x0,options);
plot(t,x)

在这里插入图片描述
总结一下求解的解发,和常规微分方程不同的是,我们只需设置一下控制参数里的Mass矩阵,这样就可以求解微分代数方程。

求解微分方程特例:
另外,我们可以通过处理,把这个方程变为一般的微分方程。
第三个方程我们可以把x3写成 x3(t)=1-x1(t)-x2(t) 的形式,然后将结果带入到前两个方程中,这样x3就不出现了,就变成了x1和x2的普通微分方程。
在这里插入图片描述
另外,微分代数方程,我们也可以将其表示为隐式微分方程的形式,利用求解隐式微分方程的方法,求解微分代数方程。

例题2:

在这里插入图片描述
同样,隐式微分方程我们也可以将其变为为微分代数方程的形式来求解。

f=@(t,x)[1-x(1);-x(2)];
M=@(t,x)[sin(x(1)),cos(x(2));
    -cos(x(2)),sin(x(1))];
ff=odeset;ff.Mass=M;ff,RelTol=1e-6;
[t,x]=ode45(f,[0,10],[0;0],ff);
plot(t,x);

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45024585/article/details/107796782
今日推荐