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

简介:

/*题    目:编写利用矩形法计算定积分的通用函数。然后利用它分
            别计算以下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 );

}

目录
相关文章
|
7月前
|
C语言
c语言编程练习题:7-31 掉入陷阱的数字
c语言编程练习题:7-31 掉入陷阱的数字
77 1
|
7月前
|
安全 测试技术
技术债是我们的错吗?
技术债是我们的错吗?
|
数据库连接 数据库
红皮书——错误点
红皮书——错误点
红皮书——错误点
|
7月前
|
C语言
|
编译器 测试技术 C语言
【C语言航路外传】隐式转换与优先级的那点事(你程序总是出bug的一个重要原因)
【C语言航路外传】隐式转换与优先级的那点事(你程序总是出bug的一个重要原因)
91 0
|
Python
上古代码漫游记(二):把陷阱去掉了,反倒踩进了新的陷阱?
上古代码漫游记(二):把陷阱去掉了,反倒踩进了新的陷阱?
109 0
【perl】老司机的再一次翻车:没有想到加了一句打印,会影响结果输出
【perl】老司机的再一次翻车:没有想到加了一句打印,会影响结果输出
|
程序员 C语言 C++
一文搞定C语言函数和函数递归(和bug郭一起学C系列)(1)
一文搞定C语言函数和函数递归(和bug郭一起学C系列)(1)
120 0
一文搞定C语言函数和函数递归(和bug郭一起学C系列)(1)
|
C语言
C语言解决 猜凶手问题 两句话矛盾必有一真一假类问题
C语言解决 猜凶手问题 两句话矛盾必有一真一假类问题
117 0
C语言解决 猜凶手问题 两句话矛盾必有一真一假类问题