西南交通大学数值分析上机实验报告.docx
- 文档编号:9414725
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:13
- 大小:160.14KB
西南交通大学数值分析上机实验报告.docx
《西南交通大学数值分析上机实验报告.docx》由会员分享,可在线阅读,更多相关《西南交通大学数值分析上机实验报告.docx(13页珍藏版)》请在冰点文库上搜索。
西南交通大学数值分析上机实验报告
数值分析
上机实习报告
学号:
姓名:
专业:
联系电话:
任课教师:
序
伴随着计算机技术的飞速发展,所有的学科都走向定量化和准确化,从而产生了一系列的计算性的学科分支,而数值计算方法就是解决计算问题的桥梁和工具。
数值计算方法,是一种研究并解决数学问题的数值近似解方法,是在计算机上使用的解数学问题的方法。
为了提高计算能力,需要结合计算能力与计算效率,因此,用来解决数值计算的软件因为高效率的计算凸显的十分重要。
数值方法是用来解决数值问题的计算公式,而数值方法的有效性需要根据其方法本身的好坏以及数值本身的好坏来综合判断。
数值计算方法计算的结果大多数都是近似值,但是理论的严密性又要求我们不仅要掌握将基本的算法,还要了解必要的误差分析,以验证计算结果的可靠性。
数值计算一般涉及的计算对象是微积分,线性代数,常微分方程中的数学问题,从而对应解决实际中的工程技术问题。
在借助MATLAB、JAVA、C++和VB软件解决数学模型求解过程中,可以极大的提高计算效率。
本实验采用的是MATLAB软件来解决数值计算问题。
MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,其对解决矩阵运算、绘制函数/数据图像等有非常高的效率。
本文采用MATLAB对多项式拟合、雅雅格比法与高斯-赛德尔迭代法求解方程组迭代求解,对Runge-Kutta4阶算法进行编程,并通过实例求解验证了其可行性,使用不同方法对计算进行比较,得出不同方法的收敛性与迭代次数的多少,比较各种方法的精确度和解的收敛速度。
2014数值分析作业
一、必做题
1、问题一
1.1问题重述
1.1.1实验数据
某过程涉及两变量x和y,拟分别用插值多项式和多项式拟合给出其对应规律的近似多项式,已知xi与yi之间的对应数据如下,xi=1,2,…,10
yi=34.658840.371914.6448-14.2721-13.357024.823475.2795
103.574397.484778.2392
下列数据为另外的对照记录,它们可以作为近似函数的评价参考数据。
xi=
Columns1through7
1.50001.90002.30002.70003.10003.50003.9000
Columns8through14
4.30004.70005.10005.50005.90006.30006.7000
Columns15through17
7.10007.50007.9000
yi=
Columns1through7
42.149841.462035.118224.385211.2732-1.7813-12.3006
Columns8through14
-18.1566-17.9069-11.02262.028419.854940.362661.0840
Columns15through17
79.568893.7700102.3677
1.1.2实验内容
(1)用次数分别为3,4,5,6的多项式拟合并给出最好近似结果f(x)。
(2)用插值多项式给出最好近似结果
1.2实验方法介绍
1.2.1多项式拟合
在MATLAB中,提供了polyfit函数来计算多项式拟合系数,其设定曲线拟合的目标是最小二乘法(或被称为最小方差),polyfit的函数调用格式是:
[p,s,mu]=ployfit(x,y,n)
其中,x和y表示的是已知的数据,n是多项式拟合阶数。
通过最小二乘法原理得到的拟合曲线多项式是:
1.2.2拉格朗日插值法
拉格朗日插值法是利用拉格朗日基函数来进行拟合:
拉格朗日基函数
利用拉格朗日基函数,构造多项式
为拉格朗日差值多项式。
1.3实验结果
1.3.1最小二乘多项式拟合结果
(1)各次拟合结果系数
3次多项式系数:
-1.032619.3339-94.4787131.7944
4次多项式系数:
-0.38187.3680-42.143373.53340.7450
5次多项式系数:
0.0981-3.078934.5020-163.5107304.7282-139.5019
6次多项式系数:
0.0194-0.54085.1137-16.8973-0.867066.3750-18.6991
(2)绘制拟合曲线
利用MATLAB调用函数ployfit来进行绘图,程序代码(见附录1),绘制的
3、4、5、6阶拟合图像如下图1所示:
1.3.2拉格朗日插值拟合结果
(1)拟合的系数
根据拉格朗日的计算原理,编写程序见附录。
运行得到的结果如下表1所示:
x
1.0
1.5
2.0
2.5
3.0
3.5
4.0
4.5
5.0
y
34.659
42.384
40.372
30.148
14.645
-1.768
-14.272
-18.858
-13.3570
x
5.5.
6.0
6.5
7.0
7.5
8.0
8.5
9.0
9.5
y
2.0333
24.823
50.849
75.280
93.779
103.57
104.167
97.484
87.3462
表1拉格朗日插值运算结果
(2)拟合的图像
运行程序可以得到:
拉格朗日插值拟合的图像如下图2所示:
图2拉格朗日插值拟合图像
2、问题二
2.1问题重述
2.1.1实验数据
(1)A行分别为A1=[6,2,-1],A2=[1,4,-2],A3=[-3,1,4];b1=[-3,2,4]T;b2=[100,-200,345]T。
(2)A行分别为A1=[1,0,8,0.8],A2=[0.8,1,0.8],A3=[0.8,0.8,1];b1=[3,2,1]T;b2=[5,0,-10]T。
(3)A行分别为A1=[1,3],A2=[-7,1];b1=[4,6]T。
2.1.2实验内容
用雅格比法与高斯-赛德尔迭代法解下列方程组Ax=b1或Ax=b2,研究其收敛性。
上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。
2.2实验原理
根据题目要求,分别用雅克比迭代和高斯—赛德尔迭代的方法解方程组Ax=b1和Ax=b2,
迭代法是将方程组Ax=b转化为x=Bx+f,构成了迭代格式:
x(k+1)=Bxk+fk=0,1,2....n
反复适用该式子,产生了{xk}的向量序列,如果这个向量序列收敛于x*,则有x*是方程组的解。
因此,根据精度的要求选择一个合适的xk作为近似解。
这就是线性方程组的迭代法。
雅各比算法:
将系数矩阵A分解为:
A=L+U+D,则推到的最后迭代公式为:
x=-D-1(L+U)x(k)+D-1b
其中,迭代矩阵为BJ=-D-1(L+U)
高斯-塞德尔方法:
是从雅各比演变而来的,其矩阵形式为
x(k+1)=-D-1(Lx(k+1)+Ux(k))+D-1b
其中,高斯-塞德尔迭代矩阵BG=-(D+L)-1U
2.3实验结果
(1)在问题1中,有:
对矩阵A进行操作可计算得
计算矩阵
的谱半径可知
,所以迭代收敛。
之后利用MATLAB编程得到的计算结果如下表2所示:
表2雅格比法的迭代结果
方程
是否收敛
迭代解
迭代次数
1
是
2
是
表3高斯-赛德尔迭代法的迭代结果
方程
是否收敛
迭代解
迭代次数
1
是
2
是
从表2和3可知,理论分析结果与程序结果一致,利用雅格比法,方程1在迭代16次后收敛;方程2在迭代了23次收敛。
利用高斯-赛德尔法,方程1在迭代10次后收敛;方程2在迭代了15次收敛。
从中可以看出高斯赛德尔法的迭代速度比雅格比法的迭代次数快。
(2)对于问题2有:
对矩阵A进行操作可计算得
计算矩阵
的谱半径可知
,所以迭代也收敛。
调用编写函数对问题2进行求解,其中最大迭代次数设为2000,精度要求设为0.0001,初始迭代值设为(0,0,0)
表4问题2雅格比法的迭代结果
方程
是否收敛
迭代解
迭代次数
1
是
2
是
表5问题2高斯赛德尔的迭代结果
方程
是否收敛
迭代解
迭代次数
1
是
2
是
从表4和5可知,高斯赛德尔法只用了很少的参数就得到了迭代结果,但是雅格比法却得到不收敛的结果,从这两个方程的迭代次数来说,b值不同,其迭代的次数不一样,但是迭代是否收敛于b值大小无关。
(3)在问题3中,有:
对矩阵A进行操作可计算得
计算矩阵
的谱半径可知
,所以迭代不收敛。
调用MATLAB程序中函数对问题3进行求解,其中最大迭代次数设为2000,精度要求设为0.0001,初始迭代值设为(0,0,0)可得下表6。
表6问题3雅格比的迭代结果
方程
是否收敛
迭代解
迭代次数
1
否
表7问题3高斯赛德尔的迭代结果
方程
是否收敛
迭代解
迭代次数
1
否
从表113可知,理论分析结果与程序结果一致,方程迭代到最大次数时均没有收敛。
实验结果分析:
从问题1,2,3的实验结果,我们可以总结出,雅格比法只在问题1的求解过程中有作用,而高斯-赛德尔法不仅能解决问题1,而且还能解决问题2,所以高斯-赛德尔法的使用范围比雅格比法更广泛。
方程组的右端系数对两种方法有一定得影响,在初始条件,精度要求相同的条件下可以看出,右端系数越大,得到所需解的迭代次数越多;在同等条件下,高斯赛德迭代法较雅格比迭代法,其收敛速度更快;在某些情况下,雅格比法不能找到方程组的解,而高斯—赛德迭代法能够找到方程组的解。
二、选做题
3、问题三
3.1问题重述
给定函数
,及节点
,求其三次样条插值多项式(可取I型或II型边界条件),并画图及与
的图形进行比较分析。
3.2实验原理
利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。
已知函数y=f(x)在区间[a,b]上的n+1个节点a=x0 (1)S(xj)=yj(j=0,1,…,n); (2)在每小区间[xj,xj+1](j=0,1,…,n-1)上S(x)是三次多项式,记为Sj(x); (3)S(x)在[a,b]上二阶连续可微。 则S(x)称为f(x)的三次样条插值函数,它通过上述给定点,为二阶连续可导的分段三次多项式函数。 3.3实验结果 采用三弯矩法来进行三次样条插值,取II型边界条件,令插值函数在两个端点处的二阶导数: M0和Mn值为0。 由于得到的线性方程组系数矩阵为三对角阵,因此在求解线性方程组时采用追赶法,得到结果如下图3所示。 图3三次样条插值函数图 从图中可以看出,使用三弯矩法对此函数进行拟合,精确度很高,结果准确。 总结 通过本次实验,我意识到了编程在数值分析实验中的重要性,理论知识不仅能有了很大的理解提升,而且自身的编程能力也有了很大的进步。 在本次实验中,我接触了MATLAB软件,并学习了基础的一些编程语言,我也深深的意识到,想学习好专业课,想发表高端论文,学习MATLAB软件的数值分析应用是十分重要的。 而在MATLAB编程过程中,我对函数的定义、调用等有了更深一步地了解。 这三个实验,我了解到了多次拟合的实现方法、雅格比和高斯-赛德尔迭代法以及三次样条插值的MATLAB实现方法。 本来在学习数值分析的过程中,我在理解方面存在一些偏差,但是通过本次实验,我深切的认识到了,对问题的根本理解是十分重要的,看问题要看到本质,从根本上推断从而理解问题的本质。 最后,感谢谢灵红老师一学期的谆谆教导,感谢学校给我们学习这门数学课的机会。 在用数值分析分析问题的过程中,我有了很多的收获,我也认识到了这门课的重要性,相信,这门课的学习将会对我研究生生活的学习有很大的提升,对我日后写论文以及解决工作问题有很大帮助。 感谢这一学期以来,帮助我学习MATLAB软件的师兄师姐,因为第一次做这种编程问题,所以难免会有一些不完善和错误,希望老师给予理解,谢谢!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西南交通大学 数值 分析 上机 实验 报告