西南交大数值分析上机报告Word文档下载推荐.docx
- 文档编号:6831520
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:22
- 大小:107.91KB
西南交大数值分析上机报告Word文档下载推荐.docx
《西南交大数值分析上机报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《西南交大数值分析上机报告Word文档下载推荐.docx(22页珍藏版)》请在冰点文库上搜索。
并以下面的线性方程组为例进行计算,讨论所得到的计算结果是否与理论一致。
(1)
(2)
(3)
1.计算与分析
(1)利用选列主元的Gauss消元法编写MATLAB程序,解上述5个方程组。
结果如表1.1所示:
表1.1Gauss消元法计算结果
x
(1)
x
(2)
x(3)
x(4)
x(5)
x1
-0.72727273
36.36363636
5.76923077
32.69230769
-0.63636364
x2
0.80808081
-2.07070707
0.76923077
7.69230769
1.54545455
x3
0.25252525
114.04040404
-4.23076923
-42.30769231
Gauss消元法为直接解法,从消元的过程可知其结果为精确解,误差来源于机器误差,即计算机内部的存储精度。
MATLAB用二进制双精度浮点格式来表达一个数,其计算结果至少可以有12位十进制有效数字的可信度。
(2)利用Gauss-Seidel法编写MATLAB程序,用||x(k)-x(k-1)||<
ε作为控制迭代的终止条件,ε取10-6。
方程组
(1)系数矩阵A1为行对角占优阵,故Gauss-Seidel法收敛。
方程组
(2)系数矩阵A2为对称正定阵,故Gauss-Seidel法收敛。
方程组(3)的Gauss-Seidel迭代矩阵为
,其特征值为λ1=0,λ2=-21,ρ(B)=21>
1,故Gauss-Seidel迭代发散。
将方程组的两个方程顺序对换一下,变为
,则其系数矩阵为行对角占优阵,Gauss-Seidel迭代收敛。
Gauss-Seidel迭代法计算结果如表1.2所示:
表1.2Gauss-Seidel迭代计算结果
迭代次数
x10
1
15
x1k
-0.72727289
0.80808085
0.25252512
x20
1
20
x2k
36.36363650
-2.07070701
114.04040413
x30
45
x3k
5.76923210
0.76922890
-4.23076879
x40
51
x4k
32.69230977
7.69230745
-42.30769378
x50
6
x5k
-0.63636362
1.54545454
二、微分方程初值问题
给定初值问题
(精确解为
),用Runge-Kutta4阶算法按步长
求解,分析其中遇到的现象及问题。
编写4级4阶的Runge-Kutta法MATLAB程序。
取步长0.2,计算结果列于表2.1中。
表中y(xk)是当x=xk时的准确值,yk是由Runge-Kutta法得到的当x=xk时的值。
表2.1Runge-Kutta法数值计算结果
步长0.2
0.2
5
1.83156E-02
0.4
25
3.35463E-04
0.6
125
6.14421E-06
0.8
625
1.12535E-07
1.0
3125
2.06115E-09
1.2
15625
3.77513E-11
1.4
78125
6.91440E-13
1.6
390625
1.26642E-14
1.8
1953125
2.31952E-16
2.0
9765625
4.24835E-18
从表中可以看出步长取0.2时Runge-Kutta法是发散的。
4级4阶Runge-Kutta法的绝对稳定区间为(-2.78,0),对于实验方程,λh=-20h,当h=0.2时λh=-4,故Runge-Kutta法无法收敛。
步长取0.1,0.05时,λh分别为-2,-1,位于绝对稳定区间,预计Runge-Kutta法收敛。
表2.2列出了步长为0.1和0.05时Runge-Kutta法的计算结果和误差
表2.2Runge-Kutta法数值计算结果
步长0.1
步长0.05
0.1
3.33333E-01
1.35335E-01
-1.97998E-01
0.05
3.75000E-01
3.67879E-01
-7.12056E-03
1.11111E-01
-9.27955E-02
0.10
1.40625E-01
-5.28972E-03
0.3
3.70370E-02
2.47875E-03
-3.45583E-02
0.15
5.27344E-02
4.97871E-02
-2.94731E-03
1.23457E-02
-1.20102E-02
0.20
1.97754E-02
-1.45975E-03
0.5
4.11523E-03
4.53999E-05
-4.06983E-03
0.25
7.41577E-03
6.73795E-03
-6.77824E-04
1.37174E-03
-1.36560E-03
0.30
2.78091E-03
-3.02162E-04
0.7
4.57247E-04
8.31529E-07
-4.56416E-04
0.35
1.04284E-03
9.11882E-04
-1.30961E-04
1.52416E-04
-1.52303E-04
0.40
3.91066E-04
-5.56034E-05
0.9
5.08053E-05
1.52300E-08
-5.07900E-05
0.45
1.46650E-04
1.23410E-04
-2.32400E-05
1.69351E-05
-1.69330E-05
0.50
5.49937E-05
-9.59374E-06
1.1
5.64503E-06
2.78947E-10
-5.64475E-06
0.55
2.06226E-05
1.67017E-05
-3.92092E-06
1.88168E-06
-1.88164E-06
0.60
7.73348E-06
-1.58927E-06
1.3
6.27225E-07
5.10909E-12
-6.27220E-07
0.65
2.90006E-06
2.26033E-06
-6.39727E-07
2.09075E-07
-2.09074E-07
0.70
1.08752E-06
-2.55993E-07
1.5
6.96917E-08
9.35762E-14
-6.96916E-08
0.75
4.07820E-07
3.05902E-07
-1.01918E-07
2.32306E-08
-2.32306E-08
0.80
1.52933E-07
-4.03975E-08
1.7
7.74352E-09
1.71391E-15
-7.74352E-09
0.85
5.73498E-08
4.13994E-08
-1.59504E-08
2.58117E-09
-2.58117E-09
0.90
2.15062E-08
-6.27618E-09
1.9
8.60390E-10
3.13913E-17
-8.60390E-10
0.95
8.06481E-09
5.60280E-09
-2.46201E-09
2.86800E-10
-2.86800E-10
1.00
3.02430E-09
-9.63150E-10
1.05
1.13411E-09
7.58260E-10
-3.75854E-10
1.10
4.25293E-10
-1.46346E-10
1.15
1.59485E-10
1.02619E-10
-5.68660E-11
1.20
5.98068E-11
-2.20554E-11
1.25
2.24275E-11
1.38879E-11
-8.53960E-12
1.30
8.41033E-12
-3.30124E-12
1.35
3.15387E-12
1.87953E-12
-1.27434E-12
1.40
1.18270E-12
-4.91262E-13
1.45
4.43513E-13
2.54367E-13
-1.89147E-13
1.50
1.66318E-13
-7.27413E-14
1.55
6.23691E-14
3.44248E-14
-2.79443E-14
1.60
2.33884E-14
-1.07242E-14
1.65
8.77065E-15
4.65889E-15
-4.11176E-15
1.70
3.28899E-15
-1.57509E-15
1.75
1.23337E-15
6.30512E-16
-6.02861E-16
1.80
4.62515E-16
-2.30563E-16
1.85
1.73443E-16
8.53305E-17
-8.81126E-17
1.90
6.50411E-17
-3.36498E-17
1.95
2.43904E-17
1.15482E-17
-1.28422E-17
2.00
9.14640E-18
-4.89805E-18
从表中可以看出,当步长取0.1时,Runge-Kutta法是收敛的,但其最终全局误差尽管绝对在很小,相对误差却很大。
比真实值要大数个量级。
从微分方程的显式解(
)可以看出,该函数是急遽下降的,其导数,即斜率则是急遽增大的。
Runge-Kutta法可由泰勒方法推导而来,其思想即是用xk点处的斜率,xk+1点处的斜率及中点斜率的两个估计值的线性组合来代替
,利用公式
来预测
的值。
如果
变化很剧烈,而步长又取得较大,则可能在中间过程中会出现“大数吃小数”的现象,使结果精度降低。
当步长减半,取0.05时,从表中可以看出其计算精度要好很多,但相对误差仍较大。
对于浮点数而言,越靠近0,精度就越高;
越远离0,精度就越低。
MATLAB中的浮点误差值eps为1到下一个能表示的比1大的浮点数之间的距离。
换言之,MATLAB是无法区分1与1+eps之间的数的,它们将被舍入到1或1+eps。
在MATLAB命令窗口键入eps可得到其值为2.220446049250313e-16。
由显示函数
计算的结果从1降到1e-18量级,小于eps,中间过程必然有舍入误差。
三、非线性方程根的求解
利用牛顿法求方程
于区间
的根,考虑不同初值下牛顿法的收敛情况。
1.分析与计算
令
,转化为求
在区间
上的零点。
通过观察方程易知零点在3附近。
取初值x0=3进行牛顿法迭代。
编写MATLAB程序,计算结果如表3.1所示,可见迭代收敛很快。
如果从区间端点开始迭代,初值分别取2和4,计算结果如表3.2所示,同样,迭代收敛很快。
表3.1Newton迭代法计算结果
k
3.00000000
-0.098612289
3.147918433
0.147918433
0.001177014
2
3.146193441
0.001724992
1.50195E-07
3
3.146193221
2.20177E-07
2.66454E-15
表3.2Newton迭代法计算结果
2.00000000
-0.69314718
4.00000000
0.613705639
3.386294361
1.386294361
0.166558146
3.181725815
0.818274185
0.024302056
3.149938394
0.236355967
0.002555499
3.146284845
0.03544097
6.25023E-05
3.146194257
0.003744137
7.06991E-07
9.16234E-05
4.24029E-10
4
1.03641E-06
5.41789E-14
对于实验方程可用MATLAB画出其在区间[2,4]上的图形,如图3.1所示。
可见其在区间内只有单根,对于单根,Newton法具有2阶收敛速度。
图3.1f(x)在[2,4]上图形
四、数值积分
已知
,利用复化梯形公式、复化Simpson公式和Romberg算法求
的近似值;
并观察实际计算结果,比较它们的收敛速度。
(1)复合梯形公式与复合Simpson公式
分别编写复合梯形公式与复合Simpson公式的MATLAB程序,计算结果如表4.1所示。
表4.1复合梯形公式与复合Simpson公式计算结果
子区间数
n
误差
3.00000000000000
0.14159265358979
3.133********333
0.00825932025646
3.10000000000000
.0415********
3.14156862745098
0.00002402613881
3.131********824
.010*********
3.14159250245871
0.00000015113109
8
3.138********109
0.00260415909870
3.14159265122482
0.00000000236497
16
3.14094161204139
0.00065104154840
3.14159265355284
0.00000000003696
可以看到,相对于复合梯形公式,复合Simpson公式的误差更快地收敛到0。
由于梯形公式的误差项为
阶,Simpson公式的误差项为
,因此Simpson公式比梯形公式具有更高的精度,所需计算的次也更少。
(2)Romberg公式
编写Romberg算法的MATLAB程序。
该方法需要逐次计算梯形公式值,Simpson公式和Cotes公式值,通过其线性组合来提高精度。
中间计算值存在矩阵中,如表4.2所示。
表4.2Romberg积分表
3.00000000000000
3.10000000000000
3.13333333333333
3.13117647058824
3.14156862745098
3.14211764705882
3.13898849449109
3.14159250245871
3.14159409412589
3.14158578376187
3.14094161204139
3.14159265122482
3.14159266114256
3.14159263839680
3.14142989317497
3.14159265355284
3.14159265370804
3.14159265359003
表4.3为Romberg积分的误差表。
表4.3Romberg积分误差表
0.14159265358979
0.04159265358979
0.00825932025646
0.01041618300156
0.00002402613881
0.00052499346903
0.00260415909870
0.00000015113109
0.00000144053610
0.00000686982792
0.00065104154840
0.00000000236497
0.00000000755277
0.00000001519300
0.00016276041482
0.00000000003696
0.00000000011824
0.00000000000024
可以看到Romberg积分表中第二序列正是复合Simpson公式计算结果。
同样容易验证,第三序列是复合Cotes公式计算结果。
第四序列(Romberg序列)则是n=8时的Newton-Cotes公式。
一般而言,右边的列收敛速度要快于左边的列,但并不是说所用公式的阶数越高,结果越精确。
因为高阶Newton-Cotes公式的
很大,导致数值稳定性较差。
从误差表中可以看出,同一行的Cotes序列并不比Simpson序列精度更高。
但对于相同子区间数,右边列比左边列精度要高。
Romberg序列收敛最快,同时精度也最好。
总结
本次数值分析实验采用了MATLAB程序设计语言,分别编写了Gauss消元法、Gauss-Seidel迭代法程序求解线性方程组;
编写Newton迭代法程序求解非线性方程;
编写Runge-Kutta法程序求解线性微分方程;
编写复合梯形公式、复合Simpson法程序和Romberg公式程序求解数值积分问题。
对Gauss消元法采用了选列主元的方法,增加了程序的通用性;
对Gauss-Seidel迭代法讨论了应用条件,要求其迭代矩阵满足一定的条件;
对Newton迭代比较了不同初值的收敛速度;
对Runge-Kutta法讨论了收敛的稳定区间,要求步长满足一定要求。
比较了复合梯形公式、复合Simpson公式和Romberg公式的收敛效率
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西南 交大 数值 分析 上机 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)