f**l 发帖数: 2041 | 1 For stiff problem, I suggest you try DASSL. According to a recent
review, it is the most efficient implicit solver. If your problem
is large scale, you might want to use DASPK, which uses Krylov method
to solve linear systems. But I heard that the preconditioner could
be a hard problem when using DASPK.
For nonstiff problem, Adams method is good enough. There are many
software using that. I guess Shampine's software should be good, since
she wrote all the ode solvers for matlab. |
|
f**l 发帖数: 2041 | 2 为什么要关注这个定义呢? 关于stiff的定义可以有很多种. 但关键还是在于
数值稳定性的考虑. 你所说的都是把方程线性化之后的分析. 这些分析只是为了
给人一个直觉的基础罢了. 数学要是只关心定义, 就失去其应用的一面了.
对你的问题, 你直接用ode15s就是了. 一般用matlab来解的都不会太复杂.
ode15s是建立在BDF公式上的变阶变步长算法, 由C. W. Gear早先提出的.
如果问题比较大, 建议使用CVODE, LSODE, DASSL, DASPK等成熟的软件. 严肃的
计算一般是不用matlab搞的.
消除stiffness取决于问题. 如果你知道是什么部分导致一些变量很快地进入
动态平衡, 把这部分用代数的方法取代, 就是了. 这个具体到问题可能很复杂.
the
some |
|
f**l 发帖数: 2041 | 3 那样就是matlab本身的问题了. Matlab因为是解释执行, 总是会慢
很多的. 尤其如果你有很多循环, 以及向量不预先分配空间的话.
dassl现在已经升级为daspk了, 增加的主要是sensitivity analysis
和krylov solver, 其他的倒是差不多. |
|