
求C语言例题讲解:用迭代法求方程x=cos x的根,要求误差小于10的-6次方
main(){doublex1,x2;x1=0.0;x2=cos(x1);while(fabs(x2-x1)>le-6){x1=x2;x2=cos(x1);}printf...
main()
{double x1,x2;
x1=0.0;
x2=cos(x1);
while(fabs(x2-x1)>le-6)
{x1=x2;
x2=cos(x1);
}
printf("x=%f\n",x2);
}
1、x1=0.0;x2=cos(x1);分别是什么意思
2、while后面的{x1=x2;
x2=cos(x1);
}
又是什么意思 展开
{double x1,x2;
x1=0.0;
x2=cos(x1);
while(fabs(x2-x1)>le-6)
{x1=x2;
x2=cos(x1);
}
printf("x=%f\n",x2);
}
1、x1=0.0;x2=cos(x1);分别是什么意思
2、while后面的{x1=x2;
x2=cos(x1);
}
又是什么意思 展开
2个回答
展开全部
呵呵
你不已经编完了吗
因为是cos函数 所以要定义成浮点数,这样更精确,因此赋值也 要赋浮点数,即0.0其实就是零加个小数点使数域更广,
这段程序的意思是
先对x1赋0
x2用cos(x)赋值
此时要是x1等于x2就是x=cosx,成立输出,要不成立
,进入while,判断括号里的就是判断误差。当误差大于10的-6次方时循环继续,等小于10的-6次方时结束循环,输出的就是要求得
循环体的意思是
当满足判断条件时
看,开始 -----x1-----------x2----------------------
x1用x2赋值 x1--------------x2
因为开始x2等于cos0即1,此时cos值最大,以后的非零一定小
也就是说x2的值会不断变小,x1又不断的用x2赋值,那么x1也不断小这样x1和x2就会不断靠近,当两者之间的距离相差小于10的-6次方时就看成相等。满足要求,我再画几个数轴
x1-----------------------x(0)------------------------------------------
x1--------------------x(1)--------------------
x(1)----x【x(1)】
左为变量x1不断赋值,右为x2不断赋值
你不已经编完了吗
因为是cos函数 所以要定义成浮点数,这样更精确,因此赋值也 要赋浮点数,即0.0其实就是零加个小数点使数域更广,
这段程序的意思是
先对x1赋0
x2用cos(x)赋值
此时要是x1等于x2就是x=cosx,成立输出,要不成立
,进入while,判断括号里的就是判断误差。当误差大于10的-6次方时循环继续,等小于10的-6次方时结束循环,输出的就是要求得
循环体的意思是
当满足判断条件时
看,开始 -----x1-----------x2----------------------
x1用x2赋值 x1--------------x2
因为开始x2等于cos0即1,此时cos值最大,以后的非零一定小
也就是说x2的值会不断变小,x1又不断的用x2赋值,那么x1也不断小这样x1和x2就会不断靠近,当两者之间的距离相差小于10的-6次方时就看成相等。满足要求,我再画几个数轴
x1-----------------------x(0)------------------------------------------
x1--------------------x(1)--------------------
x(1)----x【x(1)】
左为变量x1不断赋值,右为x2不断赋值
展开全部
迭代法所得结果在一定次数之后单调收敛于方程的解,也就是说经过每次迭代,所得结果会更加接近方程的解。
if语句条件中的x1,x2分别是最后2次迭代的结果。根据X(n+1)=COS Xn,可以证明当X(n+1)-Xn趋近于0时,Xn就趋近于方程的解。所以当If语句中条件成立时,就认为所得结果不够精确,因而继续迭代,直到条件不成立,就认为所得结果较为精确。
x1赋初值0,这时x2=cos0=1。
if语句条件中的x1,x2分别是最后2次迭代的结果。根据X(n+1)=COS Xn,可以证明当X(n+1)-Xn趋近于0时,Xn就趋近于方程的解。所以当If语句中条件成立时,就认为所得结果不够精确,因而继续迭代,直到条件不成立,就认为所得结果较为精确。
x1赋初值0,这时x2=cos0=1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询