顺序消去
LU分解
function [L,A]=gauss_sxxq(A,b)
n=length(b);
L=-eye(n,n);%矩阵初始化
for j=1:n-1 %执行n-1次,消去成为上三角
if A(j,j)==0 %判断对角线元素是否为0
for k=j:n %如果某一个元素为0
if A(k,j)~=0 %逐行寻找该列非0元素
A([k j],:)=A([j k],:);
b([k j],:)=b([j k],:); %调换两行位置
break
end
end
end
for i=j+1:n %对第j+1行到第n行进行第j列消去
L(i,j)=-A(i,j)/A(j,j); %计算乘积算子
A(i,:)=L(i,j).*A(j,:)+A(i,:); %系数消元运算
b(i,:)=L(i,j).*b(j,:)+b(i,:); %对右端项做同样的运算
end
end
clc;
close;
clear;
A=zeros(5,5);%矩阵初始化
b=zeros(5,5);
while A==0 %保证矩阵非奇异
while A==A' %保证矩阵非对称
A=round(rand(5,5)*13) +11;
break
end
end
while b==0
b=round(rand(5,1)*13) +11;
break
end
[L,U]=gauss_sxxq(A,b); %调用函数
disp(U); %输出U
disp(-L); %输出L
实验结果