积分分为两种,数值积分,公式积分。
公式积分:部分函数可以直接用公式求得其不定积分函数。C语言中可以直接用积分公式写出其积分函数。
数值积分:按照积分的定义,设置积分范围的步长,用梯形面积累加求得其积分。
以【f(x)=x*sin(x) 从1到2的积分】为例:
#include <math.h>#include <stdio.h>
double integral(double(*fun)(double x),double a,double b,int,n){
double s,h,y
int i
s=(fun(a)+fun(b))/2
h=(b-a)/n /*积分步长*/
for(i=1i<ni++)
s=s+fun(a+i*h)
y=s*h
return y/*返回积分值*/
}
double f(double x){
return(x*sinx) /*修改此处可以改变被积函数*/
}
int main(){
double y
y=integral(f,1.0,2.0,150)/*修改此处可以改变积分上下限和步数,步长=(上限-下限)/步数*/
printf("y=%f\n",y)
return 0
}
基本是这样的,用梯形发求定积分,对应于一个积分式就要有一段程序,不过你可以改变程序的一小部分来改变你所要求的积分式。以c为例:求f(x)=xsinx从1到2的积分
#include <math.h>
float integral(float(*fun)(float x),float a,float b,int,n)
{float s,h,y
int i
s=(fun(a)+fun(b))/2
h=(b-a)/n/*积分步长*/
for(i=1i<ni++)
s=s+fun(a+i*h)
y=s*h
return y/*返回积分值*/
}
float f(float x)
{return(x*sinx) /*修改此处可以改变被积函数*/
}
main()
{float y
y=integral(f,1.0,2.0,150)/*修改此处可以改变积分上下限和步长*/
printf("y=%f\n",y)
}