用C语言求定积分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言求定积分相关的知识,希望对你有一定的参考价值。

用n=4的牛顿科特斯公式求积分,求函数f(x)=exp(-x²)从一到二的积分

实际问题描述:

求定积分近似值

程序代码如下:
#include
#include
void main()

    int i,n=1000;
    float a,b,h,t1,t2,s1,s2,x;
    printf("请输入积分限a,b:");
    scanf("%f,%f",&a,&b);
    h=(b-a)/n;
    for(s1=0,s2=0,i=1;i<=n;i++)
   
        x=a+(i-1)*h;
        t1=(float)exp(-x*x/2);t2(float)=exp(-(x+h)*(x+h)/2);
        s1=s1+t1*h;        /*矩形面积累加*/
        s2=s2+(t1+t2)*h/2;        /*梯形面积累加*/
   
    printf("矩形法算得积分值:%f.\\n",s1);
    printf("梯形法算得积分值:%f.\\n",s2);

程序运行结果如下:
    矩形法算得积分值:0.855821
    梯形法算得积分值:0.855624
    由上面的比较可知,梯形法的精度要高于矩形法。

参考技术A 您好,这是辛普森积分法。
给你写了fun_1( ),fun_2(),请自己添加另外几个被积函数。
调用方法 t=fsimp(a,b,eps,fun_i);
a,b --上下限,eps -- 迭代精度要求。
#include<stdio.h>
#include<stdlib.h>
#include <math.h>
double fun_1(double x)

return 1.0 + x ;

double fun_2(double x)

return 2.0 * x + 3.0 ;


double fsimp(double a,double b,double eps, double (*P)(double))

int n,k;
double h,t1,t2,s1,s2,ep,p,x;
n=1; h=b-a;
t1=h*(P(a)+P(b))/2.0;
s1=t1;
ep=eps+1.0;
while (ep>=eps)

p=0.0;
for (k=0;k<=n-1;k++)

x=a+(k+0.5)*h;
p=p+P(x);

t2=(t1+h*p)/2.0;
s2=(4.0*t2-t1)/3.0;
ep=fabs(s2-s1);
t1=t2; s1=s2; n=n+n; h=h/2.0;

return(s2);

void main()

double a,b,eps,t;
a=0.0; b=3.141592653589793238; eps=0.0000001;
// a definite integral by Simpson Method.
t=fsimp(a,b,eps,fun_1);
printf("%g\n",t);
t=fsimp(a,b,eps,fun_2);
printf("%g\n",t);
// ...
printf("\n Press any key to quit...");
getch();

matlab求定积分和不定积分

matlab求定积分与不定积分

创建于2018-03-21 22:42

求定积分与不定积分是一件比较繁琐的事,但是我们可以借助matlab,下面与大家分享解决方法

材料/工具

matlab

求不定积分

求函数“xe^x”的不定积分

技术分享图片

 

 

 

要用到"int"命令,具体操作见下图

 

技术分享图片

 

函数“xe^x”的不定积分的结果如下

 技术分享图片

 

 

求定积分

求函数"x^2*e^x"在(0到1)上的积分

技术分享图片

 

具体操作见下图

 技术分享图片

 

函数“x^2*e^x” 在(0到1)的定积分的结果见下图

 技术分享图片

 

以上是关于用C语言求定积分的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何求定积分?

用C语言编写一个求定积分的程序

编写一个求定积分的通用函数,用它分别求以下几个积分:

C语言求函数定积分

matlab求定积分和不定积分

C语言 用矩形法计算定积分∫(0—1)sinxdx∫(-1—1)cosxdx∫(0—2)e^xdx