购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

三级网络技术(9)

下列程序的功能是:利用以下所示的简单迭代方法求方程:

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( )把结果输出到文件out9.dat中。

注意:部分源程序已给出。

请勿改动主函数main()和写函数writeDAT()的内容。

试题程序: UXqlo7Op7s5mjhOYiBwh9jW76HbA/Y28j0CZ6lTfoevG5NpDUDDHPc10YL9JwTDf

#include <stdlib.h>
#include <math.h>
#include <stdio.h>
void writeDAT();
float countValue( )
{
}
void main( )
{
      system("CLS");
      printf("实根=%f\n",countValue( ));
      printf("%f\n",cos(countValue( ))-countValue( ));
      writeDAT( );
}
void writeDAT( )
{
      FILE *wf;
      wf=fopen("out9.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; /*返回x1的值*/
}
【解析】在本题中,因为要求一个实数的余弦值,在结束迭代的时候要判断绝对值,所以这里要用到函数cos(double x )和fabs(double x )。先设一个条件永远为真的while循环结构,按照步骤提示,要先为x1取初值,将x1的值赋给x0,使x1=cos(x0),判断x0-x1的绝对值并将其作为强行退出循环的条件。
点击中间区域
呼出菜单
上一章
目录
下一章
×