TA的每日心情 | 开心 2014-6-18 08:29 |
---|
签到天数: 14 天 [LV.3]偶尔看看II
滴水大师
 
- 积分
- 2345
|
题目
解决代码及点评该题考察对浮点数的了解
- <pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"></pre><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code"><pre code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179" class="cpp" name="code">#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;
- }</pre><br></pre><br><br></pre>
|
|