用MATLAB编程求矩阵的逆矩阵,写了运行不出来,请指教!
发布网友
发布时间:2022-04-30 17:03
我来回答
共1个回答
热心网友
时间:2022-06-28 02:14
你这个程序离目标还差很远
第一个for循环里第3,4行写错了,改成
E(i,i:2*n)=E(i-1+y,i:2*n);
E(i-1+y,i:2*n)=U;
第二个for循环应该嵌在第一个for循环里,或者说上一行的end应该去掉
即使这些都改好了,也只不过是把A消成上三角阵,要消成单位阵之后才能得到结果,况且你并没有把结果赋给作为返回值的D追问
q=E(x,s)/E(s,s);
E(x,s:2*n)=E(x,s:2*n)-q*E(s,s:2*n);
end
end
end
E(n,1:2*n)=E(n,1:2*n)/E(n,n);
D=E(1:n,n+1:2*n)
end
我改成这样了,运行后不结果不正确
追答
你的程序乱七八糟,我懒得看了
按你的思路重写了一个,你自己看
function D = njz(A)
[m, n] = size(A);
if m ~= n
disp('A is not square')
D = 0;
return
end
E = [A, eye(n)];
for i = 1:n
[x, y] = max(abs(E(i:n, i)));
E([i, i-1+y], i:2*n) = E([i-1+y, i], i:2*n);
if E(i, i) == 0
disp('A is singular')
D = 0;
return
end
E(i, i:2*n) = E(i, i:2*n)/E(i, i);
E([1:i-1, i+1:n], i:2*n) = E([1:i-1, i+1:n], i:2*n) ...
- E([1:i-1, i+1:n], i)*E(i, i:2*n);
end
D = E(1:n, n+1:2*n);
return