C语言编写f(x)=x^2在区间[0,1]定积分

如题所述

思路就是将区间无限细分

小区间梯形就可以看成矩形,小矩形所有面积相加,就是定积分

 

#include "stdio.h"

#include "math.h"

double f(double x)//被积函数

{

       return x*x;

}

double fun(double p,double q,int n)//p,q分别表示积分下上限,n为细分的区间数,越大值越精确

{

     

    int i; 

    double sum=0,h=(q-p)/n; 

    for (i=1;i<=n;i++) //f(p+i*h)*h就是小矩形的面积,加到sum上去。

      sum+=f(p+i*h)*h; 

    return sum;

}

int main()

{

     

      printf("(x*x)在(0,1)上定积分为%lf\n",fun(0,1,1000000));//区间数自己设越大值越精确

 

}

结果:

数学分析:

f(x)=x^2=x*x;

定积分:x*x*x/3+c(常数)

在区间(0,1)上定积分:1/3=0.333333

结果正确。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-15
积分的实质就是求面积。
0-1区间可知y是正数,也就是这部分面积都在第一区间。
那么面积就等于底乘以高除以二

(1*2)/2
所以很简单了
代码不用给了。
区间是变动的话才有可能输入一个参数,然后算积分吧。
第2个回答  2013-04-15
1、将闭区间[0, 1]等分成n份,在每一个小区间上直接计算梯形面积(上下底为(x^3)/3.0),并合并求和;
2、将闭区间[0, 1]等分成(2 * n)份,重复上述操作;
3、上述两步的结果做差,如果绝对值小于,如: 1e-6,那么输出第二步的结果;否则继续加倍等分区间重复操作本回答被提问者采纳