设为首页 加入收藏

TOP

13.5.1 自变量终止条件
2013-10-07 00:52:52 来源: 作者: 【 】 浏览:74
Tags:13.5.1 变量 终止 条件

13.5  定步长积分循环的终止

数学计算中最常见的一类计算是微分方程的数值计算,而这类计算通常是一个积分循环。例如,一个以时间为自变量的微分方程的积分形式如下:

  1. while( 积分循环条件 )  
  2. {  
  3.     X(t) => X( t+h )    // 单步积分,  
  4.     例如二阶Runge-Kutta积分  
  5.     t += h;  

当这个循环结束时就可以得到结果。当然,实际使用的形式有多种,例如还可以使用:

  1. while( 1 )  
  2. {  
  3.     X(t) => X( t+h )    // 单步积分  
  4.     if( 积分终止条件 )  
  5.         break;  
  6.     t += h;  

不过,它们在逻辑上是一致的,可以通过变形相互转化。

这类定步长积分终止条件一般有两类:一类就是自变量自身,例如某一方程要求从时间t0积分到t1,此处的t1就是积分终止条件;一类是约束条件,例如弹道导弹积分一般以落地为终止条件。

13.5.1  自变量终止条件

要满足这类终止条件,往往需要在最后一步做些修正。曾有一个程序员给出下列终止条件:

  1. if( t >= tEnd )  
  2.     break

当积分终止时t>=tEnd,而正确的计算要求t=tEnd,显然上述积分终止条件会导致积分误差t-tEnd,最大可能接近一个积分步长。在弹道计算的主动段,积分步长可能是0.1s,如果加速度是10m/s2,这意味着速度偏差1m/s。如果随后导弹飞行10min,那么将造成约600m的偏差,远远超过了一般战术弹道导弹的命中精度指标。

为了避免这种错误,需要在积分的最后一步作些特殊处理。修改终止条件:

  1. while( t <= tEnd - h )  
  2. {  
  3.     X(t) => X( t+h )    // 单步积分  
  4.     t += h;  

上述积分循环在t接近tEnd时终止,终止时tEnd-t

  1. h = tEnd - t;  
  2. X(t) => X( t+h )        // 单步积分  
  3. t += h; 
【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.2.6 计算绝对值的宏 下一篇13.4.3 通过附加因子避免极值

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: