tft每日頭條

 > 生活

 > matlab中微分方程的數值解

matlab中微分方程的數值解

生活 更新时间:2024-09-10 07:26:51

若解函數并不是平滑的,則在求解的時候漸變處會有很多數值求解點,這會導緻MATLAB中的ode45方法求解時間增長,這就是剛性問題,需在漸變處減少求解點,以加快求解速度。

使用ode45和ode15s計算,對比求解時間即可判斷是否為剛性問題,s代表自适應變步長求解。

% syms y(x) %數值解,不用符号變量

y0=[2,0];%y和diff(y)的初始值

tspan=[0,500];%積分區間

opts=odeset('RelTol',1e-2,'AbsTol',1e-4);

tic

[x,y]=ode45(@ode7,tspan,y0,opts)%y為兩列,表示位置和速度,計算時間2.72

toc

tic

sol=ode15s(@ode7,tspan,y0,opts)%增加收斂性,計算時間0.0214

toc

tic

sol=ode23s(@ode7,tspan,y0,opts)%增加收斂性,計算時間0.0214

toc

tic

sol=ode23t(@ode7,tspan,y0,opts)%增加收斂性,計算時間0.0214

toc

tic

sol=ode23tb(@ode7,tspan,y0,opts)%增加收斂性,計算時間0.0214

toc

%剛性求解器 ode23s,ode23t,ode23tb

function dy=ode7(x,y)

dy=zeros(2,1);

dy(1)=y(2);

dy(2)=1000*(1-y(1)^2)*y(2)-2*y(1);

end

%不能求解符号解,添加屬性'implicit',true,隐式解析解

%若隐式求解仍不能,則使用數值解法

matlab中微分方程的數值解(MATLAB微分方程數值解法的剛性問題)1

求解時間輸出結果

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved