#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
比如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
比如double d = 1.0 / 0.0;
那么你显示d的值就是-1#IND000