/* 用二分法求在一个范围内一元三次方程的根 */
#include
#include
using namespace std;
double fan(double,double,double,double,double); //一元三次方程函数
double huan(double,double,double,double,double,double,double); //求根的函数 double main()
{
double x1,x2,f1,f2,x,A,B,C,D,k;
cout
cout
cout
cout
cout
cout
do
{
cout
cin>>x1>>x2;
f1=fan(x1,A,B,C,D);
f2=fan(x2,A,B,C,D);
if(f1*f2>0)
cout
else ;
}
while(f1*f2>0);
x=huan(x1,x2,A,B,C,D,k);
cout
cout
return 0;
}
double fan(double x,double A,double B,double C,double D)
{
double y;
y=A*x*x*x+B*x*x+C*x+D;
return y;
}
double huan(double x1,double x2,double A,double B,double C,double D,double k) {
double x,y;
do
{
x=(x1+x2)/2; //用二分法求x1与x2的中值
if(fan(x,A,B,C,D)*fan(x1,A,B,C,D)
} x2=x; else x1=x; y=fan(x,A,B,C,D); } while(fabs(y)>=k); return x;
/* 用二分法求在一个范围内一元三次方程的根 */
#include
#include
using namespace std;
double fan(double,double,double,double,double); //一元三次方程函数
double huan(double,double,double,double,double,double,double); //求根的函数 double main()
{
double x1,x2,f1,f2,x,A,B,C,D,k;
cout
cout
cout
cout
cout
cout
do
{
cout
cin>>x1>>x2;
f1=fan(x1,A,B,C,D);
f2=fan(x2,A,B,C,D);
if(f1*f2>0)
cout
else ;
}
while(f1*f2>0);
x=huan(x1,x2,A,B,C,D,k);
cout
cout
return 0;
}
double fan(double x,double A,double B,double C,double D)
{
double y;
y=A*x*x*x+B*x*x+C*x+D;
return y;
}
double huan(double x1,double x2,double A,double B,double C,double D,double k) {
double x,y;
do
{
x=(x1+x2)/2; //用二分法求x1与x2的中值
if(fan(x,A,B,C,D)*fan(x1,A,B,C,D)
} x2=x; else x1=x; y=fan(x,A,B,C,D); } while(fabs(y)>=k); return x;