刚性微分方程与非刚性的大概区分(自看,求指点)

Posted yanmingjiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刚性微分方程与非刚性的大概区分(自看,求指点)相关的知识,希望对你有一定的参考价值。

(这里的内容是作为自己的一个粗略的总结,不确定是否正确,希望有大佬能够更明确的指出其中的错误,作出指导)

对于刚性和非刚性微分方程的区分,可以简单的转变为在将原方程转换为常微分方程组后,进行一个简单的系数判断:

例如:

y‘‘‘ - 3y‘‘ - y‘y = 0, y(0) = 0, y‘(0) = 0, y‘‘(0) = -1;

在这里可以设  y1 = y, y2 = y‘, y3 = y‘‘, 有

  y1‘ = y2,       y1(0) = 0,

  y2‘ = y3,       y2(0) = 1,

  y3‘ = 3y3 + y2y1,   y3(0) = -1,

这里可以简单判断出方程组的右侧系数矩阵值差异不大,得到的特征值差异随之也不大,可以简单判断为非刚性微分方程

MATLAB中解非刚性微分方程常用 ode45 ;

 

又例如:

  y‘‘ - 1000(1 - y^2)y‘ + y = 0, y(0) = 2, y‘(0) = 0;

在这里可以设y1 = y, y2 = y‘, 有

  y1‘ = y2,           y1(0) = 2,

  y2‘ = 1000(1 - y1^2)y2 - y1,  y2(0) = 0,

这里可以简单判断出方程组的右侧系数矩阵值差异较大,得到的特征值差异随之较大,可以简单判断为刚性微分方程

MATLAB中解刚性微分方程常用 ode15s , ode23s , ode23t , ode23tb ;

 

对于所有的初值问题解方程方法均有 solver(  ‘f( t, y )‘ , [t0 tend], y0 ) :

  --solver : 指代所有的方法调用;

  --f( t, y ) : 为M文件定义的微分方程 y‘ = f(x, y) 右端的函数, 即使用不到两个参数,也要保留两个参数,且返回的结果应是列向量;

  --[t0 tend] : 为参数中变量 x / t 的取值范围;

  --y0 : 为参数中 y 的初始值,要求为列向量

以上是关于刚性微分方程与非刚性的大概区分(自看,求指点)的主要内容,如果未能解决你的问题,请参考以下文章

Matlab求解刚性晶体管微分代数方程

Matlab求解刚性 ODE

刚性方程 Stiff equation

MATLAB求解器

MATLAB求解器

数学建模暑期集训5:matlab求解常微分方程/偏微分方程