新手求助,为什么第一个输出-1#IND000 第二个输出1.212798074

时间:2022-03-01 02:49:22
c++
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
int main()
{
double x1,x2=3.14159/4;
do
{
x1=x2;
x2=x1-(cos(x1)-x1)/(sin(x1)-1);
} while(fabs(x2-x1)>1e-6&&(sin(x1)-1)!=0);
cout<<"f(x)=0的解为:"<<setiosflags(ios::fixed)<<setprecision(10)<<x2<<endl;
return 0;
}





#include <iostream.h>
#include <iomanip.h>
#include <math.h>
int main()
{
double a,b;
a=3.14159 / 4;
b=a-(cos(a)-a)/(sin(a)-1);
while (fabs(a-b)>1e-6)
{
a=b-(cos(b)-b)/(sin(b)-1);
b=a;


}
cout << "方程的解为" <<setiosflags(ios::fixed)<<setprecision(10)<< b << endl;
return 0;
}

2 个解决方案

#1


第一个程序其实是先算=1-(cos(x1)-x1)/(sin(x1)-1);,再判断(sin(x1)-1)等不等于0,所以其实没有达到消除除数不为0的情况。之所以输出为-1#1ND00就是由于double型变量除于0

#2


除以了0,
比如double d = 1.0 / 0.0;
那么你显示d的值就是-1#IND000

#1


第一个程序其实是先算=1-(cos(x1)-x1)/(sin(x1)-1);,再判断(sin(x1)-1)等不等于0,所以其实没有达到消除除数不为0的情况。之所以输出为-1#1ND00就是由于double型变量除于0

#2


除以了0,
比如double d = 1.0 / 0.0;
那么你显示d的值就是-1#IND000