用C语言编程牛顿迭代法求方程近视根sinx=0(3<x<4),小数点后100位收敛

如题所述

第1个回答  2017-09-18
#include<stdio.h>
#include<math.h>
int main()
{
float x1,x,f1,f2;static int count=0;
x1=1.5//定义初始值
do
{
x=x1;
f1=x*(2*x*x-4*x+3)-6;
f2=6*x*x-8*x+3;//对函数f1求导
x1=x-f1/f2; count++;
}while(fabs(x1-x)<=1e-5);
printf("%8.7f\n",x1); printf("%d\n",count);
return 0;
}
//2x3-4x2+3x-6//根据我改了初始值,查看结果,表明:改变初始值得到的结果并不一样,但是迭代的次数并没有改变!!追问

兄弟你这完全不对啊

第2个回答  2017-09-18
f(x)=0的牛顿迭代公式
x <- x-f(x)/f'(x)
C语言编程
double x;
x=3.5;
for(int i=0; i<10000 ;i++){
if(abs(tan(x))>1.e-100){
x=x-tan(x)
}
}追问

能写全吗?

追答

实话说,合理的收敛判断因该是10^(-10)左右,即
1.e-10

要收敛到10^(-100)需要特殊处理,在数值计算的实际应用中也不必要。

#include
#include

int main()
{
double x;
x=3.5;
for(int i=0; i1.e-100){
x=x-tan(x)
}
}
printf("%8.7f\n",x);
}

追问

算出来结果是π吗,还有就是你的这个代码没法运行啊

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网