clear; %清空命令行窗口 clc; %清空命令行窗口

A=[10 -7 0 1 -3 2.099999 6 2 5 -1 5 -1 2 1 0 2]; %定义矩阵A b=[8;5.900001;5;1]; %定义向量b

[m,n]=size(A); %获取矩阵A的行数和列数 L=eye(n); %初始化下三角矩阵L为单位矩阵 U=zeros(n); %初始化上三角矩阵U为零矩阵 flag='ok'; %初始化标志变量为'ok'

for i=1:n %对于每一列i U(1,i)=A(1,i); %将A矩阵第一行的元素赋值给U矩阵的第一行 end

for r=2:n %对于每一行r(除去第一行) L(r,1)=A(r,1)/U(1,1); %计算L矩阵第r行第1列的值 end

for i=2:n %对于每一列i(除去第一列) for j=i:n %对于每一行j(从第i行开始) z=L(i,1:i-1)*U(1:i-1,j); %计算z值 U(i,j)=A(i,j)-z; %计算U矩阵第i行第j列的值 end if abs(U(i,i))<eps %如果U矩阵第i行第i列的值小于eps(极小值),则说明矩阵A的行列式为0,无法使用LU分解 flag='failure' %将标志变量设置为'failure' return; %直接退出 end for k=i+1:n %对于每一行k(从第i+1行开始) m=L(k,1:i-1)*U(1:i-1,i); %计算m值 L(k,i)=(A(k,i)-m)/U(i,i); %计算L矩阵第k行第i列的值 end end

L %输出下三角矩阵L U %输出上三角矩阵U y=L\b;x=U\y %使用LU分解求解方程组Ax=b,求解出向量x detA=det(L)*det(U) %计算矩阵A的行列式

clear;clc;A=10 -7 0 1 -3 2099999 6 2 5 -1 5 -1 2 1 0 2;b=8;5900001;5;1;mn=sizeA; L=eyen; U=zerosn; flag=ok; for i=1n U1i=A1i; end for r=2n Lr1=Ar1U11; end for

原文地址: https://www.cveoy.top/t/topic/fbdZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录