下列程序的功能是:利用以下所示的简单迭代方法求方程: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()把结果输出到文件out41.dar中。
注意:部分源程序已给出。
请勿改动主函数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,"%fln",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)数学函数doublecos(doublex)及doublefabs(doublex)的使用。
(2)使用循环结构实现迭代。
在本题中,因为要求一个实数的余弦值,在结束迭代的时候要判断绝对值,所以这里要用到数学函数cos(doublex)和fabs(doublex)。先设一个条件永远为真的while循环结构,按照步骤提示,要先为x1取初值,将x1的值赋给x0,使xl=cos(x0),判断x0-x1的绝对值将其作为强行退出循环的条件。
类似于x-sinx的迭代方程怎样编写程序?具体如下所述.x初始值为x=zeros(1,100).x 数学 2020-04-06 …
x-sinx的迭代方程怎样编写程序?x初始值为x=zeros(1,100).x具有下式关系:x(1 数学 2020-04-06 …
请问x-sinx的迭代方程怎样编写程序?x初始值为x=zeros(1,100).x具有下式关系:x 数学 2020-04-06 …
我是个FORTRAN小白,现用差分法计算一个偏微分方程,划分一个矩形网格,进行迭代计算,如果我要拿 数学 2020-05-13 …
求一个简单的C程序,数值分析题目,1.求下述方程的实根.X^2-3X+2-e^x=0取精度为小数点 其他 2020-05-13 …
看看这个方程组的J迭代法是否收敛?2(x1)+(x2)+4(x3)=6(x1)+4(x2)+(x3 数学 2020-05-15 …
c++题目不知道怎么弄1.编程序用迭代法求a的立方根,求立方根的迭代公式为::Xi+1=(2*Xi 其他 2020-05-19 …
matlab迭代问题设方程4x^4-4x^2=02.用迭代法求的所有根,设迭代函数为f(x)=(3 数学 2020-05-23 …
应用原型化方法是一个迭代过程,其迭代工作主要是在______。A) 识别需要B) 开发模型C) 模型 计算机类考试 2020-05-24 …
MATLAB编程问题1.考虑一下迭代公式xn+1=a/b+xn,其中a,b为正的常数(n+1,n是 其他 2020-07-29 …