欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

玩转Matlab:第五课 - 矩阵与矩阵操作详解

最编程 2024-02-12 08:42:47
...

二狗在MATLAB矩阵及其运算(三)篇章中,给大家留下关于自编行列式运算的小程序,本期二狗在此给大家解答一下自编行列式程序思路及代码,再给大家讲一下广逆矩阵的概念,为深入学习广逆矩阵做准备。

承上 :行列式自编程序

以一个四阶行列式为例

我们以第一行的每列展开,N阶矩阵拆分成(N-1)阶矩阵的程序自编。

用rem()函数判断正负号,(1+i)被2整除为+,(1+i)不能被2整除为-

现在转化成了求三个三阶行列的值的问题。三阶行列式采用上述方法分解成二阶行列式,二阶行列式根据上述方法转化为一个具体数,至此完成了行列式的分解。

启下:广逆矩阵概念

在上期matlab矩阵连载中及其运算(四)中,在文末提到的广逆矩阵概念,广逆矩阵这个问题比较大,将会分几期进行讲解,本期给大家讲讲广逆矩阵的概念。

由克拉默法则知道当A∈Cnnxn时,方程组

有唯一解,且其解为X=A-1b,但对于一般的线性方程组

是否也存在类似的结论?即是否存在矩阵Bn,m,使X=Bn,mb

定义:设A∈Cnmxn,如果存在矩阵B∈Cnnxm满足摩尔-彭罗斯方程

(一)ABA=A (二)BAB=B (三)(AB)T=AB (四)(BA)T=BA

一部分或者全部,则称B为A的广逆矩阵。

由定义可知,广义逆矩阵共有

即有十五种广义逆矩阵。

这一点有可能理解不了。为什么会有这么复杂的组合以及这么多的组合,当然二狗毕竟不是研究矩阵方面的专家,15种案例是给不了的,只能给出少数几种,让大家简单对广逆矩阵的复杂性有一定了解,而不是用pinv()就可以求出广逆矩阵。

满足:ABA=A。不满足一、二、三的逆矩阵

满足:ABA=A、BAB=B,不满足等式三、四的逆矩阵

满足:ABA=A、BAB=B、(AB)T=AB、(BA)T=BA

满足ABA=A、BAB=B、(BA)T=BA,不满足等式三的逆矩阵

是不是感觉好复杂,而且每个类型的B是怎么求出来的,不能类型的特性是什么,这将是我们下一期连载的内容。本期让大家知道广逆矩阵的类型较多就可以了,在多讲就怕读者一时间难以消化。

大家记住,在矩阵学习中或者实际应用中如果不仔细看条件,用错逆矩阵很有可能会带来计算麻烦。在广逆矩阵的计算过程中一点要考虑周全,比如说在bp算法反馈中使用符合不同等式的逆矩阵计算对BP误差的减小是否有影响?在文献中使用的逆矩阵通常指的是哪一类型,若是类型不同,会带来什么问题。这些问题二狗是解决不了的,还靠读者自己遇到问题时通过二狗的抛砖引玉,引发思考。

function H_Det =Matrix_Det(H,N)%输入矩阵 阶数
H_Det = 0;
if N==1
    H_Det = H(1,1);
    return;
end
temp = zeros(N-1,N-1);
for i=1:N
    for j=2:N %第二行开始
        for k=1:N-1
            if k>=i
                cln = k+1;
            else
                cln = k;
            end
            temp(j-1,k) = H(j,cln);
        end
    end
    t = Matrix_Det(temp,N-1);%递归
    if rem(1+i,2)==0  %(-1)^(1+i)
        H_Det = H_Det+H(1,i)*t;
    else
        H_Det = H_Det-H(1,i)*t;
    end
end
end

本文作者:过冷水