实验三 一元函数积分学 实验目的:加深理解定积分的概念,深入理解积分理论中分割、近似、求和、取极限的思想方法,初步了解定积分的近似计算方法
定积分的概念 由定义计算定积分 在定积分的定义中,划分积分区间的方法与在每个小区间上取的点 都是任意的,如果当分划的每个小区间长度的最大值 趋于0时,它的黎曼和存在极限,此极限值即为我们所定义的一个函数在一个指定区间上的定积分。
实验1 利用定义计算积分 下面的程序在区间[0,1]中插入n-1个分点(可以均匀的产生,也可以借助随机数产生),在一定意义下取得了任意分点与任意的 计算 即可求得 的近似值 提高精度的方法是增加分点。
实验1 利用定义计算积分 Clear[f,x]; f[x_]:=x^2; a=0;b=1;n=20; Array[x,{641}];x[0]=a; For[k=1,k<=6,k++,x[n]=b;s=0; Do[x[i]=(i+Random[ ])*(b-a)/n,{i,1,n-1}]; For[i=0,i<n,i++,delxi=x[i+1]-x[i]; c=x[i]+delxi*Random[]; s=s+f[c]*delxi]; Print["n=",n," s=",s]; n=n*2] 指定区间[a,b]及初始区间数 预先生成能保存最多区间分点的数组 分划细分k次 近似生成随机区间分点 每个小区间的长度 每个小区间内随机取值 累加求和,注意保存和的变量要进行初始化 分点加密,再计算
实验1 利用定义计算积分 由于分割的任意性及 的任意性,即使n固定,每次运行所得的结果也可能不同 练习1 利用定义计算
从图形观察积分和与定积分的关系 定积分 在几何上表示由曲线y=f(x),直线x=a,x=b及x轴所围成的曲边梯形的面积 积分和 在几何上表示n个小矩形的面积和,其中第i个小矩形的高为 ,宽为 实验2 从图形上观察 的积分和与定积分的关系
从图形观察积分和与定积分的关系 解 设曲边梯形由y=sinx,y=0,x=Pi/2为界。 采用分划的方法,用小区间上矩形的面积来逼近曲边梯形的面积。 当分划越来越细时,得到的小矩形面积之和与曲边梯形的面积S之间的差越来越小。当每个小区间缩向一点时,误差的极限为0
Clear[i,n,a,b];Clear[f,c,d,x,s]; regularpartition[a_,b_,n_]:=P=Block[{i},Table[N[a+(b-a)*i/n],{i,0,n}]]; randompartition[a_,b_,n_]:=P=Union[Table[Random[Real,{N[a],N[b]}],{n-1}],{N[a],N[b]}]; s[f_,c_,d_,x_,choice_]:=If[c<=x<=d,f[(1-choice)*c+choice*d],0]; riemann[f_,a_,b_,n_,choice_]:=N[(b-a)*Sum[f[(1-choice)*(a+(i-1)*(b-a)/n)+choice*(a+i (b-a)/n)],{i,1,n}]/n]; arbitraryriemann[f_,P_,choice_]:=Block[{i},Sum[(Union[N[P]][[i+1]]-Union[N[P]][[i]])*f[(1-choice)*Union[N[P]][[i]]+choice*Union[N[P]][[i+1]]],{i,1,Length[P]-1}]]; er[f_,a_,b_,n_,choice_]:=Abs[NIntegrate[f[x],{x,a,b}]-riemann[f,a,b,b,choice]]; ear[f_,P_,choice_]:=Block[{x},Abs[NIntegrate[f[x],{x,Min[N[P]],Max[N[P]]}]-arbitraryriemann[f,P,choice]]]; viewapprox[f_,P_,choice_]:=(one=Block[{x},Plot[f[x],{x,Min[N[P]]-0.1,Max[N[P]]+0.1},DisplayFunction->Identity]]; two=Block[{i,x},Plot[Release[Table[s[f,Union[N[P]][[i]],Union[N[P]][[i+1]],x,choice],{i,Length[P]-1}]],{x,Min[N[P]]-0.1,Max[N[P]]+0.1},PlotRange->All,PlotPoints->50,DisplayFunction->Identity]]; Block[{x},Show[two,one,PlotLabel->ToString[Length[P]-1]<>"分划 最大分划 "<>ToString[N[Norm[P]]]<>If[Chop[ear[f,P,choice]]==0,"无误差","误差"<>ToString[ear[f,P,choice]]],PlotRange->All,DisplayFunction->$DisplayFunction]]); Do[viewapprox[Sin,regularpartition[0,Pi,2^n],0.5],{n,2,6}]; viewapprox[Sin,randompartition[0,Pi,16],1]; Do[viewapprox[ArcTan,randompartition[0,Pi,2^n],1],{n,2,6}];
Clear[i,n,a,b];Clear[f,c,d,x,s]; regularpartition[a_,b_,n_]:=P=Block[{i},Table[N[a+ (b-a)*i/n],{i,0,n}]]; randompartition[a_,b_,n_]:=P=Union[Table[Random[Real,{N[a],N[b]}],{n-1}],{N[a],N[b]}]; s[f_,c_,d_,x_,choice_]:=If[c<=x<=d,f[(1-choice)*c+choice*d],0]; riemann[f_,a_,b_,n_,choice_]:=N[(b-a)*Sum[f[(1-choice)*(a+(i-1)*(b-a)/n)+choice*(a+i (b-a)/n)],{i,1,n}]/n]; arbitraryriemann[f_,P_,choice_]:=Block[{i},Sum[(Union[N[P]][[i+1]]-Union[N[P]][[i]])*f[(1-choice)*Union[N[P]][[i]]+choice*Union[N[P]][[i+1]]],{i,1,Length[P]-1}]]; 生成均匀的区间分划 生成非均匀分划 计算f在小区间的取样点上的值 计算均匀分划的黎曼和 计算非均匀分划的黎曼和
er[f_,a_,b_,n_,choice_]:=Abs[NIntegrate[f[x],{x,a,b}]-riemann[f,a,b,b,choice]]; ear[f_,P_,choice_]:=Block[{x},Abs[NIntegrate[f[x],{x,Min[N[P]],Max[N[P]]}]-arbitraryriemann[f,P,choice]]]; viewapprox[f_,P_,choice_]:=(one=Block[{x},Plot[f[x],{x,Min[N[P]]-0.1,Max[N[P]]+0.1},DisplayFunction-> Identity]]; two=Block[{i,x},Plot[Release[Table[s[f,Union[N[P]][[i]],Union[N[P]][[i+1]],x,choice],{i,Length[P]-1}]],{x,Min[N[P]]-0.1,Max[N[P]]+0.1},PlotRange-> All,PlotPoints->50,DisplayFunction->Identity]]; 均匀分划下黎曼和与定积分值之误差 非均匀分划下黎曼和与定积分值之误差 图形显示
在区间[0,Pi]上图示均匀分划下Sinx的黎曼和,从4个区间细分到64个区间 Do[viewapprox[Sin,regularpartition[0,Pi,2^n],0.5],{n,2,6}]; viewapprox[Sin,randompartition[0,Pi,16],1]; Do[viewapprox[ArcTan,randompartition[0,Pi,2^n],1],{n,2,6}]; 在区间[0,Pi]上图示均匀分划下Sinx的黎曼和,从4个区间细分到64个区间 在区间[0,Pi]上图示非均匀分划下Sinx的黎曼和,16个子区间 在区间[0,Pi]上图示非均匀分划下ArcTanx的黎曼和,从4个区间细分到64个区间
3.1.2 从图形观察积分和与定积分的关系 N=4
N=8 N=16
N=32 N=64
3.1.2 从图形观察积分和与定积分的关系 练习2 从图形上观察
3.1.3 用定义计算定积分的简化 设函数f(x)在每个小区间[xi-1,xi]上有最值,分别记为Mi(最大值)和mi(最小值),则有 定义上积分 下积分 若用积分和近似积分值,其产生的误差不超过上、下积分和之差。 当 时, 和 的极限存在且相等,则S的极限即定积分也存在,且等于上积分或下积分的极限
3.1.3 用定义计算定积分的简化 实验3 利用上积分和、下积分和计算 函数f(x)=3x^2 在区间[0,1]上是单调增加的,故在每个小区间[xi-1,xi]上,最大值Mi=f(xi) ,最小值mi=f(xi-1),于是 实验结果表明,只要分割点充分多,上和与下和 的差可任意小
Clear[f,x,a,b]; f[x_]:=3 x^2;a=0;b=1;n=0; g1=Plot[f[x],{x,a,b},PlotStyle->RGBColor[1,0,0]]; For[j=3,j<=100,j*=2;n=j;tt1={};tt2={};supper=0;slower=0; For[i=0,i<n,i++,x1=a+(b-a)*i/n;x2=x1+(b-a)/n; supper=supper+f[x2]/n;slower=slower+f[x1]/n; tt1=Append[tt1,Graphics[{RGBColor[0,0,1],Rectangle[{x1,0},{x2,f[x2]}]}]]; tt2=Append[tt2,Graphics[{RGBColor[0,1,0],Rectangle[{x1,f[x1]},{x2,0}]}]]]; a0="upper-slower="<>ToString[N[supper-slower]]; a1="approximation is"<>ToString[(supper+slower)/2.]; aa=a0<>a1; g2=Graphics[Text[aa,{0.5,3.1}]]; Show[g1,g2,tt1,tt2,DisplayFunction->$DisplayFunction];] Clear[f,x,a,b];f[x_]:=3*x^2;a=0;b=1;n=500; For[j=10,j£1000,j*=2;n=j;supper=0;slower=0; supper=supper+f[x2]/n;slower=slower+f[x1]/n;]; Print["when the number of sub-interval is=",n,"approximation is",(supper+slower)/2.,"supper-slower=",N[supper-slower]];]
3.1.3 用定义计算定积分的简化 当定积分存在时,所有任取的积分和当λ→0 时的极限都相同,此时可以选择较简单的划分与简单的 一般地,将区间等分,且让小区间的某端点作为 这样积分和便成为 或
3.1.3 用定义计算定积分的简化 实验4 用上两式计算定积分 实验4 用上两式计算定积分 因为被积函数f(x)=x在[0,M]上单调增加,故上两式确定的分别是积分的下积分和与上积分和。
3.1.3 用定义计算定积分的简化 Clear[f, x]; n = 1; k = 50000; a = 0.;f[x_] = x^n; For[M = 1, M < 11, M++, b = M; s =Sum[f[a + (b - a)*i/k]*(b - a)/k, {i, 1, k}]; s1 =Sum[f[a + (b - a)*(i - 1)/k]*(b - a)/k, {i, 1, k}]; e = Abs[s - s1]; Print[M," ", s," ", s1," ", e," ",(s + s1)/2]]
3.1.3 用定义计算定积分的简化 M 上和 下和 |上和-下和| (上和+下和)/2 1 0.50001 0.49999 0.00002 0.5 2 2.00004 1.99996 0.00008 2. 3 4.50009 4.49991 0.00018 4.5 4 8.00016 7.99984 0.00032 8. 5 12.5003 12.4998 0.0005 12.5 6 18.0004 17.9996 0.00072 18. 7 24.5005 24.4995 0.00098 24.5 8 32.0006 31.9994 0.00128 32. 9 40.5008 40.4992 0.00162 40.5 10 50.001 49.999 0.002 50.
3.1.3 用定义计算定积分的简化 从计算的结果可得,若用上积分和与下积分和的均值 作为定积分的近似值,结果会更合理 从计算的结果可得,若用上积分和与下积分和的均值 作为定积分的近似值,结果会更合理 将第一列的M值平方,将得到1,4,16,64,100。这些值刚好是最后一列相应数的两倍,也即最后一列数与第一列数之间近似满足
3.1.3 用定义计算定积分的简化 练习3 当M为一般实数时,近似计算定积分 并验证近似值与M之间是否满足函数关系 练习4 用积分和近似计算定积分 ,其中n为自然数,将结果填入下表中,并寻找近似值与参数M,n之间的函数关系
M n 近似值与n的关系 1 2 3 4 5 6 -3 -2 -1 近似值与M的关系
练习5 用积分和计算定积分 ,将结果填入下表,并寻找积分值与n之间的关系 -3 -2 1 2 3 近似值与n的关系 积分值误差
实验5 画出变上限函数 及函数 的图形 f1[x_]:=Integrate[t*Exp[t^2],{t,0,x}]; f2[x_]:=x*Exp[x^2]; g1=Plot[f1[x],{x,0,3},PlotStyle->RGBColor[1,0,0]] g2=Plot[f2[x],{x,0,3},PlotStyle->RGBColor[0,0,1]] Show[g1,g2]
Integrate Integrate[f,x]:计算不定积分 Integrate[f,{x,min,max}]:计算定积分 NIntegrate[f,{x,a,b}]:求数值积分
3.2 定积分近似计算的梯形法 在数值计算中,用前面的两个公式近似定积分的方法称为矩形法,这是因为这两个式子在几何上表示一些矩形面积的和(或者说在小区间上用常数近似函数)。 可不可以将小区间上的函数近似认为是线性函数呢 最简单的方法是用连接函数在小区间两个端点处的值的线段构成的梯形的面积来近似曲边梯形的面积
3.2 定积分近似计算的梯形法 在近似计算中常用下式来计算定积分 它是 与 的和
3.2 定积分近似计算的梯形法 实验6 用梯形法近似计算定积分
3.2 定积分近似计算的梯形法 f[x_] := Exp[x]; a = 0; b = 1; s0 = 1.; s1 = 0; n = 20; m = 6; While[Abs[s0 - s1] > 10^(-m), s1 = s0; s0 = N[Sum[f[a + i*(b - a)/n]*(b - a)/n, {i, 0, n - 1}] + Sum[f[a + i*(b - a)/n]*(b - a)/n, {i, 1, n}]]/2.; n = n*2;]; Print["s0=",s0] 思考一下这里的While循环的循环条件的含义。
3.2 定积分近似计算的梯形法 练习6 提高计算精度(加密分点),根据结果归纳分析 与e之间的关系 练习7 用梯形法近似计算定积分 ,分析结果与Pi的关系。
3.3 定积分的应用 实验7 平面曲线所围成图形的面积 设 和 计算区间[0,4]上两曲线所围成的平面图形的面积
根据图形使用FindRoot函数(第六章介绍)计算两曲线的交点 使用NIntegrate函数(第九章介绍)计算两条曲线间所围面积的数值积分 实验8 平面曲线所围成图形的面积 Clear[f,g];f[x_]=Exp[-(x-2)^2 Cos[Pi x]];g[x_]=4 Cos[x-2]; Plot[{f[x],g[x]},{x,0,4},PlotStyle->{RGBColor[1,0,0],RGBColor[0,0,1]}]; FindRoot[f[x]==g[x],{x,1.06}] FindRoot[f[x]==g[x],{x,2.93}] NIntegrate[g[x]-f[x],{x,1.06258,2.93742}] 图形显示 根据图形使用FindRoot函数(第六章介绍)计算两曲线的交点 使用NIntegrate函数(第九章介绍)计算两条曲线间所围面积的数值积分
3.3 定积分的应用 练习8 设 和 计算两曲线所围成的平面图形的面积
3.3 定积分的应用 实验8 平面曲线的弧长 设 计算 与 两点间曲线的弧长 区间[a,b]上曲线y=f(x)的弧长公式
3.3 定积分的应用 Clear[f];f[x_]=Sin[x+x*Sin[x]]; 3.3 定积分的应用 Clear[f];f[x_]=Sin[x+x*Sin[x]]; Plot[f[x],{x,0,2 Pi},PlotStyle->RGBColor[1,0,0]]; NIntegrate[Sqrt[1+f'[x]^2],{x,0,2 Pi}] 试一试若f[x]=Sin[1/x],则曲线在[0,2Pi]上的长度为多少?
3.3 定积分的应用 练习9 设 计算曲线f(x)在区间[4,5]上的弧长
3.3 定积分的应用 实验9 旋转体的体积 计算由 和 所围成的图形分别绕x轴、y轴旋转所得立体的体积 解:绕x轴旋转所得旋转体的体积 3.3 定积分的应用 实验9 旋转体的体积 计算由 和 所围成的图形分别绕x轴、y轴旋转所得立体的体积 解:绕x轴旋转所得旋转体的体积 绕y轴旋转所得旋转体的体积
3.3 定积分的应用 Clear[f];f[x_]=x^2*Sin[x]; 3.3 定积分的应用 Clear[f];f[x_]=x^2*Sin[x]; Plot[f[x],{x,0,Pi},PlotStyle->RGBColor[1,0,0]]; Integrate[Pi*f[x]^2,{x,0,Pi}] Integrate[2*Pi*x*f[x],{x,0,Pi}]
3.3 定积分的应用 练习10 计算由 和x=1,x=5,y=0所围成的图形绕x轴旋转所得立体的体积