玩转Matlab:第五课 - 矩阵与矩阵操作详解
二狗在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
本文作者:过冷水
推荐阅读
-
MATLAB 数据操作教程 变量操作和矩阵表示详解
-
如何轻松绘制深度学习中的邻接矩阵热力图:步骤详解与实际操作
-
理解图形基础:邻接矩阵与邻接表的储存与操作方法详解
-
玩转数据结构与算法:图的邻居连接方式探索 - 邻接表与邻接矩阵详解
-
理解图形基础:邻接矩阵与邻接表的储存与操作方法详解
-
在Matlab中实现矩阵的对角化操作详解
-
图的存储与基本操作详解:邻接矩阵和邻接表方法及C/C++代码示例
-
玩转Matlab:第五课 - 矩阵与矩阵操作详解
-
入门级oj编程:玩转多维数组——矩阵归零操作与消减序列和的讲解(07期)
-
在sklearn里玩转分类模型评价:Kappa值、混淆矩阵、综合评分报告与汉明距离详解(第二部分)