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

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

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

例如:

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 的初始值,要求为列向量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值