基于visual Studio2013解决C语言竞赛题之0422牛顿迭代法





题目


解决代码及点评

该题考察对浮点数的了解

#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调试器” 执行


程序运行结果





你可能感兴趣的:(基于visual Studio2013解决C语言竞赛题之0422牛顿迭代法)