怎样编写c语言积分函数

用梯形法求函数f(x)=1+x2在0到1上的定积分。
实验步骤与要求:
  (1)编制一个函数sab(a,b,n)求函数f(x)在[a,b]上的定积分,其中n为区间[a,b]的等分数。
  (2)编制一个主函数及计算被积函数值的函数f(x),在主函数中调用sab()函数计算并输出积分值。 说明:
  用梯形法求f(x)在a,b区间的定积分,即求f(x)与x=a、x=b和y=0围成的区间的面积,将此区间分为n份,每一小份可以近似看成一个梯形,将所有梯形面积累加求和,得到球积分公式为:
  s=h[f(a)+f(b)]/2+hf(a+kh),其中,h=(b-a)/n</SPAN></SPAN>

积分分为两种,数值积分,公式积分。

    公式积分:部分函数可以直接用公式求得其不定积分函数。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=1;i<n;i++)
       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;
    }

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-16
相似回答