下列程序的功能是:利用以下所示的简单迭代方法求方程: cos(x)-x=0的一个实根。 xn+1=cos(xn) 迭代步骤如下; (1)取x1初值为0.0。 (2)x0=x1,把x1的值赋给x0。 (3)x

admin2009-02-15  37

问题 下列程序的功能是:利用以下所示的简单迭代方法求方程:
     cos(x)-x=0的一个实根。
     xn+1=cos(xn)
   迭代步骤如下;
    (1)取x1初值为0.0。
    (2)x0=x1,把x1的值赋给x0。
    (3)x1=cos(x0),求出一个新的x1。
    (4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2)。
    (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
   请编写函数countValue()实现程序要求,最后调用函数writeDAT()把结果输出到文件out41.dat中。
   注意;部分源程序已给出。
   请勿改动主函数main()和写函数writeDAT()的内容。
   试题程序:
     #include<conio.h>
     #include<math.h>
     #include<stdio.h>
     float countValue( )
     {
     
     }
     main ( )
     {
       clrscr( );
       printf("实根=%f\n",countValue(  ));
       printf("%f\n",cos(countValue( ))-countValue( ));
       writeDAT( );
     }
writeDAT( )
     {
       FILE *wf;
       wf=fopen("out41.dat","w");
       fprintf(wf,"%f\n",countValue( ));
       fclose(wf);
     }

选项

答案float countValue() { float x0,x1=0.0; while(1) { x0=x1; /*将x1赋值给x0*/ x1=cos(x0); /*求出新的x1*/ if(fabs(x0-x1)<1e-6)break; /*若x0-x1的绝对值小于0.000001,则结束循环*/ } return x1; }

解析 本题考查的知识点如下:
   (1)数学函数double cos(double x)及double fabs(double x)的使用。
   (2)使用循环结构实现迭代。
   在本题中,因为要求一个实数的余弦值,在结束迭代的时候要判断绝对值,所以这里要用到数学函数cos(double x)和 fabs(double x)。先设一个条件永远为真的while循环结构,按照步骤提示,要先为x1取初值,将x1的值赋给x0,使x1=cos(x0),判断x0-x1的绝对值将其作为强行退出循环的条件。
转载请注明原文地址:https://jikaoti.com/ti/xxh7FFFM
0

最新回复(0)