下列程序的功能是:利用以下所示的简单迭代方法求方程: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中。注意:

题目

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

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 x0x1=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; }
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的绝对值将其作为强行退出循环的条件。
更多“下列程序的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+1=cos(xn) 迭代步 ”相关问题
  • 第1题:

    方程x-cos(x-1)=0在下列区间中至少有一个实根的区间是( ).

    A.(-∞,0)
    B.(0,π)
    C.(π,4)
    D.(4,+∞)

    答案:B
    解析:
    记f(x)=x-cos(x-1),则f(0)=-2<0,f(π)=π>0,又f(x)在[0,π]上连续,由零点定理知,应选B.

  • 第2题:

    在关于下面程序段的说法中,正确的是 。 if x<0 Then y = Cos(x) y = Sin(x)

    A.当x>=0,y = Cos(x);当x<0,y = Sin(x)。

    B.无论x的值是什么,y = Cos(x)

    C.当x>=0,y = Sin(x) ;当x<0, y = Cos(x)

    D.无论x的值是什么,y = Sin(x)


    可以提供1S为周期的时钟脉冲

  • 第3题:

    在关于下面程序段的说法中,正确的是()。 if x<0 Then y = Cos(x) y = Sin(x)

    A.当x>=0,y = Cos(x);当x<0,y = Sin(x)

    B.无论x的值是什么,y = Cos(x)

    C.当x>=0,y = Sin(x) ;当x<0, y = Cos(x)

    D.无论x的值是什么,y = Sin(x)


    可以提供1S为周期的时钟脉冲

  • 第4题:

    关于x的方程2cos2x-sinx+a0在区间[0,7π/6]上恰好有两个不等实根,则实数a的取值范围是_____。


    答案:
    解析:

  • 第5题:

    8、下面说法错误的是()

    A.如果方程有解,则用迭代的方法求方程的解时,迭代过程一定是收敛的。

    B.如果方程无解,则用迭代的方法求方程的解时,迭代过程一定是不收敛的。

    C.迭代的过程就是不断由迭代变量的旧值推出新值,再不断用新值取代旧值的过程。

    D.通过反复迭代,产生一个数列: x0, x1, , x2…, xn,…,若数列的极限存在,则迭代收敛,反之,迭代发散。


    答 m\times n 线性方程组若有解,不一定是唯一的,可能有无穷多个解。对于无穷多个解,其解的形式也不是唯一的。可能有多种表达的形式(见下面解题方法与研究中用等价变形法求解线性方程组如例2)。