求定積分的程序,跟大家分享一下,有錯的話請指出,謝謝!
/*題 目:編寫利用矩形法計算定積分的通用函數。然後利用它分
別計算以下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 );
}
最後更新:2017-04-02 06:51:38