龙格库塔求系统响应是不是方程系数不能太大
最近用龙格库塔法解微分方程,我的右端的方程系数很大,10的10次方左右,当步长取0.01时就求解不下去,这是不是因为系数太大,造成系统刚性,请大家指点,谢谢! 你用什么软件解得?matlab?看看给出的提示先 关键是看你的方程的性质了,我做过非线性的常微分一个方程组,在某些特定的域内是有解的,但是一旦出了这个域,就不能做了。 matlab和vc都用了,我解的是一个五自由度的齿轮和轴耦合的纯扭转的微分方程,微分方程是线型,而且不计阻尼,步长h取0.01得到的结果全是溢出的解,
龙格库塔程序的精度有什么用?我学数值分析时做题就根本没用到精度,
直接把初值代进去算就是了,请指教! 刚性方程用龙格库塔求解很难的到正确的结果,一般有两种处理办法
可以增加一个小阻尼或者采用多步法求解 如果微分方程是线型的为什么不用Newmark或者Wilson-theta方法解?RK方法很精确不过对于多自由度问题计算量太大。一般自由度数较少的非线性问题用RK比较好。
RK右端的系数大小好像对解没有太大影响,但是RK方法有个稳定性问题,步长一般要小于系统最小固有周期的1/2.5。 我觉得齿轮的刚度非常大,质量比较小。用一般的运动微分方程分析可能会有点问题。 5楼的兄弟说的对,应该考虑刚性问题,你的方程可能是刚性的。这时你的解里既有变化很快的成分,也有变化很慢的成分。RK方法有困难。
参看论文
Stability of generalized Runge–Kutta methods for stiff kinetics coupled differential equations
A E Aboanber
JOURNAL OF PHYSICS A: MATHEMATICAL AND GENERAL
J. Phys. A: Math. Gen. 39 (2006) 1859–1876 最好是把方程,量纲一化,我原来也遇到过这种问题! 可以用matlab中的专门用来求解刚性方程的函数试试,比如ode23s,我这里有一些求解实例,可以给你看看 谢谢楼上的兄弟,我在用vc解,后面我还要求非线性振动,所以不用matlab了 由于龙格库塔不能衰减方程的告介分量,所以当方程自由度加大时,使得时间步长只能取得非常小,因此其是条件稳定的,如果自由度不大,其时间步长小于临界步长能得到一定精度数值解。自由度大时存在必须取小步长和计算舍入误差的矛盾,但可解偶分求之。
页:
[1]