矩阵论算法
① 奇异值分解(SVD)的原理及应用
姓名:刘保阔
学号:19021210887
转自:https://www.cnblogs.com/tianqi/p/9745913.html
【嵌牛导读】
奇异值分解(Singular Value Decomposition)是 矩阵论 中一种重要的 矩阵 分解,奇异值分解则是 特征 分解在任意矩阵上的推广。在 信号处理 、 统计学 等领域有重要应用。
【嵌牛正文】
一、奇异值与特征值基础知识:
特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧:
1)特征值:
如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:
这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:
其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。我这里引用了一些参考文献中的内容来说明一下。首先,要明确的是,一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面的一个矩阵:
它其实对应的线性变换是下面的形式:
因为这个矩阵M乘以一个向量(x,y)的结果是:
上面的矩阵是对称的,所以这个变换是一个对x,y轴的方向一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时,是拉长,当值<1时时缩短),当矩阵不是对称的时候,假如说矩阵是下面的样子:
它所描述的变换是下面的样子:
这其实是在平面上对一个轴进行的拉伸变换(如蓝色的箭头所示),在图中,蓝色的箭头是一个最主要的变化方向(变化方向可能有不止一个),如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。反过头来看看之前特征值分解的式子,分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。
当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是之前说的:提取这个矩阵最重要的特征。总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。
2)奇异值:
下面谈谈奇异值分解。特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,比如说有N个学生,每个学生有M科成绩,这样形成的一个N * M的矩阵就不可能是方阵,我们怎样才能描述这样普通的矩阵呢的重要特征呢?奇异值分解可以用来干这个事情,奇异值分解是一个能适用于任意的矩阵的一种分解的方法:
假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片
那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 * A,将会得到一个方阵,我们用这个方阵求特征值可以得到:这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到:
这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子:
右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。
二、奇异值的计算:
奇异值的计算是一个难题,是一个O(N^3)的算法。在单机的情况下当然是没问题的,matlab在一秒钟内就可以算出1000 * 1000的矩阵的所有奇异值,但是当矩阵的规模增长的时候,计算的复杂度呈3次方增长,就需要并行计算参与了。Google的吴军老师在数学之美系列谈到SVD的时候,说起Google实现了SVD的并行化算法,说这是对人类的一个贡献,但是也没有给出具体的计算规模,也没有给出太多有价值的信息。
其实SVD还是可以用并行的方式去实现的,在解大规模的矩阵的时候,一般使用迭代的方法,当矩阵的规模很大(比如说上亿)的时候,迭代的次数也可能会上亿次,如果使用Map-Rece框架去解,则每次Map-Rece完成的时候,都会涉及到写文件、读文件的操作。个人猜测Google云计算体系中除了Map-Rece以外应该还有类似于MPI的计算模型,也就是节点之间是保持通信,数据是常驻在内存中的,这种计算模型比Map-Rece在解决迭代次数非常多的时候,要快了很多倍。
Lanczos迭代 就是一种解对称方阵部分特征值的方法(之前谈到了,解A’* A得到的对称方阵的特征值就是解A的右奇异向量),是将一个对称的方程化为一个三对角矩阵再进行求解。按网上的一些文献来看,Google应该是用这种方法去做的奇异值分解的。请见Wikipedia上面的一些引用的论文,如果理解了那些论文,也“几乎”可以做出一个SVD了。
由于奇异值的计算是一个很枯燥,纯数学的过程,而且前人的研究成果(论文中)几乎已经把整个程序的流程图给出来了。更多的关于奇异值计算的部分,将在后面的参考文献中给出,这里不再深入,我还是focus在奇异值的应用中去。
三、奇异值与主成分分析(PCA):
主成分分析在上一节里面也讲了一些,这里主要谈谈如何用SVD去解PCA的问题。PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模型的方差很大,那就说明模型不稳定了。但是对于我们用于机器学习的数据(主要是训练数据),方差大才有意义,不然输入的数据都是同一个点,那方差就为0了,这样输入的多个数据就等同于一个数据了。以下面这张图为例子:
这个假设是一个摄像机采集一个物体运动得到的图片,上面的点表示物体运动的位置,假如我们想要用一条直线去拟合这些点,那我们会选择什么方向的线呢?当然是图上标有signal的那条线。如果我们把这些点单纯的投影到x轴或者y轴上,最后在x轴与y轴上得到的方差是相似的(因为这些点的趋势是在45度左右的方向,所以投影到x轴或者y轴上都是类似的),如果我们使用原来的xy坐标系去看这些点,容易看不出来这些点真正的方向是什么。但是如果我们进行坐标系的变化,横轴变成了signal的方向,纵轴变成了noise的方向,则就很容易发现什么方向的方差大,什么方向的方差小了。
一般来说,方差大的方向是信号的方向,方差小的方向是噪声的方向,我们在数据挖掘中或者数字信号处理中,往往要提高信号与噪声的比例,也就是信噪比。对上图来说,如果我们只保留signal方向的数据,也可以对原数据进行不错的近似了。
PCA的全部工作简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,这样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小。
还是假设我们矩阵每一行表示一个样本,每一列表示一个feature,用矩阵的语言来表示,将一个m * n的矩阵A的进行坐标轴的变化,P就是一个变换的矩阵从一个N维的空间变换到另一个N维的空间,在空间中就会进行一些类似于旋转、拉伸的变化。
而将一个m * n的矩阵A变换成一个m * r的矩阵,这样就会使得本来有n个feature的,变成了有r个feature了(r < n),这r个其实就是对n个feature的一种提炼,我们就把这个称为feature的压缩。用数学语言表示就是:
但是这个怎么和SVD扯上关系呢?之前谈到,SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量…我们回忆一下之前得到的SVD式子:
在矩阵的两边同时乘上一个矩阵V,由于V是一个正交的矩阵,所以V转置乘以V得到单位阵I,所以可以化成后面的式子
将后面的式子与A * P那个m * n的矩阵变换为m * r的矩阵的式子对照看看,在这里,其实V就是P,也就是一个变化的向量。这里是将一个m * n 的矩阵压缩到一个m * r的矩阵,也就是对列进行压缩,如果我们想对行进行压缩(在PCA的观点下,对行进行压缩可以理解为,将一些相似的sample合并在一起,或者将一些没有太大价值的sample去掉)怎么办呢?同样我们写出一个通用的行压缩例子:
这样就从一个m行的矩阵压缩到一个r行的矩阵了,对SVD来说也是一样的,我们对SVD分解的式子两边乘以U的转置U'
这样我们就得到了对行进行压缩的式子。可以看出,其实PCA几乎可以说是对SVD的一个包装,如果我们实现了SVD,那也就实现了PCA了,而且更好的地方是,有了SVD,我们就可以得到两个方向的PCA,如果我们对A’A进行特征值的分解,只能得到一个方向的PCA。
四、奇异值与潜在语义索引LSI:
潜在语义索引(Latent Semantic Indexing)与PCA不太一样,至少不是实现了SVD就可以直接用的,不过LSI也是一个严重依赖于SVD的算法,之前吴军老师在 矩阵计算与文本处理中的分类问题 中谈到:
“三个矩阵有非常清楚的物理含义。第一个矩阵X中的每一行表示意思相关的一类词,其中的每个非零元素表示这类词中每个词的重要性(或者说相关性),数值越大越相关。最后一个矩阵Y中的每一列表示同一主题一类文章,其中每个元素表示这类文章中每篇文章的相关性。中间的矩阵则表示类词和文章雷之间的相关性。因此,我们只要对关联矩阵A进行一次奇异值分解,w 我们就可以同时完成了近义词分类和文章的分类。(同时得到每类文章和每类词的相关性)。”
上面这段话可能不太容易理解,不过这就是LSI的精髓内容,我下面举一个例子来说明一下,下面的例子来自LSA tutorial,具体的网址我将在最后的引用中给出:
这就是一个矩阵,不过不太一样的是,这里的一行表示一个词在哪些title中出现了(一行就是之前说的一维feature),一列表示一个title中有哪些词,(这个矩阵其实是我们之前说的那种一行是一个sample的形式的一种转置,这个会使得我们的左右奇异向量的意义产生变化,但是不会影响我们计算的过程)。比如说T1这个title中就有guide、investing、market、stock四个词,各出现了一次,我们将这个矩阵进行SVD,得到下面的矩阵:
左奇异向量表示词的一些特性,右奇异向量表示文档的一些特性,中间的奇异值矩阵表示左奇异向量的一行与右奇异向量的一列的重要程序,数字越大越重要。
继续看这个矩阵还可以发现一些有意思的东西,首先,左奇异向量的第一列表示每一个词的出现频繁程度,虽然不是线性的,但是可以认为是一个大概的描述,比如book是0.15对应文档中出现的2次,investing是0.74对应了文档中出现了9次,rich是0.36对应文档中出现了3次;
其次,右奇异向量中一的第一行表示每一篇文档中的出现词的个数的近似,比如说,T6是0.49,出现了5个词,T2是0.22,出现了2个词。
然后我们反过头来看,我们可以将左奇异向量和右奇异向量都取后2维(之前是3维的矩阵),投影到一个平面上,可以得到:
在图上,每一个红色的点,都表示一个词,每一个蓝色的点,都表示一篇文档,这样我们可以对这些词和文档进行聚类,比如说stock 和 market可以放在一类,因为他们老是出现在一起,real和estate可以放在一类,dads,guide这种词就看起来有点孤立了,我们就不对他们进行合并了。按这样聚类出现的效果,可以提取文档集合中的近义词,这样当用户检索文档的时候,是用语义级别(近义词集合)去检索了,而不是之前的词的级别。这样一减少我们的检索、存储量,因为这样压缩的文档集合和PCA是异曲同工的,二可以提高我们的用户体验,用户输入一个词,我们可以在这个词的近义词的集合中去找,这是传统的索引无法做到的。
② 求一种快速求解矩阵论中求解行列式因子,不变因子,初等因子,约当型...
对计算机而言这种计算相当的复杂。。。大概是先转化成三对角矩阵,然后再进行各种迭代计算。对于人工计算,还是老老实实算出各个特征子空间,然后好好分解吧。
③ 算法工程师应该学哪些
有多少种算法,就有多少种算法工程师。但是所有的算法工程师都要掌握的知识有:
1
编程语言:matlab
或者
pthon
或者
c/c++。这是基础。比算法理论更基础。
2
算法理论:《最优化算法》,《高等数学》,《矩阵论》(线性代数)等数学类,《数字信号处理》,《概率论》
这两项掌握好了,无论什么算法,只要给你时间和项目,你都可以搞定。
更相信的可以单独联系我或者加我微信
④ 线性代数,矩阵论,高等代数,数值分析的关系是什么
线性代数:课程主要是线性代数的基础内容。课程偏向于线性代数工具的应用。
高等代数:线性代数为主要内容,比线性代数课程内容深很多,另外还有一点别的内容,比如多项式等。
矩阵论:高等代数中矩阵基础知识的深化,相当于高等代数的分支。
数值分析:和其他三门不同,这门是应用数学,主要是数值计算的知识。换句话说,怎样计算使得更准确更快,各种计算方法的优缺点等。使用的知识不限于代数学知识,也可以是别的学科知识。
(4)矩阵论算法扩展阅读:
线性代数学术地位
线性代数在数学、物理学和技术学科中有各种重要应用,因而它在各种代数分支中占居首要地位。在计算机广泛应用的今天,计算机图形学、计算机辅助设计、密码学、虚拟现实等技术无不以线性代数为其理论和算法基础的一部分。
线性代数所体现的几何观念与代数方法之间的联系,从具体概念抽象出来的公理化方法以及严谨的逻辑推证、巧妙的归纳综合等,对于强化人们的数学训练,增益科学智能是非常有用的。
随着科学的发展,我们不仅要研究单个变量之间的关系,还要进一步研究多个变量之间的关系,各种实际问题在大多数情况下可以线性化,而由于计算机的发展,线性化了的问题又可以被计算出来,线性代数正是解决这些问题的有力工具。
线性代数的计算方法也是计算数学里一个很重要的内容。
线性代数的含义随数学的发展而不断扩大。线性代数的理论和方法已经渗透到数学的许多分支,同时也是理论物理和理论化学所不可缺少的代数基础知识。
“以直代曲”是人们处理很多数学问题时一个很自然的思想。很多实际问题的处理,最后往往归结为线性问题,它比较容易处理。因此,线性代数在工程技术和国民经济的许多领域都有着广泛的应用,是一门基本的和重要的学科。
如果进入科研领域,你就会发现,只要不是线性的东西,我们基本都不会!线性是人类少数可以研究得非常透彻的数学基础性框架。学好线性代数,你就掌握了绝大多数可解问题的钥匙。
有了这把钥匙,再加上相应的知识补充,你就可以求解相应的问题。可以说,不学线性代数,你就漏过了95%的人类智慧!非线性的问题极为困难,我们并没有足够多的通用的性质和定理用于求解具体问题。如果能够把非线性的问题化为线性的,这是我们一定要走的方向!
事实上,微积分“以直代曲”的思想就是将整体非线性化为局部线性的一个经典的例子,尽管高等数学在定义微分时并没有用到一点线性代数的内容。许多非线性问题的处理――譬如流形、微分几何等,最后往往转化为线性问题。
包括科学研究中,非线性模型通常也可以被近似为线性模型。随着研究对象的复杂化与抽象化,对非线性问题线性化,以及对线性问题的求解,就难免涉及到线性代数的术语和方法了。从这个意义上,线性代数可以被认为是许多近、现代数学分支的共同基础。
参考资料来源:
网络-数学
⑤ 矩阵特征值怎么求,举个简单例子谢谢
求n阶矩阵A的特征值的一般步骤为
(1)写出方程丨λI-A丨=0,其中I为与A同阶的单位阵,λ为代求特征值
(2)将n阶行列式变形化简,得到关于λ的n次方程
(3)解此n次方程,即可求得A的特征值
只有方阵可以求特征值,特征值可能有重根。
举例,求已知A矩阵的特征值
则A矩阵的特征值为1,-1和2.
⑥ 研究生期间学的矩阵论和矩阵分析一样么
不一样,矩阵分析是矩阵论的部分内容,主要内容是矩阵函数的微积分,广义逆矩阵,矩阵的逼近分析。
矩阵本身所具有的性质依赖于元素的性质,矩阵由最初作为一种工具经过两个多世纪的发展,现在已成为独立的一门数学分支——矩阵论。而矩阵论又可分为矩阵方程论、矩阵分解论和广义逆矩阵论等矩阵的现代理论。
矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。
(6)矩阵论算法扩展阅读
矩阵论的一个重要用途是解线性方程组。线性方程组中未知量的系数可以排成一个矩阵,加上常数项,则称为增广矩阵。另一个重要用途是表示线性变换,即是诸如f(x) 4x之类的线性函数的推广。
设定基底后,某个向量v可以表示为m×1的矩阵,而线性变换f可以表示为行数为m的矩阵A,使得经过变换后得到的向量f(v)可以表示成Av的形式。矩阵的特征值和特征向量可以揭示线性变换的深层特性。
矩阵论的基本内容
一般矩阵论会包括如下内容
1、线性空间的相关内容,包括线性空间的定义及其性质,线性子空间;
2、内积空间的相关内容,包括欧氏空间 ;
3、 线性变换的相关内容,包括最小多项式理论 ;
4、 范数理论及其应用的相关内容,包括向量范数,矩阵范数以及范数的应用 。
⑦ 矩阵论有什么用
矩阵论的一个重要用途是解线性方程组。
在其他领域还有诸多应用:
1、物理应用
线性变换及对称线性变换及其所对应的对称,在现代物理学中有着重要的角色。
描述最轻的三种夸克时,需要用到一种内含特殊酉群SU(3)的群论表示;物理学家在计算时会用一种更简便的矩阵表示,叫盖尔曼矩阵,这种矩阵也被用作SU(3)规范群,而强核力的现代描述──量子色动力学的基础正是SU(3)。
2、量子态的线性组合
1925年海森堡提出第一个量子力学模型时,使用了无限维矩阵来表示理论中作用在量子态上的算子。
3、简正模式
矩阵在物理学中的另一类泛应用是描述线性耦合调和系统。这类系统的运动方程可以用矩阵的形式来表示,即用一个质量矩阵乘以一个广义速度来给出运动项,用力矩阵乘以位移向量来刻画相互作用。
4、几何光学
在几何光学里,可以找到很多需要用到矩阵的地方。几何光学是一种忽略了光波波动性的近似理论,这理论的模型将光线视为几何射线。
(7)矩阵论算法扩展阅读
一般矩阵论会包括如下内容:
1、线性空间的相关内容,包括线性空间的定义及其性质,线性子空间;
2、内积空间的相关内容,包括欧氏空间;
3、线性变换的相关内容,包括最小多项式理论 ;
4、范数理论及其应用的相关内容,包括向量范数,矩阵范数以及范数的应用 ;
5、矩阵分析及其应用的相关内容,包括向量和矩阵极限、微分和积分 、方阵级数理论、方阵级数理论的应用等;
6、矩阵分解的相关内容,包括最大秩分解和矩阵分解的应用 ;
7、广义逆矩阵及其应用的相关内容,包括基本定义和相关应用;
8、特征值的估计及广义特征值的相关内容,包括特征值的估计及广义特征值和应用。
⑧ 试求方程组x'=Ax的基解矩阵,并求满足初值
关于常系数线性微分方程组的expAt的唯一性在矩阵论的理论中,计算一个矩阵的e指A次幂,得到的结果expA为一个唯一矩阵,但是在解决线性定常微分方程组x'=Ax+b对应的齐次方程的实基础解系(齐次基解矩阵)的时候,我使用海里哈密尔顿定理,约当标准型解法,拉普拉斯变换法和解空间分解法来运算,结果会经常得到不完全相同的结果.例如有可能用空间分解法得到结果是拉普拉斯变换方法解结果的某种线性组合,具体是什么原因导致的这种差异?或者是由于我计算方法上有错误?在数学角度上是否有方法对这种差异进行分析? 我的分析是可能由于矩阵论的那个结论A是一个固定矩阵,而微分方程组里的A是允许做行变换的.那么如果方程x'=Ax+b中的A做行变换,对应的b向量是否也要做变换才能保证同一初始条件下的特解完全相同?这种行变换是否会改变A的特征值?如果改变的话,是否有一种变换可以在不改变特征值的前提下改变A的结构?expAt如果做了某种线性变换,是否对于x'=Ax+b本身的特性造成影响(我已经验证发现对于通解没有影响)? 最后一个问题,如何在实际问题中考虑这种expAt的线性变换(我是自动化学科的)? 我要得到的结论并非与基础解系有关,而是和实基础解系有关.方程其次实通解为:expAt行向量所张成的一个欧氏空间,expAt可由任意一个通解乘以该通解的t=0的逆矩阵求得,也可以由其他方法求得,但是矩阵论中expA的运算结果是唯一的,而我通过不同方法求得的expAt却是expAt的某种行变换.对于求方程的实数域通解没有影响,但是对于工程算法方面却有很大影响,所以我最关心的结论是这种不一致是何种原因造成的.
⑨ 矩阵对矩阵求导
在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合[1],最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。
矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。[2]在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。关于矩阵相关理论的发展和应用,请参考《矩阵理论》。在天体物理、量子力学等领域,也会出现无穷维的矩阵,是矩阵的一种推广。
数值分析的主要分支致力于开发矩阵计算的有效算法,这是一个已持续几个世纪以来的课题,是一个不断扩大的研究领域。 矩阵分解方法简化了理论和实际的计算。 针对特定矩阵结构(如稀疏矩阵和近角矩阵)定制的算法在有限元方法和其他计算中加快了计算。 无限矩阵发生在行星理论和原子理论中。 无限矩阵的一个简单例子是代表一个函数的泰勒级数的导数算子的矩阵[3]
中文名
矩阵
外文名
Matrix
别称
矩阵式、纵横阵
表达式
Amn
提出者
凯利
快速
导航
定义
基本运算
乘法
行列式
特征值与特征向量
矩阵的迹
正定性
矩阵的分解
特殊类别
范数
应用
历史
矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究。
在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合[1] ,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。作为解决线性方程的工具,矩阵也有不短的历史。成书最早在东汉前期的《九章算术》中,用分离系数法表示线性方程组,得到了其增广矩阵。在消元过程中,使用的把某行乘以某一非零实数、从某行中减去另一行等运算技巧,相当于矩阵的初等变换。但那时并没有现今理解的矩阵概念,虽然它与现有的矩阵形式上相同,但在当时只是作为线性方程组的标准表示与处理方式。
阿瑟·凯利,矩阵论奠基人
矩阵正式作为数学中的研究对象出现,则是在行列式的研究发展起来后。逻辑上,矩阵的概念先于行列式,但在实际的历史上则恰好相反。日本数学家关孝和(1683年)与微积分的发现者之一戈特弗里德·威廉·莱布尼茨(1693年)近乎同时地独立建立了行列式论。其后行列式作为解线性方程组的工具逐步发展。1750年,加布里尔·克拉默发现了克莱姆法则[5] 。
矩阵的概念在19世纪逐渐形成。1800年代,高斯和威廉·若尔当建立了高斯—若尔当消去法。1844年,德国数学家费迪南·艾森斯坦(F.Eisenstein)讨论了“变换”(矩阵)及其乘积。1850年,英国数学家詹姆斯·约瑟夫·西尔维斯特(James Joseph Sylvester)首先使用矩阵一词。
詹姆斯约瑟夫西尔维斯特
英国数学家阿瑟·凯利被公认为矩阵论的奠基人。他开始将矩阵作为独立的数学对象研究时,许多与矩阵有关的性质已经在行列式的研究中被发现了,这也使得凯利认为矩阵的引进是十分自然的。他说:“我决然不是通过四元数而获得矩阵概念的;它或是直接从行列式的概念而来,或是作为一个表达线性方程组的方便方法而来的。”他从1858年开始,发表了《矩阵论的研究报告》等一系列关于矩阵的专门论文,研究了矩阵的运算律、矩阵的逆以及转置和特征多项式方程。凯利还提出了凯莱-哈密尔顿定理,并验证了3×3矩阵的情况,又说进一步的证明是不必要的。