数值分析课程设计含代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书
摘要
实验方法与理论方法是推动科学技术发展的两大基本方法,但有局限性。许多研究对象,由于空间或时间的限制,既不可能用理论精确描述,也不能用实验手段实现。
数值模拟或称为科学计算突破了实验和理论科学的局限,在科技发展中起到越来越重要的作用。可以认为,科学计算已于实验、理论一起成为科学方法上不可或缺的三个主要手段。
计算数学的研究是科学计算的主要组成部分,而数值分析则是计算数学的核心。数值计算是研究使用计算机来解决各种数学问题的近似计算方法与理论,其任务是提供在计算机上可解的、理论可靠的、计算复杂性低的各种常用算法。数值分析的主要内容:
1)、数值代数:求解线性和非线性方程组的解,分直接方法和间接方法两大类;2)、插值、曲线拟合和数值逼近;
3)、数值微分和数值积分;
4)、常微分和偏微分方程数值解法。
本文主要通过Matlab软件,对数值分析中的一些问题进行求解,如列主元Gauss消去法,Lagrange插值多项式,复化Simpson公式,Runge-Kutta方法以及数值分析在实际问题中的应用,并在求解的过程中更加熟识这门课程的主要内容,以及加强对课程知识的掌握。在学习与设计计算方法时,从数学理论角度,学会分析方法的误差、收敛性和稳定性,保证计算方法的准确性;从实际应用的角度出发,掌握计算方法的结构与流程,能够把计算方法转换为可在计算机上直接处理的程序,保证算法的可用性。
关键词:列主元Gauss消去法;Lagrange插值;复化Simpson公式;Runge-Kutta
目录
实验一列主元Gauss消去法 0
1.1 实验目的 0
1.2 基本原理 0
1.3 实验内容 (1)
1.4 实验结论 (2)
实验二拉格朗日插值多项式 (3)
2.1 实验目的 (3)
2.2 基本原理 (3)
2.3 实验内容 (3)
2.4 实验结论 (7)
实验三复化Simpson求积公式 (8)
3.1 实验目的 (8)
3.2 基本原理 (9)
3.3 实验内容 (9)
3.4 实验结论 (11)
实验四龙格-库塔(Runge-Kutta)方法 (11)
4.1 实验目的 (11)
4.2 基本原理 (12)
4.3 实验内容 (12)
4.4 实验结论 (14)
实验五数值方法实际应用 (14)
5.1 实验目的 (14)
5.2 基本原理 (14)
5.3 实验内容 (15)
5.4 实验结论 (21)
参考文献 (21)
实验一 列主元Gauss 消去法
1.1 实验目的
1) 理解列主元消去法的原理;
2) 熟悉列主元消去法的计算步骤,能用代码编写; 3) 解决实际问题。
1.2 基本原理
在顺序Gauss 消去法中,必须要求),,2,1(0a (k )
n k kk =≠;否则无法进行计算。即使0)
(≠k kk a ,但其绝对值)(k kk
a 很小,由于舍入误差的影响,也可能会引起很大的误差,从而使上述方法失效。为了使消元过程中减小舍入误差和不至于中断,可以按照不同的自然顺序进行消元。在第k 步消元时,增广矩阵为
[]
⎥⎥⎥
⎥
⎥⎥⎥
⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
⎡=-----------)()()
1(1)2(2)1(1)()()
()()1(1)
1(1)1(1
1)2(2)2(2)2(1
2)2(22
)
1(1)
1(1)1(11)1(12)
1(11)
()
(k n
k k k k k nn k nk
k kn k kk k n k k k k k k k n k
k n k k k k b b b b b a a a a a a a a a a a a a a a a B A
(1.1)
不一定选取)
1(-k kk a 作为主元,而从同列)1()1(,1)1(,,,--+-k nk
k k k k kk a a a 中选取绝对值最大的作为主元素,即
)
1()
1(r max -≤≤-=k ik n
i k k k
a a (1.2) 若0)
(=k rk a ,此时矩阵不可逆,方程的解不确定,则停止计算;否则,当r>k
时,则其增广矩阵中交换第k 行和第r 行,即
n k k j a k rj
k kj ,,1,a )
()( +=↔ )()(k r k k b b ↔ (1.3) 使)
(k rk a 成为主元。然后再按Gauss 消去法进行消元运算。于是就得到列主元Gauss
消去法。
1.3 实验内容
1.3.1 程序来源
首先建立一个gaussMethod.m的文件,用来实现列主元的消去方法。文件内容如下:
function x=gaussMethod(A,b)
%高斯列主元消去法,要求系数矩阵非奇异的
n = size(A,1);
if abs(det(A))<= 1e-8
error('系数矩阵是奇异的'); return;
end
for k=1:n
ak = max(abs(A(k:n,k)));
index = find(A(:,k)==ak);
if length(index) == 0
index = find(A(:,k)==-ak);
end
%交换列主元
temp = A(index,:);
A(index,:) = A(k,:);
A(k,:) = temp;
temp = b(index);b(index) = b(k); b(k) = temp; %消元过程for i=k+1:n
m=A(i,k)/A(k,k); %消除列元素
A(i,k+1:n)=A(i,k+1:n)-m*A(k,k+1:n);
b(i)=b(i)-m*b(k);
end
end %回代过程
x(n)=b(n)/A(n,n);
for k=n-1:-1:1;
x(k)=(b(k)-A(k,k+1:n)*x(k+1:n)')/A(k,k);