求改编一个判断矩阵顺序主子式是否为零的程序
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) →这一块儿不太会处理了
if w=0 then
disp"矩阵的顺序主子式为零,无法作LU分解,程序中止"
endif
endfor
matlab 完整程序
clear
a=;
b=
=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 貌似有点眉目了。。。
subMat(Matrix1[, startRow] [, startCol] [, endRow] [, endCol])
把这个给忘了。。 for i,1,n
w:=det(submat(a,1,1,i,i))
if w=0 then
disp"矩阵的顺序主子式为零,无法作LU分解,程序中止"
endif
endfor
这样是否就对了? 直接把lu函数放在try里面 直接把lu函数放在try里面
imath 发表于 2011-12-29 20:36 http://www.cncalc.org/images/common/back.gif
lu函数没有过程,我要计算机的做题过程,所以只好自己写一个
而且题目要求有用LU的有选主元的LU的,计算器自带的是选主元有置换矩阵的 把整个function放在try else之间,else和endtry中间弄个stop就好了
页:
[1]