华剑缘
一切都在这个过程中获得,将那些目标埋藏于心中
posts - 19,comments - 20,trackbacks - 0

试验

目的: 用递推近似计算定积分

内容:   n = 0,1,2,…,20  计算定积分

        = 

 

代码:

算法一:

#include < stdio.h >

#include
< math.h >

main()

{

   
int  n;

   
double  y[ 21 ];

y[
0 ] = log( 6 ) - log( 5 );

for (n = 1 ;n <= 20 ;n ++ )

 y[n]
= ( 1.0 / n) - 5 * y[n - 1 ];

printf(
" Data is:\n " );

      
for (n = 1 ;n <= 20 ;n ++ )

      
{

      printf(
" y[ "" %d "" ]:   " ,n);

      printf(
" %f " ,y[n]);

      printf(
" \n " );

      printf(
" \n " );

    }


}

Data is:

y[1]:  0.088392

y[2]:  0.058039

y[3]:  0.043139

y[4]:  0.034306

y[5]:  0.028468

y[6]:  0.024325

y[7]:  0.021233

y[8]:  0.018837

y[9]:  0.016926

y[10]:  0.015368

y[11]:  0.014071

y[12]:  0.012977

y[13]:  0.012040

y[14]:  0.011229

y[15]:  0.010522

y[16]:  0.009890

y[17]:  0.009372

y[18]:  0.008696

y[19]:  0.009151

y[20]:  0.004243

算法二:

#include < stdio.h >

#include
< math.h >

main()

{

   
int  n;

   
double  y[ 21 ];

y[
20 ] = ( 1 / 2 ) * ( 1 / 105 + 1 / 126 );

for (n = 20 ;n >= 0 ;n -- )

 y[n
- 1 ] = (( 1.0 / n) - y[n]) / 5.0 ;

printf(
" Data is:\n " );

      
for (n = 1 ;n <= 20 ;n ++ )

      
{

      printf(
" y[%d]:   " ,n);

      printf(
" %f " ,y[n]);

      printf(
" \n " );

      printf(
" \n " );

    }


}


Data is:

y[1]:  0.088392

y[2]:  0.058039

y[3]:  0.043139

y[4]:  0.034306

y[5]:  0.028468

y[6]:  0.024325

y[7]:  0.021233

y[8]:  0.018837

y[9]:  0.016926

y[10]:  0.015368

y[11]:  0.014071

y[12]:  0.012977

y[13]:  0.012040

y[14]:  0.011229

y[15]:  0.010523

y[16]:  0.009884

y[17]:  0.009406

y[18]:  0.008526

y[19]:  0.010000

y[20]:  0.000000

分析对算法的认识:

Y[20] 之前两种算法所产生的结果相差不大。但是由于误差传播是逐步扩大的。因而不可直接就此断言那种算法好;随着次数的增大其后果是可怕的,代价是巨大的 。经验在下亲自验证到 Y[50] 时,会出现相当可怕的结果!!

算法一:

 

算法二:

 

进行误差分析:

由递推公式布难求出:算法一的误差是 5^n 级别!!

                    算法二 的误差级别则为 (1/5)^n 级别的!!

综上所述:在数值计算中 如不注意误差分析,就会出现“差之毫厘 失之千里”

的错误结果。我们应重视计算过程中的误差分析,算法分析。

 

posted on 2006-04-04 11:43 华剑缘 阅读(158) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理