/**
  复化梯形积分  
                                                     n-1
 复化梯形公式: Tn = h{ f(a)/2  +  * ∑ f ( x(a + i*h)  + f(b)/2 )} 
                                                     i=1
 步长: h=b-a/n

 属性: 数值积分法

《数值计算方法与算法》-2 Editon -科学出版社 P54
   
 代码维护:2007.04.20   pengkuny
**/

#include<iostream>
#include
<cmath>

using namespace std;

#define f(x) (sin(x))  //举例函数
#define epsilon 0.00001  //精度

//复化梯形公式
float computerT(float aa, float bb, long n)
{//aa,bb:端点  n,分区数
    float sum = 0;
    
float h = (bb-aa)/n; //步长
    for (long i=1; i<n; i++)
    
{
        sum 
+= f(aa + i*h);
    }

    sum 
+= (f(aa) + f(bb))/2;

    
return (h*sum);
}



int main()
{
    
float a,b;
    
long n;
    cout
<<"复化梯形积分,请输入积分范围a,b:"<<endl;
    cin
>>a>>b;
    cout
<<"请输入分割区间数n:"<<endl;
    cin
>>n;

    cout
<<"积分结果:"<<computerT(a, b, n)<<endl;

    system(
"pause");
    
return 0;
}
posted on 2007-04-20 10:56 哈哈 阅读(1777) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理