怎样编写c语言积分函数

用梯形法求函数f(x)=1+x2在0到1上的定积分。实验步骤与要求:(1)编制一个函数sab(a,b,n)求函数f(x)在[a,b]上的定积分,其中n为区间[a,b]的等... 用梯形法求函数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>
展开
 我来答
tattackor
推荐于2017-09-16 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:892万
展开全部

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

  1. 公式积分:部分函数可以直接用公式求得其不定积分函数。C语言中可以直接用积分公式写出其积分函数。

  2. 数值积分:按照积分的定义,设置积分范围的步长,用梯形面积累加求得其积分。

    以【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;
    }
匿名用户
2013-07-16
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式