用牛顿迭代法求方程2*x*x*x-4*x*x+3*x-6=0在1.5附近的解,要求误差小于1e-5
用do-while型写#include<stdio.h>
#include<math.h>
int main(){
float x0,x,f,f1;
printf("请输入一个近似解:\n");
scanf("%f",&x);
do{
x0=x;
f=((2*x-4)*x+3)*x-6;
f1=(6*x-8)*x+3;
x=x-f/f1;
}while(fabs(x-x0)>=1e-5);
printf("牛顿迭代公式求得的近似解:%.4f\n",x);
return 0;
}
输入1.5
输出2.0000
用while型写
#include<stdio.h>
#include<math.h>
int main(){
float x0,x,f,f1;
printf("请输入一个近似解:\n");
scanf("%f",&x);
x0=x;
while(fabs(x-x0)>=1e-5){
f=((2*x-4)*x+3)*x-6;
f1=(6*x-8)*x+3;
x=x-f/f1;
}
printf("牛顿迭代公式求得的近似解:%.4f\n",x);
return 0;
}
输入1.5
输出1.5000
想问下为什么输出的不一样。是while型哪里写错了嘛?
我知道do-while是先首先执行语句即循环体
#include<stdio.h>
#include<math.h>
int main(){
float x0,x,f,f1;
printf("请输入一个近似解:\n");
scanf("%f",&x);
while(1){
x0=x;
f=((2*x-4)*x+3)*x-6;
f1=(6*x-8)*x+3;
x=x-f/f1;
if (fabs(x-x0)<1e-5) break;
}
printf("牛顿迭代公式求得的近似解:%.4f\n",x);
return 0;
}
页:
[1]