Gauss列主元消去法程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Gauss列主元消去法》实验报告
实验名称:Gauss列主元消去法程序设计???成绩:_________
专业班级:数学与应用数学1202班?姓名:王晓阳???学号:
实?验?日?期:?2014?年11月10日
实验报告日期:?2014年?11月10日
一.实验目的
1. 学习Gauss消去法的基本思路和迭代步骤.
2. 学会运用matlab编写高斯消去法和列主元消去法程序,求解线性方程组.
3. 当绝对值较小时,采用高斯列主元消去法•
4. 培养编程与上机调试能力.
二、实验内容
用消去法解线性方程组的基本思想是用逐次消去未知数的方法把原线性方程组Ax二b 化为与其等价的三角形线性方程组,而求解三角形线性方程组可用回代的方法求解
1. 求解一般线性方程组的高斯消去法•
(1) 消元过程:
设a kk k-0 ,第i个方程减去第k个方程的m ik Tk k倍,("k 1^1, n),得到
A k1x=b k1.
经过n-1次消元,可把方程组A1^b1化为上三角方程组A n x=b n.
⑵回代过程:
以解如下线性方程组为例测试结果
2. 列主元消去法
由高斯消去法可知,在消元过程中可能出现a kk k =0的情况,这是消去法将无法进行, 即使主元素a kk k-0但很小时,用其作除数,会导致其他元素数量级的严重增长和舍入误差的扩散,最后也使得计算解不可靠.这时就需要选取主元素,假定线性方程组的系数矩阵A是菲奇异的.
(1)消元过程:
对于k =1,2,川,n -1,进行如下步骤:
1) 按列选主元,记
2) 交换增广阵A的p,k两行的元素
A(k,j)=A(p,j) ( j=k,…,n +1)
3) 交换常数项b的p,k两行的元素。
b(k)=b(p)
4) 计算消元
(2) 回代过程
(3) 以解如下线性方程组为例测试结果
三、实验环境
MATLAB R2014a
四、实验步骤
1.高斯列主元消去法流程图:
计算消
元
回代
“输出线性方
程组的解
结束2.程序设计:
(一)高斯消去法: a=input('请输入系数阵:’);
b=input('请输入常数项:’);
n=len gth(b);
A=[a,b];
x=zeros(n,1);
%初始值
for k=1:n-1
for i=k+1:n %第k 次消元
m(i,k)=A(i,k)/A(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
( 二) 高斯列主元消去法: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
1
x =
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
五、实验结果Gauss1
请输入系数阵:[10,-7,0;-3,2,6;5,-1,5]
请输入常数项:[7;4;6]
x =
-1.0000
1.0000
x =
-0.0000
-1.0000
1.0000
X=(0 ,-1 ,1)
Gauss2
请输入系数阵:[10八(-5),1;2,1]
请输入常数项:[1;2]
y =
0.5000
1.0000
X= (0.5 , 1)