《Gauss列主元消去法》实验报告
实验名称:Gauss列主元消去法程序设计
专业班级: 信息与计算科学1701姓名:梅礼坤 学号:1508060117 实 验 日 期 : 2019 年10月14日
一.实验目的
1.学习Gauss列主元消去法的基本思路和迭代步骤.
2.学会运用matlab编写高斯列主元消去法程序,求解线性方程组. 3.培养编程与上机调试能力.
二、实验内容
用消去法解线性方程组的基本思想是用逐次消去未知数的方法把原线性方程组Axb化为与其等价的三角形线性方程组,而求解三角形线性方程组可用回代的方法求解.
1.列主元消去法
由高斯消去法可知,在消元过程中可能出现akkk0的情况,这是消去法将无法进行,即使主元素akkk0但很小时,用其作除数,会导致其他元素数量级的严重增长和舍入误差的扩散,最后也使得计算解不可靠.这时就需要选取主元素,假定线性方程组的系数矩阵A是菲奇异的.
(1)消元过程: 对于k1,2,,n1,进行如下步骤:
1) 按列选主元,记
apkmaxaik
kin2) 交换增广阵A的p,k两行的元素。
A(k,j)=A(p,j) (j=k,…,n+1)
3)交换常数项b的p,k两行的元素。
b(k)=b(p)
4)计算消元
k1aijkmikakjk,i,jk1,aijk1kkbbmbiikki
(2)回代过程
,n
xnbnn/annnniiixbaiiijxj/aii,in1,ji1,1
三、实验环境
MATLAB R2010b
四、实验步骤
1.高斯列主元消去法流程图:
开始 输入系数阵a和常数项b 按列选主元 交换元素 计算消元 回代 输出线性方程组的解 结束
2.程序设计:
(一)高斯列主元消去法:
a=input('请输入系数阵:'); b=input('请输入常数项:'); n=length(b); A=[a,b];
x=zeros(n,1); %初始值
for k=1:n-1
if abs(A(k,k))<10^(-4);%判断是否选主元 y=1 else y=0; end
if y; %选主元 for i=k+1:n;
if abs(A(i,k))>abs(A(k,k)) p=i; else p=k; end end if p~=k;
for j=k:n+1; s=A(k,j);
A(k,j)=A(p,j);%交换系数 A(p,j)=s; end t=b(k);
b(k)=b(p);%交换常数项 b(p)=t; end end for i=k+1:n
m(i,k)=A(i,k)/A(k,k); %第k次消元 for j=k+1:n
A(i,j)=A(i,j)-A(k,j)*m(i,k);
end
b(i)=b(i)-m(i,k)*b(k); end end
x(n)=b(n)/A(n,n); %回代 for i=n-1:-1:1; s=0;
for j=i+1:n;
s=s+A(i,j)*x(j); end
x(i)=(b(i)-s)/A(i,i) end
五、实验结果
六、实验讨论、结论
本实验通过matlab程序编程实现了高斯列主元消去法的求解,能加深对高斯消去法基本思路与计算步骤的理解。当主元素特别小时,需要选取主元,否则会影响结果,这时就需要采用高斯列主元消去法。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务