matlab中ode15s函数的用法,求解刚性微分方程和 DAE - 变阶方法

本示例通过ode15s、ode23s、ode23t和ode23tb求解器解刚性测试方程y′=-λy,探讨了不同求解器在处理刚性问题时的效率。使用λ=1e9,初始条件y(0)=1,时间区间[0 0.5]。结果显示,ode23s在步长和运行时间上表现出最佳性能,且指定常量Jacobian有助于提高解题效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ode15s 求解器是适用于大多数刚性问题的首选求解器。但是,对于特定类型的问题,其他刚性求解器可能更高效。本示例使用所有四个刚性 ODE 求解器解算刚性测试方程。

请考虑以下测试方程:

y′=-λy.

随着 λ 的量级增加,方程的刚性逐渐增强。使用 λ=1×109、初始条件 y(0)=1 和时间区间 [0 0.5]。这些值使该问题足够刚性,从而使 ode45 和 ode23 需要对该方程进行积分。此外,还使用 odeset 传入常量 Jacobian J=∂f∂y=-λ 并打开求解器统计信息的显示。

lambda = 1e9;

y0 = 1;

tspan = [0 0.5];

opts = odeset('Jacobian',-lambda,'Stats','on');

使用 ode15s、ode23s、ode23t 和 ode23tb 对方程求解。生成子图进行比较。

subplot(2,2,1)

tic, ode15s(@(t,y) -lambda*y, tspan, y0, opts), toc

104 successful steps

1 failed attempts

212 function evaluations

0 partial derivatives

21 LU decompositions

210 solutions of linear systems

Elapsed time is 2.504340 seconds.

title('ode15s')

subplot(2,2,2)

tic, ode2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值