有没有自动求解刚性和非刚性方程的程序
如标题所示,如果某个常微分方程组在求解过程中有时是刚性的,有时是非刚性的,也就是要求求解微分方程组的数值方法能够根据方程组的“刚”性自动判别所的数值方法并且可以自动切换,以适应求解要求。我收集到的一个程序 LSODA.F 即满足这个要求,只可惜是fortran的,我在想有没有简单的matlab程序可供借用,后附 lsoda.f 程序,仅供参考!(将lsoda.f.doc改为lsoda.f 即可) :funk: 不会……我都是用matlab编程实现的。 可以用matlab来调用fortran呀,混合编程可以实现的。回复 板凳 zhoulon 的帖子
matlab是可以调用fortran来运算,关键是fortran的这个求解程序及算法相当长,里面还涉及不少未找到的子程序,且暂时没有时间仔细阅读,如果不通读的话就不可能正确调用,话又说回来,如果会正确调用,当然可以将其修改成matlab程序,何必麻烦互相调用,有那个必要吗?matlab提供了求解一般方程的 ode45 和刚性方程的 ode15s,实际上只要能实时的判断方程“刚性”与否,再选择不同的求解方程求解即可,编这么个小程序没什么困难。难的地方是:如我前面所述,常微分方程组在求解过程中有时是刚性的,有时是非刚性的,那么如何判断此时方程是否是“刚”性的,请大家详细说明一下判别方法的相关理论或文献都可。
这个“有时”是指什么?定义域或是参数?
回复 5楼 logxing 的帖子
这里的有时应该是不同的方程 我也碰到了这种情况,是在求反问题中,由于要用海量不同的参数回代解原来的方程组,所以方程组有可能会在刚性与非刚性之间转换,不知道有什么方法可以解决,对方程组解的江都要求很高,MATLAB里面的ODE45和ODE15S函数都达不到精度 江都-----精度
页:
[1]