首页 > 试题广场 >

已知用梯形法求积分的公式为:,其中,h = ( b-a )

[问答题]


已知用梯形法求积分的公式为:,其中,h = ( b-a ) / nn为积分区间的等分数,编程求如下积分的值。要求:把求积分公式编写成一个函数,并使用函数指针作为形式参数。调用该函数时,给出不同的被积函数作为实际参数求不同的积分。


推荐
#include<iostream>
#include<cmath>
using namespace std;
double f1( double x )
{
  return 4 / ( 1 + x*x );
}
double f2( double x )
{
  return sqrt( 1 + x*x );
}
double f3( double x )
{
  return sin( x );
}
double trap( double( *fun )( double x ), double a,double b,long n )
{
double t,h;  int i;
  t = ( ( *fun )(a) + ( *fun )( b ) ) / 2.0;
  h = ( b - a ) / n;
  for( i=1; i<=n-1; i++ ) t += ( *fun )( a + i * h );
  t *= h;
  return t;
}
int main()
{
double t1,t2,t3;
  t1 = trap( f1,0,1,10000 );
  cout << "t1=" << t1 << endl;
  t2 = trap( f2,1,2,10000 );
  cout << "t2=" << t2 << endl;
  t3 = trap( sin,0,3.14159265/2,10000 );
  cout << "t3=" << t3 << endl;
}

发表于 2018-05-07 11:38:47 回复(0)