题目
解决代码及点评
该题考察对浮点数的了解
#include<iostream>
#include<cmath>
/*
用牛顿迭代法求方程在 1.5附近的根(精度在10^-5)
2*x^3-4*x^2+3*x-6=0
*/
using namespace std;
void main()
{
double diedai(double a,double b,double c,double d,double x);
double a,b,c,d;
double x=10000.0;
cout<<"请依次输入方程四个系数:";
cin>>a>>b>>c>>d;
x=diedai(a,b,c,d,x); // 用户输入四个系数后,调用迭代法就根
cout<<x<<endl;
//printf("%f",x);
system("pause");
}
double diedai(double a,double b,double c,double d,double x)
{
while(abs(a*x*x*x+b*x*x+c*x+d)>0.000001) // 关键在于,对方程的求值,最后是>0.000001而不是==0是因为浮点数不能==0,所以用精度代替
{
x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);
}
return x;
}
代码下载及其运行
代码下载链接:
http://download.csdn.net/detail/yincheng01/6641033
解压密码为c.itcast.cn
下载解压后用VS2013打开工程文件
点击 “本地Windows调试器” 执行
程序运行结果