实验三高斯列主元消去法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 高斯列主元消去法
一、实验目的:
1、掌握高斯消去法的基本思路和迭代步骤。
2、 培养编程与上机调试能力。
二、高斯列主元消去法的基本思路与计算步骤:
设有方程组Ax b =,设A 是可逆矩阵。高斯消去法的基本思想就是僵局真的初等行变换作用于方程组的增广矩阵[]B A b = ,将其中的A 变换成一个上三角矩阵,然后求解这个三角形方程组。
列主元高斯消去法计算步骤:
将方程组用增广矩阵[]()(1)ij n n B A b a ⨯+== 表示。
步骤1:消元过程,对1,2,,1k n =-
(1) 选主元,找{},1,,k i k k n ∈+ 使得
,max k i k ik
k i n a a ≤≤= (2) 如果
,0k i k a =,则矩阵A 奇异,程序结束;否则执行(3)。 (3) 如果k i k ≠,则交换第k 行与第k i 行对应元素位置,k kj i j a a ↔,,,1j k n =+ 。
(4) 消元,对,,i k n = ,计算/,ik
ik kk l a a =对1,,1j k n =++ ,计算 .
ij ij ik kj a a l a =- 步骤 2:回代过程:
(1) 若0,nn a =则矩阵奇异,程序结束;否则执行(2)。
(2) ,1/;n n n nn x a a +=对1,,2,1i n =- ,计算,11/n i i n ij j ii j i x a a x a +=+⎛⎫=- ⎪⎝⎭∑
三:程序流程图
四:程序清单:
function X=uptrbk(A,b)
% A是一个n阶矩阵。
% b是一个n维向量。
% X是线性方程组AX=b的解。
[N N]=size(A);
X=zeros(1,N+1);
Aug=[A b];
for p=1:N-1
[Y,j]=max(abs(Aug(p:N,p)));%返回向量的最大值存入y,最大值的序号存入j。
C=Aug(p,:);
Aug(p,:)=Aug(j+p-1,:);
Aug(j+p-1,:)=C;
if Aug(p,p)==0
'A是奇异阵,方程无惟一解'
break
end
for k=p+1:N
m=Aug(k,p)/Aug(p,p);
Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p:N+1);
end
end
% 这里用到程序函数backsub来进行回代。
X=backsub(Aug(1:N,1:N),Aug(1:N,N+1));
function X=backsub(A,b)
% A是一个n阶上三角非奇异阵。
% b是一个n维向量。
% X是线性方程组AX=b的解。
n=length(b);%取b向量的个数。
X=zeros(n,1);
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);
End
五、测试数据与结果:
测试数据:(第8章习题三第2题)求解线性方程组:
解:建立一个主程序gs.m
clc
clear
A=[1,2,3;5,4,10;3,-0.1,1];
b=[1;0;2];
uptrbk(A,b)
然后在MA TLAB命令窗口运行上述主程序,即:
>> gs
计算结果如下:
ans =
1.2000
2.0000
-1.4000
六、小结
本实验通过MA TLAB程序编程实现了高斯列主元消去法的求解,能加深对高斯列主元消去法的基本思路与计算步骤的理解。主元消去法解决了主元素的选择问题,避免主元素很小导致舍入误差扩散和其他元素的严重增长,这就使算法具有较好的数值稳定性。