用MATLAB编程求矩阵的逆矩阵,写了运行不出来,请指教!
function[D]=qnjz(A)[m,n]=size(A);D=eye(n);U=zeros(1,2*n);E=[A,D];ifm~=ndisp('A不是方阵')r...
function [D]=qnjz(A)
[m,n]=size(A);D=eye(n);U=zeros(1,2*n);
E=[A,D];
if m~=n
disp('A不是方阵')
return
end
if det(A)==0
dips('奇异矩阵无逆矩阵')
return
end
for i=1:n
[x,y]=max(abs(E(i:n,i)));
U=E(i,i:2*n);
E(i,i:2*n)=E(y,i:2*n);
E(i,i:2*n)=U;
end
for p=i+1:n
z=E(p,i)/E(i,i);
E(p,i:2*n)=E(p,i:2*n)-z*E(i,i:2*n)
end
end 展开
[m,n]=size(A);D=eye(n);U=zeros(1,2*n);
E=[A,D];
if m~=n
disp('A不是方阵')
return
end
if det(A)==0
dips('奇异矩阵无逆矩阵')
return
end
for i=1:n
[x,y]=max(abs(E(i:n,i)));
U=E(i,i:2*n);
E(i,i:2*n)=E(y,i:2*n);
E(i,i:2*n)=U;
end
for p=i+1:n
z=E(p,i)/E(i,i);
E(p,i:2*n)=E(p,i:2*n)-z*E(i,i:2*n)
end
end 展开
1个回答
展开全部
你这个程序离目标还差很远
第一个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
第一个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
追问
追答
你的程序乱七八糟,我懒得看了
按你的思路重写了一个,你自己看
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
东莞大凡
2024-08-07 广告
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询