1.2 线性代数发展简介
1.2.1 线性代数数学理论
线性代数学科的起源是在求解线性方程时引入行列式的概念。德国数学家Gottfried Leibniz(1646−1716,图1-3(a))在1693年就研究过行列式的问题。1750年,瑞士数学家Gabriel Cramer(1704−1752,图1-3(b))利用行列式的概念给出了线性方程组的显式解法,该方法现在称为Cramer法则。后来,德国数学家Johann Gauss(1777−1855,图1-3(c))提出了求解线性方程组的方法,被后人称为Gauss消去法。
图1-3 Leibniz、Cramer与Gauss画像
注:图像均来源于维基百科
对矩阵代数的系统研究最早出现于18世纪中叶的欧洲。1844年,德国数学家Hermann Grassmann(1809−1877,图1-4(a))出版了名为Die Ausdehnungslehre von(扩展的理论,在数学史上称为A1,1862年出版了A2)的著作,创建了线性代数这一新的数学分支,将线性代数从几何学中独立出来,并引入了线性空间的雏形。1848年,英国数学家James Sylvester(1817−1897,图1-4(b))创造了“matrix”一词。而在研究矩阵变换时,英国数学家Arthur Cayley(1821−1895,图1-4(c))使用了一个字母表示整个矩阵,定义了矩阵相乘的方法,并给出了逆矩阵的概念。
1882年,奥斯曼帝国数学家Hüseyin Tevfik Paşha将军(1832−1901,图1-5(a))写了一部题为“Linear Algebra”(线性代数)的著作。1888年,意大利数学家Giuseppe Peano(1858−1932,图1-5(b))引入了线性空间的更精确的定义。1900年,出现了有限维向量空间的线性变换理论,并出现了线性代数的其他分支,拓展了线性代数这一分支的新应用成果。
图1-4 Grassmann、Sylvester与Cayley画像
注:图像均来源于维基百科
哈佛大学Wassily Leontief(1906−1999,图1-5(c))在经济学领域建立了投入产出分析理论,用来分析一个经济部门的变化如何影响其他部门。1949年底,他利用美国劳动统计局的25万条数据将美国经济分成500个部门,建立了500个未知数的线性方程。由于该方程当时无法求解,所以他将问题简化成42个方程,并花费几个月的时间编程并输入数据,在当时的计算机上花了56小时得到了方程的解。Leontief开创了经济学的数学建模,并获得了1973年度诺贝尔经济学奖。随着计算机硬件与软件的发展,投入产出分析可以处理大规模矩阵方程问题,其迭代算法影响了1998年出现的谷歌佩奇排名(PageRank,又称网页排名),可以用于超大规模的矩阵运算。
图1-5 Paşha、Peano与Leontief照片
注:图像均来源于维基百科
在量子力学、狭义相对论、统计学、控制科学等领域,由于矩阵的大量使用,使线性代数理论从纯数学研究扩展到各个应用领域,而计算机的发展催生了Gauss消去法、矩阵分解领域的高效算法,使得线性代数成为系统建模与仿真领域最基础的工具。
1.2.2 数值线性代数
早期线性代数发展过程中出现了一些线性代数问题的计算方法,这些计算方法可以认为是数值线性代数的雏形。数值线性代数是在数字计算机出现之后自然而然发展起来的线性代数分支,数值线性代数是线性代数与矩阵理论与应用发展巨大的推动力。
1950年前后,英国国家物理实验室的James Wilkinson(1919−1986,图1-6(a))开始在最早的计算机上开始了数值分析的研究,其学术著作包括文献。与此同时,美国数值分析研究院的George Forsythe(1917−1972,图1-6(b))等也开展了数值分析,特别是数值线性代数方面的研究。
美国数学家、计算机专家Cleve Moler(1939−,图1-6(c))等开发了当时国际最先进的数值线性代数软件包EISPACK与LINPACK等。Moler于1979年正式发布了他编写的MATLAB语言(取名自MATrix LABoratory,矩阵实验室),并与Jack Little等于1984年建立了MathWorks公司,致力于MATLAB语言的开发与应用研究。MATLAB语言已经成为很多领域的首选计算机语言,并影响了很多其他语言,对数值线性代数的研究与工程应用起了重要的作用。
图1-6 Wilkinson、Forsythe与Moler照片
注:图像均来源于网络
2012年,Cleve Moler应邀在中国多所大学演讲,回顾数值分析发展的历史与MATLAB出现的背景。作者为其在同济大学演讲的视频配了英文字幕,建议读者观看该视频,领略大师的风采。
视频的百度网盘地址:https://pan.baidu.com/s/1pNkhcnx。
优酷网站:http://v.youku.com/v_show/id_XNDc0NTM4NzQw.html。
本书将系统地介绍线性代数,并侧重介绍基于MATLAB的线性代数问题求解方法。
第2章首先给出矩阵的基本概念,并介绍将一般矩阵输入MATLAB工作空间的方法,还介绍单位矩阵、随机矩阵、对角矩阵、Hankel矩阵等特殊矩阵的输入方法与任意符号矩阵、矩阵函数的输入方法。本章还介绍稀疏矩阵的输入方法、存储方式与转换方法,并介绍稀疏矩阵的非零元素的提取与图形表示方法。此外,本章介绍矩阵的基本运算方法,包括简单的代数运算、复数矩阵的处理以及矩阵的微积分运算等。
第3章侧重于介绍矩阵分析的基本内容,包括行列式、矩阵的迹、矩阵的线性相关与秩、向量范数与矩阵范数等,并介绍向量空间等概念。另外,本章还介绍逆矩阵的概念与求解方法以及行阶梯标准型变换问题,并介绍广义逆矩阵的计算方法。本章还介绍矩阵特征多项式与特征值的概念与计算方法,并给出矩阵多项式的概念与计算方法。
第4章侧重于介绍矩阵变换与分解。首先给出矩阵相似变换的概念与性质,并给出正交矩阵的概念。然后介绍初等行变换方法与规则,并在此基础上给出基于初等行变换的矩阵求逆方法与主元素的概念。另外,介绍线性代数方程的Gauss消去法、矩阵的三角分解方法、对称矩阵的Cholesky分解方法等,并给出正定矩阵与正规矩阵的概念与判定方法。本章还介绍将一般矩阵变换为相伴矩阵、对角矩阵及Jordan矩阵的方法,并给出矩阵的奇异值分解、矩阵条件数的概念与求解方法。此外,本章还介绍Givens变换与Householder变换的方法。
第5章侧重于介绍各种矩阵方程的计算机求解方法。首先介绍线性代数方程组的数值与解析求解方法,对线性代数方程进行分类,分别求解代数方程的唯一解、无穷解与最小二乘解。本章还介绍各种Lyapunov方程、Sylvester方程等的数值与解析解求解方法,并介绍Riccati方程的数值求解方法,还试图求解出不同类型的Riccati方程全部的根,并给出一般非线性矩阵方程的通用求解MATLAB函数,适合于求解任意复杂的非线性矩阵方程。本章还介绍多项式Diophantine方程的解析解方法,并介绍Bézout恒等式的求解方法。
第6章侧重于介绍矩阵函数的数值与解析运算。首先给出矩阵函数的定义,介绍最常用的矩阵指数运算,并介绍矩阵的对数函数、平方根函数和三角函数运算。本章还给出了矩阵任意函数的计算方法与MATLAB实现,并介绍了矩阵任意乘方Ak与kA的解析解方法。
第7章侧重于介绍线性代数与矩阵理论在各个领域中的应用,包括在电工学、力学与化学领域求解线性代数方程组的应用;在线性控制系统理论中系统的定性分析、系统模型转换与特殊线性矩阵微分方程解析解运算领域的应用;在数字图像处理领域线性代数在图像压缩、几何尺寸变换与旋转等方面的应用;在图论领域的应用,包括图的矩阵表示、最短路径问题与复杂控制系统模型化简等方面的应用;在差分方程求解与Markov链建模与计算领域的应用;在数据拟合与分析领域的应用,包括数据的线性回归拟合、数据的最小二乘拟合、主成分分析与数据降维领域的应用等。
读者如果认真学习了本书相关的理论基础与MATLAB使用技巧,很容易利用相关的工具在自己的研究中取得有益的研究成果。