|
matlab代码
for i=1:n
w=det(a(1:i,1:i));
if w==0
error('矩阵的顺序主子式为零,无法作LU分解,程序中止');
end
end
这一段怎么改成CX CAS的程序?
for i,1,n
w:=det(a[1:i,1:i]) →这一块儿不太会处理了
if w=0 then
disp"矩阵的顺序主子式为零,无法作LU分解,程序中止"
endif
endfor
matlab 完整程序
clear
a=[1/4 1/5 1/6; 1/3 1/4 1/5; 1/2 1 2];
b=[9;8;8]
[m,n]=size(a);
if m~=n
error('矩阵非方阵,程序中止')
end
%计算a的各阶顺序主子式,判断能否进行LU分解
for i=1:n
w=det(a(1:i,1:i));
if w==0
error('矩阵的顺序主子式为零,无法作LU分解,程序中止');
end
end
%作LU分解
u(1,1:n)=a(1,1:n);%给出U的第一行
l(1,1)=1;%给出L的第一列
l(2:n,1)=a(2:n,1)/u(1,1);
for r=2:n%计算U的第r行、L的第r列
for i=r:n
u(r,i)=a(r,i);%计算U的第r行
for k=1:r-1
u(r,i)=u(r,i)-l(r,k)*u(k,i);
end
end
l(r,r)=1;%计算L的第r列
if r~=n
for i=r+1:n
l(i,r)=a(i,r);
for k=1:r-1
l(i,r)=l(i,r)-l(i,k)*u(k,r);
end
l(i,r)=l(i,r)/u(r,r);
end
end
end
fprintf('方阵为\n')
disp(a)
fprintf('单位下三角阵L为\n')
disp(l)
fprintf('单位上三角阵U为\n')
disp(u)
y=l\b
x=u\y |
|