LU分解及列主元高斯去法
(一)实验目的与要求
1. 通过编程计算实践,理解体会LU分解及列主元高斯去法的思想。
2. 通过编程计算实践,熟练各种算法的计算流程。
3. 通过各种方法对同一题目的求解,体会各种方法的精度差异。
4. 通过编程计算实践,深入领会和掌握迭代算法的改进思路,提高对算法
改进技巧的本质的认识以及算法流程的实际控制技术。
(二)实验内容或原理
- 用LU分解及列主元高斯去法解出如下线性方程组
- 用上述方法求出他们的实数根,精确度0.0001
- 分析各种方法的差异率:分析收敛速度和总计算量之间的关系。
(三)实验主要仪器设备及材料
PC微机,Mcrosoft Windows 操作系统,Microsoft Office Powerpoint 2003。C语言等计算机编程语言。
(四)实验报告要求
填写实验报告,包括姓名、学号、专业班级和实验名称等项。完成以下各项具体要求后,交给老师。
实验5_1_1
clear;clc;
A=[
10 -7 0 1;
-3 2.099999 6 2;
5 -1 5 -1;
2 1 0 2
];
b=[8;5.900001;5;1];
[m,n]=size(A);
L=eye(n);
U=zeros(n);
flag='ok';
for i=1:n
U(1,i)=A(1,i);
end
for r=2:n
L(r,1)=A(r,1)/U(1,1);
end
for i=2:n
for j=i:n
z=0;
for r=1:i-1
z=z+L(i,r)*U(r,j);
end
U(i,j)=A(i,j)-z;
end
if abs(U(i,i))<eps
flag='failure';
return;
end
for k=i+1:n
m=0;
for q=1:i-1
m=m+L(k,q)*U(q,i);
end
L(k,i)=(A(k,i)-m)/U(i,i);
end
end
L
U
y=L\b;
x=U\y;
detA=det(L*U)
实验5_1_2
function x=shiyan5_1_2(A,b);
A=[
10 -7 0 1;
-3 2.099999 6 2;
5 -1 5 -1;
2 1 0 2
];
b=[8;5.900001;5;1];
[n,n]=size(A);
x=zeros(n,1);
Aug=[A,b];
for k=1:n-1
[piv,r]=max(abs(Aug(k:n,k)));
r=r+k-1;
if r>k
temp=Aug(k,:);
Aug(k,:)=Aug(r,:);
Aug(r,:)=temp;
end
if Aug(k,k)==0,error('对角元出现0'),end
for p=k+1:n
Aug(p,:)=Aug(p,:)-Aug(k,:)*Aug(p,k)/Aug(k,k);
end
end
A=Aug(:,1:n);
b=Aug(:,n+1);
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=b(k);
for p=n:-1:k+1
x(k)=x(k)-A(k,p)*x(p);
end
x(k)=x(k)/A(k,k);
end
detA=det(A)
标签:end,去法,Aug,及列,主元,LU From: https://www.cnblogs.com/zhangfurong/p/16879353.html