#include <stdio.h>
#include <math.h>
double f1(double x);
double f2(double x);
double Definite_integral(double a, double b, double deta, double (*p)(double x));
void main()
{
double a, b, deta;
scanf("%lf,%lf,%lf",&a,&b,&deta);
if(a>b||deta<0)
{
printf("error");
return 0;
}
//printf("%.2f",Definite_integral(a,b,deta,f1));
printf("%.2f,%.2f",Definite_integral(a,b,deta,f1),Definite_integral(a,b,deta,f2));
}
/* 梯形法求定积分*/
double Definite_integral(double a, double b, double deta, double (*p)(double x))
{
int i,n;
float m;
double x=a, y1, y2, f=0;
n = (b-a)/deta;
m = (b-a)-n*deta;
y1 = (*p)(x);
for(i = 0;i < n;i++)
{
x += deta;
y2 = (*p)(x);
f += (y1+y2)*deta/2;
y1 = y2;
}
x+=m;
y2=(*p)(x);
f += (y1+y2)*m/2;
return f;
}
/*定义被积函数*/
double f1(double x){
double fx;
fx = x*x+1;
return fx;
}
double f2(double x){
double fx;
fx = fabs(x)/(x*x+1);
return fx;
}
C语言笔记—用梯形法求定积分
最新推荐文章于 2022-08-09 07:43:19 发布