c++求矩阵的秩_一文搞定矩阵相关概念 使用Excel矩阵计算不用愁

知识要点:

  • 矩阵的本质

  • 矩阵的计算公式

  • 实例演示

背景

矩阵计算是我们经常碰到的一个问题。在几乎所有跟“学问”二字稍微沾点边的东西里,矩阵这个家伙从不缺席。那Excel在其中扮演什么样的角色呢?

矩阵是什么呢?

矩阵就是把数字填到格子里。矩阵的发现来源于方程组的复杂性。

19世纪的时候,随着物理学的大发展,数学家非常苦恼,因为非常麻烦但是必须求解的方程组越来越多啦。

1c8a2318dc6c517a80efbc0c0dbcde10.png

求解上述方程组,比较麻烦。因为我们需要使用消元法对其进行处理,式子非常冗长。于是数学家提出Matrix概念。

b8e6807f325055bae4143fac221bee0f.png

于是原来比较头疼的公式,似乎一下变得简单啦。其中的系数部分单独组成了一个,而参数部分表达为了一个部分。矩阵是一种操作。

于是消元法就变成了矩阵的上下的加减。

在现实生活中,矩阵的一个比较好的例子是,某公司下有店铺两家,店铺各销售三种产品。A店的销量为a,b,c,而B店的销量为d,e,f。于是可以得到其矩阵:

9102a49cb102d79bd522b75bed9acc33.png

而每一个店的价格为pa,pb,pc,pd,pe,pd,pf。于是其价格矩阵为:

684e601da6884a19c8a4557524f6de36.png

两个矩阵相乘,就是多项式的乘法运算。为了美观和后续处理,将价格矩阵转置。就变成了我们的矩阵乘法运算。

所以说,矩阵是我们日常生活运算的进一步简化。

特征值

对于给定矩阵A,寻找一个常数λ(可以为复数)和非零向量x,使得向量x被矩阵A作用后所得的向量Ax与原向量x平行,并且满足Ax=λx。

其中x就是特征向量,而λ是特征值。

相当于原有的向量就使用了系数替代,使得原有的计算的难度大大降低。

在计算店铺销售收入的时候,销售数据矩阵和价格矩阵的相乘会得到一个列向量,该列向量上的每一个值都反映其销售的收入。如果存在一个值,能够更好替代销售数量矩阵,那么简化了销售数量,我们在计算的时候,就可以大大简化计算过程。

从几何意义上,向量x和向量Ax在空间上共线的时候会存在特征向量,只有共线了才会存在一个值,是的Ax=λx。A矩阵没有改变x的方向,而只是对只是进行长度上的伸缩而已。所以特征值就是特征向量在空间中的长度。特征值越大,就意味着特征向量越长。

一个变换可由一个矩阵乘法表示,而一个空间坐标系也可视作一个矩阵,而这个坐标系就可由这个矩阵的所有特征向量表示,用图来表示的话,可以想象就是一个空间张开的各个坐标角度,这一组向量可以完全表示一个矩阵表示的空间的“特征”,而他们的特征值就表示了各个角度上的能量(可以想象成从各个角度上伸出的长短,越长的轴就越可以代表这个空间,它的“特征”就越强,或者说显性,而短轴自然就成了隐性特征),因此,通过特征向量/值可以完全描述某一几何空间这一特点,使得特征向量与特征值在几何(特别是空间几何)及其应用中得以发挥。

从运动的角度,矩阵是一个变换,变换是一种运动,对于运动而言,最重要的当然就是运动的速度和方向,:特征值就是运动的速度,特征向量就是运动的方向。要观察矩阵所代表的运动,需要把它附加到向量上才观察的出来。

特征向量所在的直线,包含了所有的特征向量,因为他们与x同线,其集合成为特征空间。

行列式的值

行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标量,写作det(A)或 | A | 。

一个矩阵的行列式就是一个平行多面体的(定向的)体积,这个多面体的每条边对应着对应矩阵的列。

行列式的一个主要应用是解线性方程组的解的个数。当线性方程组的方程个数与未知数个数相等时,方程组不一定总是有唯一解。对一个有n个方程和n个未知数的线性方程组,我们研究未知数系数所对应的行列式。这个线性方程组有唯一解当且仅当它对应的行列式不为零。这也是行列式概念出现的根。

