求定积分的程序,跟大家分享一下,有错的话请指出,谢谢!

/*题    目:编写利用矩形法计算定积分的通用函数。然后利用它分
            别计算以下3个数学函数的定积分:
            (1)f(x)=x*x-5*x+1
      (2)f(x)=x*x*x+2*x*x-2*x+3
      (3)f(x)=x/(2+x*x)
 */     
//**********************************************************

#include < stdio.h >

//******求第一个公式的积分值******

double funtion1( double x )
{
    double  fx ;
 fx = x * x - 5 * x + 1;
 return fx ;
 
}

//******求第二个公式的积分值******

double funtion2( double x )
{
   double fx ;
  
   fx = x * x * x + 2 * x * x - 2 * x + 3 ;
   return fx ;
}


//******求第三个公式的积分值******

double funtion3( double x )
{
    double  fx ;

    fx = x / ( 2 + x * x ) ;
 return fx ;
}

//    调用函数求通用积分公式
    
void def_integral( double x1,double x2,int n , double (*p)( double x ))
{
     double  y1,y2  ;   //积分区间X1、X2对应的函数值
  double  per_len ,height ;
  double area , fx = 0.0 ;
     int i ;

  per_len = ( x2 - x1 ) / n ;   //等分成n分

  y1 = (*p)( x1 ) ;
    
  for( i = 1 ; i <= n ; i++ )
  {
   x2 = x1 + per_len ;        //单位区间长度
   y2 = (*p)(x2) ;           
         height = (y1 + y2 ) / 2.0 ;   //高
   area = per_len * height ;   //每一等份长度对应的面积
   x1 = x2 ;               //下限右移
   y1 = y2 ;               //右移
   fx = fx + area ;       //面积之和为积分的值
  }

  printf("所求积分的值为:/n");
  printf("%.3f/n" , fx ) ;

}

//*****主函数**************

void main()
{
  double a,b;  //a、b分别为积分区间的上下限
  int n ;            //n为要输入的等份 即 区间分成的份数
 
  int selection ;

  printf("请输入区间的等分数:/n");
  scanf("%d" , &n );
 
  printf("请输入积分区间的上下限(中间用空格隔开):/n");
  scanf("%lf%lf", &a, &b );

  printf("请输入你的选择(1、2、3):/n");
  scanf("%d" , &selection );
 
  if ( selection == 1 )
          def_integral( a,b, n , funtion1 );
  else if( selection == 2 )
       def_integral( a,b, n , funtion2 );
  else
       def_integral( a,b, n , funtion3 );

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值