SIRK45格式实现问题:Lotka-Volterra测试隐式部分信息丢失
半隐式四阶龙格-库塔格式(SIRK45)实现问题排查求助
背景与问题
我正在开发二维可压缩欧拉方程数值模型,需要实现**半隐式四阶龙格-库塔格式(SIRK45)**来求解 $\frac{du}{dt} = f(u) + g(u)$ 形式的方程——其中$g$是刚性项,$f$是非刚性项。
参考指定文献完成实现后,我用Lotka-Volterra系统做测试案例,将自己实现的SIRK45与scipy.integrate.solve_ivp提供的RK45、Radau格式做对比测试(测试时会将其中一个函数设为零函数,单独验证显式/隐式部分)。
测试结果显示:当时间步长足够小时,显式部分的表现符合预期,但相同步长下,隐式部分会随着时间推进逐渐丢失信息,结果偏离正确值。
实现细节
我在处理时将$f(y + h*sum)$视为常数,通过scipy.optimize.root迭代求解如下形式的方程:
x - cst1 - g(y + dt*sum + dt*cst2*x) = 0
目前怀疑是隐式部分的处理逻辑存在问题,但无法准确定位错误点。
代码附件
SIRK45实现代码
# 请在此处粘贴你的SIRK45实现代码
测试代码
# 请在此处粘贴你的测试代码
内容的提问来源于stack exchange,提问作者Slyphlamen
相关产品推荐
相关产品推荐

