数学实验第1次作业差值与数值积分.docx
《数学实验第1次作业差值与数值积分.docx》由会员分享,可在线阅读,更多相关《数学实验第1次作业差值与数值积分.docx(12页珍藏版)》请在冰豆网上搜索。
![数学实验第1次作业差值与数值积分.docx](https://file1.bdocx.com/fileroot1/2023-4/21/4a5bcc2b-541f-487a-862b-3181ab8a653a/4a5bcc2b-541f-487a-862b-3181ab8a653a1.gif)
数学实验第1次作业差值与数值积分
插值与数值积分
——大学数学实验报告
一实验目的
1、掌握用MATLAB计算拉格朗日、分段线性、三次样条三种插值的方法,改变节点的数目,对三种插值结果进行初步分析。
2、掌握用MATLAB及梯形公式、辛普森公式计算数值积分。
3、通过实例学习用插值和数值积分解决实际问题。
二实验内容
预备:
编制计算拉格朗日插值以及分段线性插值的M文件,对于数值给出的函数,编制用辛普森公式计算定积分的程序,命名为simp.m文件。
程序编制如下:
(1)拉格朗日插值:
(2)分段线性插值:
(3)辛普森公式:
(4)梯形公式:
第一题:
对于下面的函数,在n个节点上(n不要太大,如5-11)用拉格朗日、分段线性、三次样条三种插值方法,计算m个插值点的函数值(m值要适中,例如50-100)。
通过数值和图形输出,将三种插值结果与精确值进行比较。
适当增加n,再作比较,由此作初步分析。
该函数为
初步解决:
设定初值为n=5,m=50,分别用三种计算插值的方法计算,数据如下所示。
并将三个图像与精确值的图像绘制在一张图上以作比较。
节点为x=linspace(-1,1,5),即:
(-1,0),(-0.5,0.866),(0,1),(0.5,0.866),(1,0)。
插值点为(除开-1,0,1之外为50个插值点):
X0=linspace(-1,1,53),即:
数据值如下面几张图所示:
精确值:
拉格朗日插值:
分段线性插值:
三次样条插值:
下面将三种插值与精确值在同一张图中表示出来:
在Command中输入:
plot(x0,y1,x0,y2,x0,y3,x0,y4)%四条曲线在同一张图中
由图中可以看出,由于n和m的值较小,所以除了几个节点意外,误差均比较大,而这其中又数分段线性插值的误差最大,三次样条插值次之,拉格朗日插值误差最小。
增大n与m的值,令n=8,m=83,做出图形后放大其中一部分如下:
再次改变n和m的值,令n=8,m=103,做出图形后放大其中一部分如下:
再次改变n和m的值,令n=11,m103,做出图形后放大其中一部分如下:
再增大n的值,m=103,使n=20,30,作出部分图形如下:
n=20:
n=30:
由图中可以看出,随着n的值的提高,各种插值方法与精确值已经接近吻合,说明在n值很大的时候,三种插值方法都是可行的。
但是不可忽略的是,各种差值方法之间还是有很大的差异,拉格朗日插值的精度较高,三次样条插值的精度次之,而分段线性插值是相对来说精度最差的。
第二题:
对于下面的函数,用梯形、辛普森和Gauss-Lobatto三种方法计算积分。
改变步长(对梯形),改变精度要求(对辛普森和Gauss-Lobatto),进行比较、分析。
函数为
初步解决:
首先通过计算确定精确值。
于是带入题目中的数据可以求得:
精确值
。
利用MATLAB:
通过三种不同的求数值积分的方法求该积分值。
在Command中输入:
x0=linspace(0,2,8);
y0=(1+x0.^2).^0.5;
z=sqrt(5)+log(sqrt(2+sqrt(5)));
z1=simp(x0,y0);%辛普森公式计算
z1-z%误差
z2=txqj(x0,y0);%梯形求积公式计算
z2-z%误差
z3=quadl(‘sqrt(1+x.^2)’,0,2);%自适应Gauss-Lobatto公式计算
z3-z%误差
屏幕上的输出如下:
z1=2.7571,ans=-0.2008;
z2=2.9640,ans=0.0061;
z3=2.9579,ans=5.0543e-007;
初步结论:
从第一次的输出结果可以看出,辛普森公式求出的值的误差相对较大,梯形公式的误差次之,但是Gauss-Lobatto公式的误差更小,更加精确。
(1)下面改变梯形公式的步长,将n设定为50,100,500。
n
z2
ans(误差)
50
2.9580
1.2417e-004
100
2.9579
3.0420e-005
500
2.9579
3.0420e-005
从其中可以看出,当n的值逐渐增大,得到的数值也更加精确,而当n的值达到一定程度之后,得到的值也趋于稳定,不会再精确。
(2)下面改变辛普森公式的精度要求,此处为步长,将n设定为50,100,500,1000。
n
z1
ans(误差)
50
2.9277
-0.0302
100
2.9429
-0.0150
500
2.9549
-0.0030
1000
2.9564
-0.0015
从结果可以看出,增加了步长以后,误差随之减小,但是误差相对来说还是偏大,即使n值很大了,到了1000左右,误差的数量级还是停留在10-3左右,所以辛普森公式计算数值积分误差较大。
(3)下面改变Gauss-Lobatto的精度要求。
将tol设定为10-6,10-8,10-10,10-12。
tol
z3
ans(误差)
10-6
2.9579
5.0543e-007
10-8
2.9579
4.1744e-014
10-10
2.9579
4.1744e-014
10-12
2.9579
-7.1054e-015
从结果可以看出,自适应Gauss-Lobatto公式计算得数值已经十分精确,当逐渐提高精度要求之后,误差会越来越小,逐渐接近精确值。
第三题:
如书上图(P66T11)是一个欧洲国家的地图,为了算出它的国土面积,首先是对地图作如下测量:
以由西向东方向为x轴,由南到北方向为y轴,选择方便的原点,并将从最西界点到最东界点在x轴上的区间适当地划分为若干段,在每个分点的y方向测出南边界点和北边界点的y坐标y1和y2,,这样就得到了如下表所示的数据。
地图边界点数据
x
7.0
10.5
13.0
17.5
34.0
40.5
44.5
48.0
56.0
61.0
68.5
76.5
80.5
91
y1
44
45
47
50
50
38
30
30
34
36
34
41
45
46
y2
44
59
70
72
93
100
110
110
110
117
118
116
118
118
x
96.0
101.0
104.0
106.5
111.5
118.0
123.5
136.5
142.0
146.0
150.0
157.0
158.0
y1
43
37
33
28
32
65
55
54
52
50
66
66
68
y2
121
124
121
121
121
122
116
83
81
82
86
85
68
根据地图的比例我们知道18mm相当于40km,试由测量数据计算该国国土的近似面积,与它的精确值41288km2作比较。
初步解决:
直接利用MATLAB编制程序计算面积。
直接在Command中输入以下内容:
得到结果:
面积约为4.2414e+04m2,与实际值的误差约为1125.6km2。