数值分析课程设计报告(95分)Word文档格式.doc
《数值分析课程设计报告(95分)Word文档格式.doc》由会员分享,可在线阅读,更多相关《数值分析课程设计报告(95分)Word文档格式.doc(22页珍藏版)》请在冰豆网上搜索。
2.1问题分析与设计思路 8
2.2程序清单 8
2.3运行结果 10
2.4结果分析与设计总结 10
[设计题三] 11
3.1问题分析与设计思路 11
3.2程序清单 11
3.3运行结果 13
3.4结果分析与设计总结 13
[设计题五] 14
4.1问题分析与设计思路 14
4.2程序清单 15
4.3运行结果 20
4.4结果分析 21
【数值分析课程设计总结】 22
[设计题一]
设计实验验证Hilbert矩阵的病态性。
1.1问题分析与设计思路
在求解任何反问题的过程中通常会遇到病态矩阵问题,而且病态矩阵问题还未有很好的解决方法,尤其是长方形、大型矩阵。
目前主要有Tikhonov、奇异值截断、奇异值修正等方法。
求解方程组时对数据的小扰动很敏感的矩阵就是病态矩阵。
解线性方程组Ax=b时,若对于系数矩阵A及右端项b的小扰动δA、δb,方程组(A+δA)χ=b+δb的解χ与原方程组Ax=b的解差别很大,则称矩阵A为病态矩阵。
方程组的近似解χ一般都不可能恰好使剩余r=b-Aχ为零,这时χ亦可看作小扰动问题Aχ=b-r(即δA=0,δb=-r)的解,所以当A为病态时,即使剩余很小,仍可能得到一个与真解相差很大的近似解。
因此,设计思路如下:
令x0=(1,1…..1),计算出b=Hx0,求出b,然后再用高斯消去法球解Hx=b,得到近似解x,然后利用标准差:
比较x与x0之间的误差。
截图是取了几个n(程序中设置为1至30)去计算,看一下随着n的增大误差的变化情况。
1.2程序清单
共两个文件
qm1.m
gauss_liezhu1.m(在qm1.m中调用此程序)
qm1.m
gauss_liezhu1.m
1.3运行结果
N不同取值时的误差截图
N=2
N=1
N=12
N=30
N=14
N=8
1.4结果分析
按照N的递增顺序取了9个误差数据,制成散点折线图如上所示。
由此可以看出,此矩阵求解方程组时对数据的小扰动很敏感
实验验证Hilbert矩阵的病态性成立。
1.5设计总结
(1)认识什么事矩阵的病态性
(2)令x0=(1,1…..1),计算出b=Hx0,求出b,然后再用高斯消去法球解Hx=b,得到近似解x,然后利用标准差公式
比较x与x0之间的误差。
(3)取几个点进行误差记录
(4)绘制误差的散点图,形象分析
[设计题二]
1225年,达芬奇研究了方程并得到它的一个近似根。
没有人知道他用什么方法得到它。
设计两种方法去计算,并比较这两种方法。
2.1问题分析与设计思路
f(x)=0的根(或f(x)的零点),当f(x)复杂时,很难求,需要找到有效简单的近似方法去求:
(1)二分法理论:
f(x)∈C[a,b],单调,f(a)f(b)<
0,f(x)=0在(a,b)中有惟一根。
(2)迭代法
(3)牛顿(Newton)法
针对本题,采用了两种方法。
第一种方法是二分法,得到的近似根与精确解的误差小于。
第二种方法是用牛顿迭代法。
二分法
优点:
条件和方法简单(只要求f(x)连续即可),方法收敛;
缺点:
收敛速度慢,不易求偶数重根(如图).
Newton迭代法迭代公式
2.2程序清单
二分法程序:
erfen.m
Newton迭代法程序:
qm2_2.m
nanewtom.m(在qm2_2.m中调用)
Newton迭代法
2.3运行结果
二分法:
2.4结果分析与设计总结
通过二分法与Newton迭代法得出的答案相同。
(1)确定求方程近似根的三种方法
(2)翻书了解编程步骤
(3)总结本章重点知识:
1.熟悉区间二分法;
2.熟悉迭代法的建立,会使用收敛定理;
3.熟悉Newton迭代法及其几何意义;
4.熟悉收敛阶的定义;
5.熟悉Newton迭代法的收敛阶;
[设计题三]
某飞机头部的光滑外形曲线的型值点坐标由下表给出:
1
2
3
4
5
6
7
8
9
10
70
130
210
337
578
776
1012
1142
1462
1841
57
78
103
135
182
214
244
256
272
275
试建立其合适的模拟曲线(未必是用拟合方法),并求在点x=100,250,400,500,800处的函数值y及一阶、二阶导数值y’,y”。
绘出模拟曲线的图形。
3.1问题分析与设计思路
曲线拟合的一般步骤
(一)绘制散点图,选择合适的曲线类型 一般根据资料性质结合专业知识便可确定资料的曲线类型,不能确定时,可在方格坐标纸上绘制散点图,根据散点的分布,选择接近的、合适的曲线类型。
(二)进行变量变换,使变换后的两个变量呈直线关系。
(三)按最小二乘法原理求线性方程和方差分析
(四)将直线化方程转换为关于原变量X、Y的函数表达式
此题用三次样条插值
三次样条函数定义:
函数S(x)∈C2[a,b],且在每个小区间[xj,xj+1]上是三次多项式,其中 a=x0<
x1<
...<
xn=b是给定节点,则称S(x)是节点x0,x1,...xn上的三次样条函数。
若在节点xj上给定函数值Yj=f(Xj).(j=0,1,,n),并成立S(xj)=yj.(j=0,1,,n),则称S(x)为三次样条插值函数。
3.2程序清单
text5.m
csfitf.m(function文件)
daos1.m(function文件)
daos2.m(function文件)
daos2.m文件
daos1.m文件
Csfitf.m文件
text5.m文件
3.3运行结果
3.4结果分析与设计总结
用三次样条插值拟合出的曲线及计算结果如上图所示。
实际计算是还需要引入边界条件才能完成计算。
边界通常有自然边界(边界点的导数为0),夹持边界(边界点导数给定),非扭结边界(使两端点的三阶导与这两端点的邻近点的三阶导相等)。
Matlab把非扭结边界条件作为默认的边界条件。
[设计题五]
给定单摆方程初值问题
其中g=9.8,l=25.
(1)取初始偏离角度
(2)取初始偏离角度
其精确解为。
分别对上述两种情况按照下列方法求出其数值解,比较各方法的优缺点,并将计算结果与精确解做比较(列表、画图)。
(方案I)欧拉法,步长h=0.025,h=0.1;
(方案II)改进的欧拉法,步长h=0.05,h=0.1;
(方案III)四阶经典龙格—库塔法,步长h=0.1。
4.1问题分析与设计思路
令,则可以将改写为:
然后改写欧拉法、改进的欧拉法即龙格库塔公式。
欧拉法:
改进的欧拉法:
龙格库塔法:
4.2程序清单
euler.m
euler_gai.m
f5_2.m
orig6.m
R-K.m
text_1.mtext_1_2.m
text_2.mtext_2_2.m
text_3.mtext_3_2.m
4.3运行结果
欧拉
改进欧拉
R|K
4.4结果分析
欧拉公式y(xi+1)=yi+h*f(xi,yi) 且xi=x0+i*h(i=0,1,2,…,n-1),局部截断误差为O(h^2),欧拉格式仅为一阶方法。
改进欧拉它的局部截断误差为O(h^3),可见,改进欧拉格式较欧拉格式提高了精度,其截断误差比欧拉格式提高了一阶。
欧拉法用差商[y(xi+1)-y(xi)]/h近似代替y(xi)的导数,局部截断误差较大;
改进欧拉法先用欧拉法求出预报值,再利用梯形公式求出校正值,局部截断误差比欧拉法低了一阶,较大程度地提高了计算精度。
龙格-库塔法具有精度高,收敛,稳定(在一定条件下),计算过程中可以改变步长,不需要计算高阶导数等优点,但仍需计算在一些点上的值,如四阶龙格-库塔法每计算一步需要计算四次的值,这给实际计算带来一定的复杂性。
【数值分析课程设计总结】
假期在家整整做了一个星期,终于完成了以上四道题的所有内容。
这次MATLAB课程设计为我们提供了与众不同的学习方法和学习机会,让我们从传统的被动授学转变为主动求学;
从死记硬背的模式中脱离出来,转变为在实践中学习,增强了领悟、创新和推断的能力。
掌握自学的方法,形成工程理论整体模式,使工作、学习、生活都步入系统化流程;
思考方式成熟,逻辑性规范、明确。
这些方法的提高是终身受益的,我认为这难得的一周,让我真正懂得了生活和学习的基本规律。
在对插值多项式的程序进行编辑过程中,遇到了很多方法不知道用什么函数表达的问题,通过查找有关Matab软件和现代数值计算的书籍得出本程序,在对程序调用时,不知道如何调用,通过上网查找方法知道了需要在Matlab中的文件中新建一个M文件,然后保存,然后到命令区直接调用就可以了。
特别注意的是,在对M文件保存时,要直接保存到默认的matlab文件夹中,不可以随意更改保存路径。
完成了课程设计的任务,但是从中发现的问题也是值得去深思的。
我想经过这一个周的课程设计所发现的问题对我们会有很大的启示,在以后的学习中也会大有帮助。
在以后的学习中我会不断的改进学习方法,在实践中学习,不断提高自我,完美自我,全面提高自己。
我认为在编程方面,1、2、5题自己独立完成的较好,给自己一个优秀吧。