矩阵的秩

矩阵不满秩有两种情况(讨论行不满秩):

  • 一,某一行或者列为零。二,某两行或者多行线性相关。

  • 一:讨论某行为零 当乘以一个有零行的矩阵,会对一个向量构成一种"降维"的操作。

换言之,有几个方程就可以把未知数求解出来的问题。

特征值分解

对于矩阵A可以对角化的话,可以通过相似矩阵进行下面这样的特征值分解:

A=P \Lambda P^{-1}

a9583e5c9acf6481a7a758ef3fa08e00.png

其中\Lambda是对角矩阵,P的列向量是单位化的特征向量。

逆矩阵

引入逆矩阵的原因之一是用来实现矩阵的除法。比如有矩阵X,A,B,其中X*A = B,我们要求X矩阵的值。本能来说,我们只需要将B/A就可以得到X矩阵了。但是对于矩阵来说,不存在直接相除的概念。我们需要借助逆矩阵,间接实现矩阵的除法。

具体的做法是等式两边在相同位置同时乘以矩阵A的逆矩阵,如下所示,X*A*(A的逆矩阵)= B*(A的逆矩阵)。由于A*(A的逆矩阵) = I,即单位矩阵,任何矩阵乘以单位矩阵的结果都是其本身。所以,我们可以得到X = B*(A的逆矩阵)。

奇异值

奇异值分解,就是把矩阵分成多个“分力”。奇异值的大小,就是各个“分力”的大小。

奇异值分解的几何含义为:对于任何的一个矩阵,我们要找到一组两两正交单位向量序列,使得矩阵作用在此向量序列上后得到新的向量序列保持两两正交。

特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,所以需要使用奇异值分解的方法来实现。

奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。

767643923a64d0e26b9dbc3ac6a77217.png

假设A为m*n矩阵,U是m*m矩阵, \sum为n*m的矩阵,对角线外其他元素均为0,V^T为n*n矩阵 那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 * A,将会得到一个方阵,我们用这个方阵求特征值可以得到:

62734c6fcf0554987e477b60db93bdb7.png

这里得到的v,就是我们上面的右奇异向量。

Excel之矩阵篇

在Excel中,矩阵采用数组形式进行表示,其快捷键为Shift+Ctrl+Enter。

说明:如果您有最新版本的Microsoft 365,则只需在输出区域左上角的单元格中输入公式,然后按enter将公式确认为动态数组公式。否则,必须首先选择输出区域,在输出区域的左上角单元格中输入公式(公式必须作为遗留的数组公式进行输入),然后按 Ctrl+Shift+Enter 进行确认。

一个单元格就是一个变量,一片单元域也可以视为一组变量。为了计算上的方便,一组变量最好给一个数组名。例如A={A1:C3}、B={E1:G3}等。数组名的设置步骤是:选定数组域,单击“插入”菜单,选择“名称”项中的“定义”命令,输入数组名,单击“确定”按钮即可。更简单的命名办法为:选择数组域,单击名称框,直接输入名称就行了。

Excel中常用的函数有:

  • MDETERM——计算一个矩阵的行列式的值;- MINVERSE——计算一个矩阵的逆矩阵;

  • MMULT——计算两个矩阵的乘积;

  • SUMPRODUCT——计算所有矩阵对应元素乘积之和。

  • 返回指定维度的单位矩阵

矩阵的加减法

矩阵的加减与常规一致,对应部分加减即可。

矩阵乘法

采用MMULT可以实现

矩阵相除

矩阵A乘B的逆矩阵,所以计算公式是“=MMULT(A,MINVERSE(B))”

具体步骤请看图:

  • 关键是首先选择需要输出的区域,这一步需要你懂一点矩阵知识,逆矩阵是大小不变的,乘法是m*n,n*m,最后是m*m。 

bbe3e3bfbe07852c27f2d44b16df34ef.png

总体而言,理论比较多,但是用起来很简单,希望可以在矩阵计算中更好地帮助你。我是兔子家的萝卜头。

版权所有,商业转载请联系本人。

长按关注本公众号

b162e9058c39f3eb4c3953965b1278bd.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值