从系列:在MATLAB中求解ode
克里夫硅藻土,MathWorks
ODE4采用了经典的龙格 - 库塔法,这是在过去的100年微分方程使用最广泛的数值方法。它的主要缺点是缺乏误差估计。火焰的增长,一个简单的模型是在这里,并在以后的影片中使用的例子。
这是经典的龙格-库塔法。这是,到目前为止,世界上最受欢迎的数值方法,在超过100年的时间里,在20世纪上半叶手工计算,然后在20世纪下半叶在数字计算机上计算。我怀疑它今天还在使用。
您评估功能四次每一步,先在区间的开始。然后使用该步入区间,中间以获得S2。然后使用S2步入区间中部再次。
再次计算函数值,得到s3。然后使用s3来逐步清除间隔,得到s4。然后取这四个斜率的组合,中间两个的权重更大,最后一步。这是经典的龙格-库塔法。
这是我们的MATLAB实现。我们称它为ODE4,因为它每步运行4次。同样的参数,向量yout。现在我们有四个斜率,开始是s1,中间是s2,中间是s3,右边是s4。s1的1/6,s2的1/3,s3的1/3,s4的1/6是最后一步。这是经典的龙格-库塔法。
卡尔·朗格是一位相当著名的德国数学家和物理学家,他在1895年发表了这种方法以及其他一些方法。他还发表了许多其他的数学论文,并且相当出名。
Martin Kutta在1901年独立发现并发表了这个方法。他在其他方面都不太出名。
我想要一个简单的燃烧模型。因为模型具有一些重要的数值性质。如果你点燃火柴,火球会迅速成长,直到达到临界尺寸。然后,由于球内部燃烧所消耗的氧气量与通过表面所能消耗的氧气量相平衡,所以球的大小保持不变。
这里的无量纲模型。本场比赛是一个球体,y是它的半径。在Y立方项是球体的体积。和Y立方占了内部的燃烧。
球体的表面是平方成正比收率而y平方项占通过表面的可用氧气。关键参数,重要参数,是初始半径,Y0,Y前功尽弃。
在Y0半径启动和增长,直到在y立方和y平方项相互平衡,此时的生长速度为0,半径不会再增长。我们整合了很长一段时间。我们整合在一个时间是反比于初始半径。这是模型。
这里有一个动画。我们开始用小火焰在这里,小球火焰。你看到的将是一个小半径那里。时间和半径在该图的顶部示出。它开始成长。
如果时间到达50,我们是一半。火焰排序爆炸,然后起身半径1,此时两个方面相互平衡。和火焰停止增长。它仍然略有增长这里,虽然你不能看到它在这个这个规模。
让我们为龙格库塔准备一下。微分方程是y素数是y的平方减去y的立方。从零开始,临界初始半径,我取0.01。这意味着我们要整合到两个,而不是从y0到time 200。
我要选择的步长走500步。我只是要挑选有些武断。好了,现在我已经准备好使用ODE4。我会存储在y中的结果。
它上升到1。我要绘制的结果。因此,这里是I的T需要的值。而这里的情节。
现在,你可以看到火焰开始生长。它长得相当慢。然后在时间间隔的一半,它会爆炸并迅速上升,直到它达到半径1,然后停留在这里。
现在,这个过渡期是相当狭窄。而且我们将继续研究这个问题。并且是要为数值方法提供了一个挑战,这个过渡区域。
现在,我们来看看。我们有一个步长h,我们随意取的。我们生成了这些值。我们真的不知道这些数字有多精确。
他们看起来好。但是它们有多精确呢?这是经典龙格-库塔法的关键问题。我们的图上的值有多可靠?
我有四个练习供你考虑。如果微分方程不包含y,那么这个解只是一个积分。而Runge-Kutta方法成为一种经典的数值积分方法。如果你研究过这种方法,那么你应该能够识别这种方法。
数。two--找到Ÿ黄金的精确解等于1加y平方,以0等于零年。然后看到ODE4会发生什么,当你试图解决它在t从0到2的时间间隔。
第三,如果间隔的长度不能完全被步长整除,会发生什么?例如,如果t final为pi,步长为0.1。不要试图解决这个问题。这只是固定步长的危险之一。
最后,练习4——研究初始半径为1/ 1000的火焰问题。什么时候t的半径达到最终值的90% ?