如题所述
第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//根据我改了初始值,查看结果,表明:改变初始值得到的结果并不一样,但是迭代的次数并没有改变!!追问
#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)
}
}追问
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);
}
算出来结果是π吗,还有就是你的这个代码没法运行啊
本回答被网友采纳