/*
*
* 用变步长梯形求积公式求定积分
* 1
* ∫ (x/(4+x^2))dx
* 0
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#define epsilon 0.00001
float f(float x)
{
return(x/(4+x*x));
}
float computeT(float a,float b)
{
float T=0,h=(b-a)/2;
T=h*(f(a)+2*T+f(b))/2;
return(T);
}
main()
{
int i;
float a,b,T1,T2,S,x,h;
printf("\n Input the begin :");
scanf("%f",&a);
printf("\n Input the end :");
scanf("%f",&b);
h=b-a;
T1=computeT(a,b);
while(1)
{
S=0;
x=a+h/2;
do
{
S+=f(x);
x+=h;
}while(x<b);
T2=(T1+h*S)/2;
if(fabs(T2-T1)>=epsilon)
{
T1=T2;
h=h/2;
continue;
}
else
break;
}
printf("solve is : %f",T2);
getch();
return(S);
}
计算方法之用变步长梯形求积公式求定积分
最新推荐文章于 2022-11-30 15:42:28 发布