用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
展开
 我来答
电灯剑客
科技发烧友

推荐于2016-01-23 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1.2万
采纳率:83%
帮助的人:4940万
展开全部
你这个程序离目标还差很远
第一个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
东莞大凡
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间... 点击进入详情页
本回答由东莞大凡提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式