求解sin(x)=9*x*x-1 x在规定精度下的解
#include
#include
using namespace std;
double JD=0.00001;//精度初始化
double save;//用于判断是否达到精度要求
int num_count;//用来保存二分次数
double fun(double left,double right)//当x取0时,sinx=9*x*x-1,左式=0 > 右式=-1 可以通过左右两式的大小关系,列二分求解
{
num_count++;
double x=(left+right)/2;//二分
if(fabs(fabs(sin(x)-(9*x*x-1))-save)
return x;
else
save=fabs(sin(x)-(9*x*x-1));
double aa=sin(x);
double bb=9*x*x-1;
//if(sin(x)<9*x*x-1)
if(aa
return fun(left,x);
else
return fun(x,right);
}
int main()
{
while(1)
{
cout<<"输入精度,-1为退出"<<endl;
cin>>JD;
if(JD==-1)
break;
else
{
save=0;
num_count=0;
double ans=fun(0,1);//未知数x,介于(0,1)内
printf("经过%d次二分运算后,在精度%.10lf下,x=%.10lf ",num_count,JD,ans);
}
}
return 0;
}