- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
word格式文档
word格式文档
专业整理
专业整理
《Gauss列主元消去法》实验报告
实验名称:Gauss列主元消去法程序设计 成绩:
专业班级:数学与应用数学1202班 姓名:王晓阳 学号:2012254010228
实验日期 :2014年11月10日实验报告日期:2014年11月10日
一.实验目的
学习Gauss消去法的基本思路和迭代步骤.
学会运用matlab编写高斯消去法和列主元消去法程序,求解线性方程组.
当a ?k?绝对值较小时,采用高斯列主元消去法.
kk
培养编程与上机调试能力.
二、实验内容
用消去法解线性方程组的基本思想是用逐次消去未知数的方法把原线性方程组Ax?b化为与其等价的三角形线性方程组,而求解三角形线性方程组可用回代的方法求解.
求解一般线性方程组的高斯消去法.
(1)消元过程:
设a ?k??0,第i个方程减去第k个方程的m
kk ik
?a?k?/a
ik kk
?k?倍,
(i?k?1, ,n),得到A?k?1?x?b?k?1?.
??a
?k?1??a
?k??m
a?k?,?i,j?k?1,
,n?
?ij
ij ik kj
??b?k?1??b?k??m
b?k?
i i ikk
经过n-1次消元,可把方程组A?1?x?b?1?化为上三角方程组A?n?x?b?n?.(2)回代过程:
?x ?b?n?/a
?n?
?n n nn
?x??b????n
a??x
?/a??,i?n?1, ,1
?? ? i i ? i
?
?i ?
i ij j ii
j?i?1
以解如下线性方程组为例测试结果.
?10x?7x ?7
??31?22?6 ?4
? x x x
?5 1 2 3
?x?x?5x ?6
1 2 3
列主元消去法
由高斯消去法可知,在消元过程中可能出现a
kk
?k??0的情况,这是消去法将
无法进行,即使主元素a
kk
?k??0但很小时,用其作除数,会导致其他元素数量级
的严重增长和舍入误差的扩散,最后也使得计算解不可靠.这时就需要选取主元素,假定线性方程组的系数矩阵A是菲奇异的.
消元过程:
对于k?1,2, ,n?1,进行如下步骤:
按列选主元,记
a ?max a
pk ik
k?i?n
交换增广阵A的p,k两行的元素。
A(k,j)=A(p,j)(j=k,…,n+1)3)交换常数项b的p,k两行的元素。
b(k)=b(p)
4)计算消元
??a
?k?1??a
?k??m
a?k?,?i,j?k?1,
,n?
?ij
ij ik kj
??b?k?1??b?k??mb
?k?
i i ikk
回代过程
?x ?b?n?/a
?n?
?n n nn
??x??b????n
?
a??x
?/a??,i?n?1, ,1
??
?
?i ?
i i ? i
i ij j ii
j?i?1
以解如下线性方程组为例测试结果.
??0.00001x?x ?1
?
1 2
2?x?x ?2
2
?
1 2
三、实验环境
MATLABR2014a
四、实验步骤
高斯列主元消去法流程图:
开始
开始
输入系数阵a
和常数项b
按列选主元
交换元素
计算消元
回代
输出线性方程
组的解
结束
程序设计:
(一)高斯消去法:
a=input(请输入系数阵:);b=input(请输入常数项:);n=length(b);
A=[a,b];
x=zeros(n,1); %初始值fork=1:n-1
fori=k+1:n %第k次消元m(i,k)=A(i,k)/A(k,k);
forj=k+1:n
A(i,j)=A(i,j)-A(k,j)*m(i,k);
endend
end
b(i)=b(i)-m(i,k)*b(k);
x(n)=b(n)/A(n,n); %回代fori=n-1:-1:1;
s=0;
forj=i+1:n;
s=s+A(i,j)*x(j);
end
end
x(i)=(b(i)-s)/A(i,i)
(二)高斯列主元消去法:a=input(请输入系数阵:);b=input(请输入常数项:);n=length(b);
A=[a,b];
x=zeros(
文档评论(0)