南通大学实验报告
南通大学实验报告
定积分与定积分
的近似计算
学院:
班级: 数师153班
学号: 1502012072
姓名: 顾阳
第一部分实验报告书解读
一、实验目的
实验主要是分析用矩阵公式,梯形公式,辛普森公式求定积分的近似值,并比较它们与定积分的近似情况。
可以先学习定积分的数值计算方法,理解定积分的定义,掌握牛顿-莱布尼茨公式。
二、实验材料
1.1定积分的数值计算
计算定积分⎰a f (x ) dx 的近似值,可将积分区间n 等分而得矩形公式
程序为
b -a b -a ] n n b ⎰a f (x ) dx ≈∑i =1f [a +(i -1)
或 b n
n ⎰a f (x ) dx ≈∑i =1f [a +i n ]n
也可用梯形公式近似计算 b b -a b -a
⎰a f (x ) dx ≈[∑i =1f (a +i b n -1b -a f (a ) +f (b ) b -a ) +] n 2n
b -a 1b -a b -a n ) +4∑i =1f (a +(i -) ) +f (a ) +f (b )] n 226n 如果要准确些,可用辛普森公式 ⎰a f (x ) dx ≈[2∑i n =-11f (a +i
1b 对于⎰0sin xdx ,矩形公式、梯形公式、辛普森公式的Mathematica 程序为
a=0;b=1;k=10;
f[x_]:=Sin[x];
d=N[Integrate[f[x],{x,a,b}],k];(计算精确值)
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];(取小区间左端点的矩形公式)
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k](取小区间中点的矩形公式)
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k]; (取小区间右端点的矩形公式)
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k]; (梯形公式) s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}]
+4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];(辛普森公式) t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5[m]}, {m,100,1000,100}]
1.2可积的条件
设f(x)=sinx,取a=0,b=1
对于⎰0sin xdx ,矩形公式、梯形公式、辛普森公式的Mathematica 程序为 1
a=0;b=1;k=10;
f[x_]:=Sin[x];
d=N[Integrate[f[x],{x,a,b}],k];(计算精确值)
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];(取小区间左端点的矩形公式)
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k](取小区间中点的矩形公式)
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k]; (取小区间右端点的矩形公式)
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k]; (梯形公式) s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];(辛普森公式) r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:= t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5[m]}, {m,100,1000,100}]
1.3牛顿-莱布尼茨公式
设函数f (x ) 在[a , b ]上连续,而且F (x ) 是f (x ) 的一个原函数,则有牛顿-莱布尼兹公式⎰a f (x ) dx =F (b ) -F (a ) 。
函数f (x ) =⎨⎧1x =0在[-1, 2]不连续、不存在原函数,但在[-1, 2]上可积;函数0x ≠0⎩
x ≤0在[-1, 2]不连续,但在[-1, 2]上可积。 x >0
⎧1x ∈Q 处处不连续、不存在原函数,在任意区间(长度大于⎩0x ∉Q b 2x ⎧g (x ) =⎨-1-1⎩2x sin x -cos x 此外函数D (x ) =⎨
0) 上不可积。
求原函数并验证牛顿-莱布尼兹公式的Mathematica 程序
f[x_]:=Sin[x];
Integrate[f(x),x](求不定积分)
F[x_]:=%(定义原函数)
d=NIntegrate[f(x),{x,a,b}](求定积分)
df=F[b]-F[a] (计算原函数的增量)
三、实验所用软件及版本
Mathematica 5.0
第二部分 实验计划
(一)定积分的数值计算
1. 程序修改
a=0;b=1;k=10;
f[x_]:=Sin[x];
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5
[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5
[m]}, {m,100,1000,100}]
利用以上程序计算,⎰dx ,⎰xdx ,⎰x 2dx ,⎰e x dx ,⎰In (1+x ) dx 并对几个公0000011111
式比较。
2. 实验思路
对以上程序,分别将sinx 的x 替换成1,x ,x 2,e x ,In(1+x)
(二)可积的条件
1. 实验思路:
(1)如果函数f(x)在区间[a,b]上连续,则f(x)在区间[a,b]上可积,反之亦然。
(2)设一连续函数,判断其是否可积。
2. 程序修改
a=0;b=1;k=10;
f[x_]:=Sin[x];
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5
[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5
[m]}, {m,100,1000,100}]
利用以上程序计算,⎰dx ,⎰xdx ,⎰x 2dx ,⎰e x dx ,⎰In (1+x ) dx 并对几个公0000011111
式比较。
(三)牛顿-莱布尼茨公式
1. 程序修改
f[x_]:=Sin[x];
Integrate[f(x),x]
F[x_]:=%
d=NIntegrate[f(x),{x,a,b}]
df=F[b]-F[a]
r=d-df
2.实验思路
(1)先对一个函数sinx 在区间[0,1]时, 运行程序计算。
(2)在考虑其他函数,y=1,y=x,y=x 2,y=e x ,y=In(1+x),
y=sign(x)在[0,1]时,进行程序计算。
第三部分 实验过程与结果
实验一 定积分的实验计算
1. 在mathmatica 上输入以下程序
a=0;b=1;k=10;
f[x_]:=Sin[x];
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5
[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5
[m]}, {m,100,1000,100}]
运行结果为:
2. 在mathmatica 上输入以下程序
a=0;b=1;k=10;
f[x_]:=1
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5
[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5
[m]}, {m,100,1000,100}]
运行结果为:
3. 在mathmatica 上输入以下程序
a=0;b=1;k=10;
f[x_]:=x
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5
[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5
[m]}, {m,100,1000,100}]
运行结果为:
4. 在mathmatica 上输入以下程序
a=0;b=1;k=10;
f[x_]:=x^2
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5[m]}, {m,100,1000,100}]
运行结果为:
5. 在mathmatica 上输入以下程序
a=0;b=1;k=10;
f[x_]:=Exp[x]
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5
[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5
[m]}, {m,100,1000,100}]
运行结果为:
6. 在mathmatica 上输入以下程序
a=0;b=1;k=10;
f[x_]:= Log[1+x]
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5
[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5
[m]}, {m,100,1000,100}]
运行结果为:
7. 实验观察结果:随着n 的增大,以及公式的更加精确性,求积分的误差d 越来越小,结果越来越准确。
实验二 可积条件
1. 以实验一的6组数据为基础,再加一组数据;
2. 在mathmatica 上输入以下程序
a=0;b=1;k=10;
f[x_]:=Sign[x]
d=N[Integrate[f[x],{x,a,b}],k];
s1[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,0,m-1}],k];
s2[m_]:=N[Sum[f[a+(i+1/2)*(b-a)/m]*(b-a)/m,{i,0,m-1}],k]
s3[m_]:=N[Sum[f[a+i*(b-a)/m]*(b-a)/m,{i,1,m}],k];
s4[m_]:=N[Sum[(f[a+i*(b-a)/m]+f[a+(i+1)*(b-a)/m])/2*(b-
a)/m,{i,0,m-1}],k];
s5[m_]:=N[(b-a)/m/6*((f[a]+f[b])+2*Sum[f[a+i*(b-a)/m],{i,1,m-1}] +4*Sum[f[a+(i-1/2)*(b-a)/m],{i,1,m}]),k];
r1[m_]:=d-s1[m];r2[m_]:=d-s2[m];r3[m_]:=d-s3[m];r4[m_]:=d-s4[m];r5
[m_]:=d-s5[m];
t=Table[{s1[m],r1[m],s2[m],r2[m],s3[m],r3[m],s4[m],r4[m],s5[m],r5
[m]}, {m,100,1000,100}]
运行结果为:
3. 实验观察结果:连续函数一定可积,但是非连续函数不一定不可积 实验三 牛顿-莱布尼茨公式
1. 在mathmatica 上输入以下程序
a=0;b=1;
f[x_]:=x;
Integrate[f[x],x]
F[x_]=%
d=NIntegrate[f[x],{x,a,b}]
df=F[b]-F[a]
r=d-df
运行结果为
2. 在mathmatica 上输入以下程序
a=0;b=1
f[x_]:=1;
Integrate[f[x],x]
F[x_]:=%
d=NIntegrate[f[x],{x,a,b}]
df=F[b]-F[a]
r=d-df
运行结果为
3. 在mathmatica 上输入以下程序
a=0;b=1
f[x_]:=x;
Integrate[f[x],x]
F[x_]:=%
a=0;b=1
d=NIntegrate[f[x],{x,a,b}]
df=F[b]-F[a]
r=d-df
运行结果为
4. 在mathmatica 上输入以下程序
a=0;b=1
f[x_]:=x^2;
Integrate[f[x],x]
F[x_]:=%
d=NIntegrate[f[x],{x,a,b}]
df=F[b]-F[a]
r=d-df
运行结果为
5. 在mathmatica 上输入以下程序
a=0;b=1
f[x_]:=Exp[x];
Integrate[f[x],x]
F[x_]:=%
d=NIntegrate[f[x],{x,a,b}]
df=F[b]-F[a]
r=d-df
运行结果为
6. 在mathmatica 上输入以下程序
a=0;b=1
f[x_]:=Log[1+x];
Integrate[f[x],x]
F[x_]:=%
d=NIntegrate[f[x],{x,a,b}]
df=F[b]-F[a]
r=d-df
运行结果为
7. 在mathmatica 上输入以下程序
a=0;b=1
f[x_]:=Sign[x]
Integrate[f[x],x]
F[x_]:=%
d=NIntegrate[f[x],{x,a,b}]
df=F[b]-F[a]
r=d-df
运行结果为
8. 实验观察结果: 当f(x)连续时,牛顿-莱布尼茨公式成立
第四部分 实验总结
1 .将n 无限细分时,也可用矩形公式,梯形公式,辛普森公式求定积分的近似值,其中他们的精确度依次增加。
2. 如果f(x)是连续函数,则f(x)在区间[a,b]上可积,反之f(x)在区间[a,b]可积,但f(x)不一定连续
3. 莱布尼茨公式成立,即若函数f(x)在[a,b]上连续,而且F (x )是f(x)的一个原函数,则有 a f(x)dx=F(b)-F(a).
b