C语言实习用梯形法或辛普森法求解定积分的值
求一个函数f(x)在[a,b]上的定积分,其几何意义是求f(x)曲线和直线x=a,y=0,x=b所围成的曲边梯形面积。为了近似求出此面积,可将[a,b]区间分成若干个小区...
求一个函数f(x)在[a,b]上的定积分,其几何意义是求f(x)曲线和直线x=a,y=0,x=b所围成的曲边梯形面积。为了近似求出此面积,可将[a,b]区间分成若干个小区间,每个区间的宽度为(b-a)/n,n为区间个数。近似求出每个小的曲边梯形面积,然后将n个小面积加起来,就近似得到总的面积,即定积分的近似值。当n越大(即区间分的越小),近似成都越高。
算法分析:数值积分通常用的算法如下。
①梯形法:用小梯形代替小曲边梯形。
②辛普森法:在小区间范围内,用一条抛物线代替该区间的f(x),将(a,b)区间分成2n个小区间。 展开
算法分析:数值积分通常用的算法如下。
①梯形法:用小梯形代替小曲边梯形。
②辛普森法:在小区间范围内,用一条抛物线代替该区间的f(x),将(a,b)区间分成2n个小区间。 展开
1个回答
展开全部
//梯形法求定积分
#include<stdio.h>
#include<math.h>
//定义被积函数
double func(double x){
return sin(x)*cos(x);
}
void main(){
double a,b,h,x,sum;
int i,n;
printf("Input a b and n: ");
scanf("%lf%lf%d",&a,&b,&n);
h=(b-a)/n;
x=a;
sum=(func(a)+func(b))/2;
for(i=1; i<n; i++){
x += h;
sum += func(x);
}
sum *= h;
printf("sum=%.4lf\n",sum);
}
#include<stdio.h>
#include<math.h>
//定义被积函数
double func(double x){
return sin(x)*cos(x);
}
void main(){
double a,b,h,x,sum;
int i,n;
printf("Input a b and n: ");
scanf("%lf%lf%d",&a,&b,&n);
h=(b-a)/n;
x=a;
sum=(func(a)+func(b))/2;
for(i=1; i<n; i++){
x += h;
sum += func(x);
}
sum *= h;
printf("sum=%.4lf\n",sum);
}
追问
这就可以了是吗。
追答
这个函数要替换成你的被积函数。
double func(double x){
return sin(x)*cos(x);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询