数值分析实验报告---高斯消去法 LU分解法
时间:2026-01-22
时间:2026-01-22
高斯消去法 LU分解法,大家都是学生,不偏大家,程序百分百运行通过,请放心下载。
数值分析上机报告
①高斯消去法
利用高斯消去法的matlab程序源代码:
A=[10,-7,0,1;-3,2.099999,6,2;5,-1,5,-1;2,1,0,2];
b=[8;5.900001;5;1];
x=A\b
c=det(A)
上述程序中A表示计算实习题1中线性方程组的系数矩阵,b表示线性方程组右边的矩阵,x表示线性方程组的解。C所输出的是系数矩阵A的行列式的值。
程序运行结果:
②列主元的高斯消去法
利用列主元的高斯消去法matlab程序源代码:
首先建立一个gaussMethod.m的文件,用来实现列主元的消去方法。
function x=gaussMethod(A,b)
%高斯列主元消去法,要求系数矩阵非奇异的, %
n = size(A,1);
if abs(det(A))<= 1e-8
error('系数矩阵是奇异的');
return;
end
%
for k=1:n
ak = max(abs(A(k:n,k)));
index = find(A(:,k)==ak);
if length(index) == 0
index = find(A(:,k)==-ak);
end
%交换列主元
temp = A(index,:);
高斯消去法 LU分解法,大家都是学生,不偏大家,程序百分百运行通过,请放心下载。
A(index,:) = A(k,:);
A(k,:) = temp;
temp = b(index);b(index) = b(k); b(k) = temp;
%消元过程
for i=k+1:n
m=A(i,k)/A(k,k);
%消除列元素
A(i,k+1:n)=A(i,k+1:n)-m*A(k,k+1:n);
b(i)=b(i)-m*b(k);
end
end
%回代过程
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
x=x';
end
然后调用gaussMethod函数,来实现列主元的高斯消去法。在命令框中输入下列命令:
输出结果如下:
③用LU分解法求AX=b的解
首先建立一个myLU函数用来实现对系数矩阵A=LU的分解以及L和U的输出。程序代码如下:
function [L,U]=myLU(A)
高斯消去法 LU分解法,大家都是学生,不偏大家,程序百分百运行通过,请放心下载。
%实现对矩阵A的LU分解,L为下三角矩阵
A=[10,-7,0,1;-3,2.099999,6,2;5,-1,5,-1;2,1,0,2];
[n,n]=size(A);
L=zeros(n,n);
U=zeros(n,n);
for i=1:n
L(i,i)=1;
end
for k=1:n
for j=k:n
U(k,j)=A(k,j)-sum(L(k,1:k-1).*U(1:k-1,j)');
end
for i=k+1:n
L(i,k)=(A(i,k)-sum(L(i,1:k-1).*U(1:k-1,k)'))/U(k,k);
end
end
其次,在再编写一个.m文件,用于调用上述myLU函数以及实现对L和U的求解。
程序代码:
A=[10,-7,0,1;-3,2.099999,6,2;5,-1,5,-1;2,1,0,2];
b=[8;5.900001;5;1];
[L,U] = myLU(A)
n=length(b);
y=zeros(n,1); %开始解方程组Ux=y
y(1)=b(1);
for k=2:n
y(k)=b(k)-L(k,1:k-1)*y(1:k-1);
end
x=zeros(n,1);
x(n)=y(n)/U(n,n);
for k=n-1:-1:1
x(k)=(y(k)-U(k,k+1:n)*x(k+1:n))/U(k,k);
end
for k=1:n
fprintf('x[%d]=%f\n',k,x(k));
end
detA=det(A)
输出结果:
高斯消去法 LU分解法,大家都是学生,不偏大家,程序百分百运行通过,请放心下载。
从上面的结果可以看出LU分解的方法,求解方程组的方法使得得出的结果更加精确。