早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

下列程序的功能是:利用如下所示的简单迭代方法求方程cos(x)-x=0的一个实根。迭代式为:xn+1=cos(xn

题目

下列程序的功能是:利用如下所示的简单迭代方法求方程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(),把结果输出到文件OUT.DAT中。部分源程序已给出。请勿改动主函数main()和输出数据函数writeDAT()的内容。#include <conio.h>#include <math.h>#include <stdio.h> float countValue(){ } void main(){ clrscr(); printf("A=%f\n",countValue()); printf("%f\n",cos(countValue())-countValue()); writeDAT();} void writeDAT(){ FILE *wf; wf=fopen("out17.dat","w"); fprintf(wf,"%f\n",countValue()); fclose(wf);}

参考答案
正确答案:请参考解析
【解析及答案】
本题的任务是把函数countvalue() 补充完整。该函数利用迭代法求解方程。迭代法求解的过程就是先设置两个变量X0X1,其中X1X0更接近方程的解。为方程的初始解X1先赋予一个任意值,然后把X1赋予X0,把X0带入迭代式,求出的结果是比X0更接近方程的根的值。接着比较X0X1差的绝对值,如果小于要求的精度,则X1就是方程的一个实根;否则,继续上述过程。由于上述过程具有反复迭代的特征,故称为迭代法。一般利用do…while循环比较容易实现上述算法。由上述过程可知,能够使用迭代法求解的方程必须是收敛的,发散的无法求解。综上所述,完整的函数countvalue() 如下。
float countValue()
{
  float x0,x1=0.0;
  do
{x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=0.000001);
return x1;
}