您的位置:首页 > 其它

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

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