/* ex4-1.c based on Trapezoidol Rule is
* used for computing definite integral with
* domain [a,b] with n even-grids.
*/
#include <stdio.h>
#include <math.h>
#define PI 3.141596
#define F(x) (exp(x))
void main()
{
int n,i;
double a,b,x,tn,h ,sum=0.0 , sum1 ,sum2 ;
n=10;
a=0;
b=1;
h=(b-a)/n;
x=a;
for(i=1;i<=n-1;i++)
{
x=x+h;
sum=sum+F(fabs(x));
}
tn=(h/2.0)*(F(fabs(a))+F(fabs(b))+2.0*sum);
printf("exp(x) , a=0 , b=1 梯形積分法 : T%d=%10.6lf\n",n,tn);
printf("exp(x) , a=0 , b=1 實際積分值 :%10.6lf \n",fabs(exp(1)-1));
printf("實際值與梯形積分的誤差 :%10.6lf \n",fabs(tn-fabs(exp(1)-1)));
x=a;
sum1=0;
n=0;
while (x<b-h)
{
sum1=sum1 + h* F(fabs(x));
x=x+h;
n=n+1;
}
printf("左端近似積分法 : T%d=%10.6lf\n",n,sum1);
x=a+h;
sum2=0;
n=0;
while (x<=b)
{
sum2=sum2 + h* F(fabs(x));
x=x+h;
n=n+1;
}
printf("右端近似積分法 : T%d=%10.6lf\n",n,sum2);
printf("(右端近似積分法 +左端近似積分法)/2 : T%d=%10.6lf\n",n,(sum1+sum2)/2);
return;
}
輸出畫面
exp(x) , a=0 , b=1 梯形積分法 : T10= 1.719713
exp(x) , a=0 , b=1 實際積分值 : 1.718282
實際值與梯形積分的誤差 : 0.001432
左端近似積分法 : T10= 1.633799
右端近似積分法 : T10= 1.805628
(右端近似積分法 +左端近似積分法)/2 : T10= 1.719713
...Program finished with exit code 67
Press ENTER to exit console.
沒有留言:
張貼留言