小菜鸟C语言随机投点法求积分求大神解惑
基本定义
成都创新互联是一家专业提供张家界企业网站建设,专注与成都做网站、成都网站设计、HTML5建站、小程序制作等业务。10年已为张家界众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
设F(x)为函数f(x)的一个原函数,我们把函数f(x)的所有原函数F(x)+C(C为任意常数)叫做函数f(x)的不定积分(indefinite integral)。
记作∫f(x)dx。其中∫叫做积分号(integral sign),f(x)叫做被积函数(integrand),x叫做积分变量,f(x)dx叫做被积式,C叫做积分常数,求已知函数的不定积分的过程叫做对这个函数进行积分。
积分
由定义可知:
求函数f(x)的不定积分,就是要求出f(x)的所有的原函数,由原函数的性质可知,只要求出函数f(x)的一个原函数,再加上任意的常数C,就得到函数f(x)的不定积分。
也可以表述成,积分是微分的逆运算,即知道了导函数,求原函数。
主要分类
不定积分
众所周知,微积分的两大部分是微分与积分。微分实际上是函数的微小的增量,函数在某一点的导数值乘以自变量以这点为起点的增量,得到的就是函数的微分;它近似等于函数的实际增量(这里主要是针对一元函数而言)。而积分是已知一函数的导数,求这一函数。所以,微分与积分互为逆运算。
实际上,积分还可以分为两部分。第一种,是单纯的积分,也就是已知导数求原函数,而若F(x)的导数是f(x),那么F(x)+C(C是常数)的导数也是f(x),也就是说,把f(x)积分,不一定能得到F(x),因为F(x)+C的导数也是f(x),C是任意的常数,所以f(x)积分的结果有无数个,是不确定的,我们一律用F(x)+C代替,这就称为不定积分。
用公式表示是:f'(x)=g(x)-∫g(x)dx=f(x)+c
定积分
而相对于不定积分,还有定积分。所谓定积分,其形式为∫[a:b]f(x)dx 。之所以称其为定积分,是因为它积分后得出的值是确定的,是一个数,而不是一个函数。
积分题目
微积分的最初发展中,定积分即黎曼积分。用自己的话来说,就是把直角坐标系上的函数的图象用平行于y轴的直线和x轴把其分割成无数个矩形,然后把某个区间[a,b]上的矩形的面积累加起来,所得到的就是这个函数的图象在区间[a,b]的面积。实际上,定积分的上下限就是区间的两个端点a、b。而实变函数中,可以利用测度论将黎曼积分推广到更加一般的情况,如勒贝格积分.
用公式表示是:∫ [a,b]f(x)dx=lim(n-∞)∑(0-n)a+f(ti)*(b-a)/n
两者关系
我们可以看到,定积分的本质是把图象无限细分,再累加起来,而积分的本质是求一个函数的原函数。它们看起来没有任何的联系,那么为什么定积分写成积分的形式呢?
定积分与积分看起来风马牛不相及,但是由于一个数学上重要的理论的支撑,使得它们有了本质的密切关系。把一个图形无限细分再累加,这似乎是不可能的事情,但是由于这个理论,可以转化为计算积分。这个重要理论就是大名鼎鼎的牛顿-莱布尼兹公式,它的内容是:
若F'(x)=f(x)
那么∫[a:b]f(x)dx =F(a)-F(b)
但是这里x出现了两种意义,一是表示积分上限,二是表示被积函数的自变量,但定积分中被积函数的自变量取一个定值是没意义的。虽然这种写法是可以的,但习惯上常把被积函数的自变量改成别的字母如t,这样意义就非常清楚了:
Φ(x)=∫[a:b]f(t)dt
牛顿-莱布尼兹公式用文字表述,就是说一个定积分式的值,就是上限在原函数的值与下限在原函数的值的差。
正这个理论揭示了积分与黎曼积分本质的联系,可见其在微积分学乃至整个高等数学上的重要地位,因此,牛顿-莱布尼兹公式也被称作微积分基本定理。
C语言求指定函数定积分的程序
#include stdio.h
#define RES (1e-6)
double integ(double a,double b,double f(double))
{
double sum;
for(sum=0;ab;a+=RES)
{
sum+=f(a)*RES;
}
return sum;
}
double f(double x)
{
return x*x;
}
int main()
{
printf("%lf\n",integ(0,0.1,f));
return 0;
}
用C语言求给定函数给定定义域的定积分
#include stdio.h
#include math.h
double f1( double x )
{
return 1 / ( 1 + 4 * x * x );
}
double f2( double x )
{
return ( log(x+1) ) / ( 1 + x*x) ;
}
double jifen( double a, double b, int n, double (*f)(double) )
{
double h = (b-a)/2;
double s = 0.0;
int i;
for( i=0; in; i++ )
s = s + 0.5 * ( f(a+i*h) + f(a+(i+1)*h) ) * h;
return s;
}
int main()
{
double a, b, s;
printf( "函数1 f(x) = 1/(1+4x^2) 区间[-1,1]定积分:%f\n", jifen( -1, 1, 1000, f1) );
printf( "函数2 f(x) = ln(1+x)/(1+x^2) 区间[0,1]定积分:%f\n", jifen( 0, 1, 1000, f2) );
}
c语言求积分
#includestdio.h
#include math.h
double integral(double a,double b,int n)
{
double x,y,dx,sum=0.0;
int i;
dx = (b-a) /(double) n;
for (i=0;i=n;i++){
y = sin(a+dx * i);
sum = sum + y;
}
y = sum / (double) (n+1) * (b-a);
return y;
}
void main()
{
double a,b;
int n;
printf("Enter a,b,n\n");
scanf("%lf %lf %d",a,b,n);
printf("%lf", integral(a,b,n) );
}
文章标题:用c语言求函数数积分 c语言求积分
文章出自:http://scyingshan.cn/article/dddciij.html