📄 erfen.cpp
字号:
//用二分法求一元方程3*x*x*x+6*x*x+3*x+5=0在(x1,x2)区间的根。
//若方程3*x*x*x+6*x*x+3*x+5=0在(x1,x2)区间内有实根,则函数
//的曲线应当在根这一点上与x轴有一个交点,在根附近的左右区间
//内,函数的值的符号应当相反。利用这一原理,逐步缩小区间的范
//围,保持在区间的两个端点处的函数值符号相反,就可以逐步逼近
//函数的根(具体过程参考程序注解)。
#include "iostream.h"
#include "math.h"
double f(double x)
{
return 3*x*x*x+6*x*x+3*x+5;
}
void erfen(double l=0.000001)
{
float x0,x1,x2;
do
{ cout<<"Please input x1,x2:"<<endl;
cin>>x1;
cin>>x2;
}while(f(x1)*f(x2)>0); //保证在指定的范围内有根,即fx的符号相反
do
{
x0 = (x1+x2)/2; //取出X1和X2的中间点
if(f(x0)*f(x1)<0)x2 = x0; //若fx0和fx1符号相反则用x0点代替x2点
else
x1 = x0; //否则用x0来代替x1点
}while(fabs(f(x0))>=l); //判断x0点的函数与x轴的距离
cout<<"x="<<x0<<endl; //输出方程的根(x0)
}
void main()
{
erfen();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -