从系列:用MATLAB求解ode
克里夫硅藻土,MathWorks
ODE4实现了经典的龙格-库塔方法,这是过去100年来最广泛使用的ode数值方法。它的主要缺点是缺乏误差估计。火焰生长的一个简单模型是一个例子,在这里和以后的视频中使用。
这是经典的龙格-库塔方法。这是,到目前为止,世界上最受欢迎的数值计算方法在超过100年的时间里,在20世纪上半叶手工计算,然后在20世纪下半叶在数字计算机上计算。我怀疑它今天还在使用。
每步对函数求4次值,首先在区间的开始。然后用它来步进到区间中间,得到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的平方。y²项表示通过表面的氧。关键参数,重要参数,是初始半径y0 y0。
半径从y0开始增长,直到y³和y²项相互平衡,此时增长率为0。半径不再增长。我们做了很长时间的积分。我们对一段与初始半径成反比的时间进行积分。这就是模型。
这是一个动画。我们从一个小的火焰开始,一个小的球形火焰。你只会看到一个小半径。时间和半径显示在图的顶部。它开始生长。
当时间到达50时,我们已经完成一半了。火焰爆炸了,然后半径增加了1,此时两项相互平衡。火焰停止生长。这里还在稍微增长,虽然在这个尺度上看不出来。
让我们为龙格-库塔建立这个。微分方程是y ' = y²- y³。从0开始,临界初始半径,取0。01。这意味着我们要积分到2 / y0到时间200。
我要选择步长来走500步。我随便选一个。现在可以使用ODE4了。我把结果存储在y中。
一直到1。我要把结果画出来。这是我需要的t的值。这是我们的图。
现在,你可以看到火焰开始生长。它长得相当慢。然后在时间间隔的一半,它爆炸了,并迅速上升,直到半径达到1,然后留在这里。
这个过渡时期相当狭窄。我们将继续研究这个问题。这个过渡区域将会给数值方法带来挑战。
现在,我们来看看。我们有一个步长h,我们随意取的。我们生成了这些值。我们真的不知道这些数字有多精确。
他们看起来好。但是它们有多准确呢?这是经典龙格-库塔方法的关键问题。图上的值有多可靠?
我有四个练习供你参考。如果微分方程不包含y,那么这个解就是一个积分。龙格-库塔法成为数值积分的经典方法。如果您学习过这种方法,那么您应该能够识别这种方法。
号码。求出y ' = 1 + y²的精确解,其中y(0) = 0。然后看看ODE4会发生什么,当你试着在t从0到2的区间内解它的时候。
第三个问题,如果区间的长度不能被步长整除会发生什么?例如,如果t final是pi,步长是0.1。不要试图解决这个问题。这只是固定步长带来的危害之一。
最后,练习四,研究初始半径为1/ 1000的火焰问题。对于什么值的t,半径达到最终值的90% ?
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站表现。其他MathWorks国家站点不适合来自您所在位置的访问。