利用矩形法求解定积分
本篇文章只是最基本的利用库函数里面有的函数来求解定积分,比如说cos(x),sin(x),e的x次方。
求解定积分的原理个人感觉和数学里面极限的思想是一样的,将积分区别分为很多的非常小的区域,这样这些区域就可以近似的看成一个点,然后用这这个区域的长度乘以它对应的这点的函数值,最后进行累加就可以解决。
代码如下:
#include "stdio.h"
#include "math.h"
float sinx(float x)
{
return sin(x);
}
float cosx(float x)
{
return cos(x);
}
float ex(float x)
{
return exp(x);//按理应该定义为double类型,但此处不影响,笔者懒,有需要的伙伴可以改为double类型
}
main()
{
int flag;
float (*p)(float);//此处定义指针函数,可以选择计算不同的积分
float h,i,a,b,n,sum,t;
n=1000;//n的值越大,分的区域越多,精度越高
sum=0;
printf("请输入积分上下限(空格隔开)\n");
scanf("%f %f",&a,&b);
if(a<b)
{
printf("输入错误,但已自动改正\n");
t=a;
a=b;
b=t;
}
h=(a-b)/n;
printf("请选择你要计算的积分 0 sinx 1 cosx 2 ex\n");
scanf("%d",&flag);
if(flag==0) p=sinx;
else if (flag==1) p=cosx;//指针指向所对应的函数,可以选择计算不同的积分
else p=ex;
for(i=b;i<a;i+=h)//进行累加
sum+=p(i)*h;//这点乘以它的函数值
printf("%f\n",sum);
}