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 class="cpp" name="code" code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179"><pre class="cpp" name="code" code_snippet_id="91880" snippet_file_name="blog_20131202_1_2646179"><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><pre code_snippet_id="91880" snippet_file_name="blog_20131209_3_2713861" class="cpp" name="code">/*
- 功能:用简单迭代法解方程 e^x - x - 2 = 0
- 它有两个根(如图),其迭代公式为:
- 1) x[n+1]= e^x*n-2
- (初值X<0时)
- 2) x[n+1]= Ln(x[n] + 2)
- (初值X>0时)
-
- 注:本程序中选取初值X0 不同时,要分别使用公式1或公式2迭代,得原方程<0或>0的解。(公式由来略)
-
-
-
- 时间:13:08 2013/10/26
- */
-
- #include<stdio.h>
- #include <stdlib.h>
- #include<math.h>
-
- #define E 2.74
-
- double getRoot1(double x,int n)
- {
- return pow(E,x)*n-2; //x<0时直接返回结果
- }
-
- double getRoot2(double n)
- {
- if(n<=0)
- {
- return 2; //结束条件
- }
- else
- {
- return log10f(getRoot2(n-1)+2); //迭代法则
- }
- }
-
- void main()
- {
- int n;
- scanf_s("%d",&n);
- double x;
- scanf_s("%lf",&x);
- double root1;
- if (x<0) //判断x是否小于0
- {
- root1=getRoot1(x,n);
- printf("root 1 = %f\n",root1);
- }
- else
- {
- double root2=getRoot2(n);
- printf("root 2 =%f \n",root2);
- }
- system("pause");
- }</pre><br><br></pre></pre></pre>
|
|