描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302518709
视频公开课: 爱课程或中国大学MOOC(慕课) “现代科学运算——MATLAB语言与应用”“控制系统仿真与CAD”(非严格配套本书视频,仅供读者参考)。
配书源代码: 配书源代码可以到清华大学出版社网站本书页面下载。
薛定宇大讲堂系列图书将陆续出版:
薛定宇教授大讲堂(卷Ⅰ):MATLAB程序设计
薛定宇教授大讲堂(卷Ⅱ):MATLAB微积分运算
薛定宇教授大讲堂(卷Ⅲ):MATLAB线性代数运算
薛定宇教授大讲堂(卷Ⅳ):MATLAB*化计算
薛定宇教授大讲堂(卷Ⅴ):MATLAB微分方程求解
薛定宇教授大讲堂(卷Ⅵ):MATLAB/Simulink仿真
本书可以作为高等学校理工科各类专业的本科生与研究生学习计算机数学语言(MATLAB)的教材,也可以作为一般读者学习线性代数与矩阵分析的辅助教材——从另一个角度认识线性代数问题的求解方法,并可以作为查询线性代数与矩阵数学问题求解方法的工具书。
CONTENTS
第 1章线性代数简介 · 1
1.1矩阵与线性方程组 1
1.1.1表格的矩阵表示 1
1.1.2线性方程组的建立与求解 3
1.2线性代数发展简介 8
1.2.1线性代数数学理论 8
1.2.2数值线性代数 10本章习题 12第 2章矩阵的表示与基本运算 13
2.1一般矩阵的输入方法 13
2.2特殊矩阵的输入方法 14
2.2.1零矩阵、幺矩阵及单位矩阵 · 15
2.2.2随机元素矩阵 15
2.2.3 Hankel矩阵 · 17
2.2.4对角元素矩阵 18
2.2.5 Hilbert矩阵及 Hilbert逆矩阵 20
2.2.6相伴矩阵 · 21
2.2.7 Wilkinson矩阵 · 21
2.2.8 Vandermonde矩阵 22
2.2.9一些常用的测试矩阵 23
2.3符号型矩阵的输入方法 24
2.3.1特殊符号矩阵的输入方法 24
2.3.2任意常数矩阵的输入 24
2.3.3任意矩阵函数的输入 25
2.4稀疏矩阵的输入 · 26
2.5矩阵的基本运算 · 29
2.5.1复数矩阵的处理 29
·iv·薛定宇教授大讲堂(卷 III):MATLAB线性代数运算
2.5.2矩阵的转置与旋转 30
2.5.3矩阵的代数运算 31
2.5.4矩阵的 Kronecker乘积与 Kronecker和 · 36
2.6矩阵函数的微积分运算 37
2.6.1矩阵函数的导数 37
2.6.2矩阵函数的积分 38
2.6.3向量函数的 Jacobi矩阵 39
2.6.4 Hesse矩阵 39本章习题 40
第 3章矩阵基本分析 · 43
3.1行列式 · 43
3.1.1行列式的定义与性质 43
3.1.2低阶矩阵的行列式计算 44
3.1.3行列式计算问题的 MATLAB求解 47
3.1.4任意阶特殊矩阵的行列式计算· 50
3.1.5线性方程组的 Cramer法则 · 51
3.1.6正矩阵与完全正矩阵 52
3.2矩阵的简单分析 · 53
3.2.1矩阵的迹 · 54
3.2.2线性无关与矩阵的秩 54
3.2.3矩阵的范数 · 56
3.2.4向量空间 · 58
3.3逆矩阵与广义逆矩阵 59
3.3.1矩阵的逆矩阵 59
3.3.2逆矩阵的导函数 60
3.3.3 MATLAB提供的矩阵求逆函数 61
3.3.4简化的行阶梯型矩阵 63
3.3.5矩阵的广义逆 65
3.4特征多项式与特征值 67
3.4.1矩阵的特征多项式 67
3.4.2多项式方程的求根 69
3.4.3一般矩阵的特征值与特征向量· 70
3.4.4矩阵的广义特征向量问题 73
3.4.5 Gershgorin圆盘与对角占优矩阵 · 75 3.5矩阵多项式 · 76
3.5.1矩阵多项式的求解 76
3.5.2矩阵的最小多项式 78
3.5.3符号多项式与数值多项式的转换 · 78本章习题 80
第 4章矩阵的基本变换与分解 83
4.1相似变换与正交矩阵 83
4.1.1相似变换 · 83
4.1.2正交矩阵与正交基 84
4.2初等行变换 · 85
4.2.1三种初等行变换方法 86
4.2.2用初等行变换的方法求逆矩阵· 88
4.2.3主元素方法求逆矩阵 89
4.3矩阵的三角分解 · 90
4.3.1线性方程组的 Gauss消去法 · 90
4.3.2一般矩阵的三角分解算法与实现 · 91
4.3.3 MATLAB三角分解函数 · 92
4.4矩阵的 Cholesky分解 94
4.4.1对称矩阵的 Cholesky分解 94
4.4.2对称矩阵的二次型表示 95
4.4.3正定矩阵与正规矩阵 96
4.4.4非正定矩阵的 Cholesky分解 97
4.5相伴变换与 Jordan变换 98
4.5.1一般矩阵变换成相伴矩阵 98
4.5.2矩阵的对角化 99
4.5.3矩阵的 Jordan变换 · 100
4.5.4复特征值矩阵的实 Jordan分解 101
4.5.5正定矩阵的同时对角化 103
4.6奇异值分解 · 104
4.6.1奇异值与条件数 104
4.6.2长方形矩阵的奇异值分解 106
4.6.3基于奇异值分解的同时对角化· 106
4.7 Givens变换与 Householder变换 · 107
4.7.1二维坐标的旋转变换 107
4.7.2一般矩阵的 Givens变换 109
·vi·薛定宇教授大讲堂(卷 III):MATLAB线性代数运算
4.7.3 Householder变换 · 111本章习题 112
第 5章矩阵方程求解 · 115
5.1线性方程组 · 115
5.1.1唯一解的求解 116
5.1.2方程无穷解的求解与构造 119
5.1.3矛盾方程的求解 122
5.1.4线性方程解的几何解释 122
5.2其他形式的简单线性方程组 124
5.2.1方程 XA = B的求解 · 124
5.2.2方程 AXB = C的求解 125
5.2.3基于 Kronecker乘积的方程解法 127
5.2.4多项方程 AXB = C的求解 127
5.3 Lyapunov方程· 128
5.3.1连续 Lyapunov方程 · 128
5.3.2二阶 Lyapunov方程的 Kronecker乘积表示 · 130
5.3.3一般 Lyapunov方程的解析解 130
5.3.4 Stein方程的求解 · 131
5.3.5离散 Lyapunov方程 · 132
5.4 Sylvester方程 · 133
5.4.1 Sylvester方程的数学形式与数值解 · 133
5.4.2 Sylvester方程的解析求解 133
5.4.3含参数 Sylvester方程的解析解 136
5.4.4多项 Sylvester方程的求解 136
5.5非线性矩阵方程 · 137
5.5.1 Riccati代数方程 · 137
5.5.2一般多解非线性矩阵方程的数值求解 · 138
5.5.3变形 Riccati方程的求解 142
5.5.4一般非线性矩阵方程的数值求解 · 143
5.6多项式方程的求解 144
5.6.1多项式互质 · 144
5.6.2 Diophantine多项式方程 145
5.6.3伪多项式方程求根 147本章习题 148 第 6章矩阵函数 · 151
6.1矩阵元素的非线性运算 152
6.1.1数据的取整与有理化运算 152
6.1.2超越函数计算命令 153
6.1.3向量的排序、最大值与最小值 156
6.1.4数据的均值、方差与标准差 · 156
6.2矩阵指数函数计算 157
6.2.1矩阵函数的定义与性质 157
6.2.2矩阵指数函数的运算 158
6.2.3基于 Taylor幂级数的截断算法· 158
6.2.4基于 Cayley–Hamilton定理的计算 160
6.2.5 MATLAB的直接计算函数 161
6.2.6基于 Jordan变换的求解方法 162
6.3矩阵的对数与平方根函数计算 163
6.3.1矩阵的对数运算 163
6.3.2矩阵的平方根运算 164
6.4矩阵的三角函数运算 165
6.4.1矩阵的三角函数运算 165
6.4.2基于幂级数展开的矩阵三角函数计算 · 166
6.4.3矩阵三角函数的解析求解 167
6.5一般矩阵函数的运算 169
6.5.1幂零矩阵 · 169
6.5.2基于 Jordan变换的矩阵函数运算 170
6.5.3矩阵自定义函数的运算 173
6.6矩阵的乘方运算 · 174
6.6.1基于 Jordan变换的矩阵乘方运算 174
6.6.2通用乘方函数的编写 175
6.6.3基于 z变换的矩阵乘方计算 · 176
6.6.4计算矩阵乘方 kA · 177本章习题 178
第 7章线性代数的应用 180
7.1线性方程组的应用 180
7.1.1电路网络分析 180
7.1.2结构平衡的分析方法 186
7.1.3化学反应方程式配平 186
·viii·薛定宇教授大讲堂(卷 III):MATLAB线性代数运算
7.2线性控制系统中的应用 188
7.2.1控制系统的模型转换 189
7.2.2线性系统的定性分析 190
7.2.3多变量系统的传输零点 192
7.2.4线性微分方程的直接求解 192
7.3数字图像处理应用简介 193
7.3.1图像的读入与显示 194
7.3.2矩阵的奇异值分解 195
7.3.3图像几何尺寸变换与旋转 196
7.3.4图像增强 · 198
7.4图论与应用 · 200
7.4.1有向图的描述 201
7.4.2 Dijkstra最短路径算法及实现 · 202
7.4.3控制系统方框图化简 205
7.5差分方程求解 · 208
7.5.1一般差分方程的解析解方法· 209
7.5.2线性时变差分方程的数值解方法 · 210
7.5.3线性时不变差分方程的解法· 212
7.5.4一般非线性差分方程的数值解方法 · 213
7.5.5 Markov链的仿真 · 214
7.6数据拟合与分析 · 215
7.6.1线性回归 · 216
7.6.2多项式拟合 · 217
7.6.3 Chebyshev多项式 219
7.6.4 Bézier曲线 221
7.6.5主成分方法 · 223本章习题 225参考文献· 231
MATLAB函数名索引 · 233术语索引· 237
线性代数简介
PREFACE
科学运算问题是每个理工科学生和科技工作者在课程学习、科学研究与工程实践中常常会遇到的问题,不容回避。对于非纯数学专业的学生和研究者而言,从底层全面学习相关数学问题的求解方法并非一件简单的事情,也不易得出复杂问题的解。所以,利用当前最先进的计算机工具,高效、准确、创造性地求解科学运算问题是一种行之有效的方法,尤其能够满足理工科人士的需求。
作者曾试图在同一部著作中叙述各个数学分支典型问题的直接求解方法,通过清华大学出版社出版了《高等应用数学问题的 MATLAB求解》。该书从 2004年出版之后多次重印再版,并于 2018年出版了第 4版,还配套发布了全新的 MOOC课程 ①,一直受到广泛的关注与欢迎。首次 MOOC开课的选课人数接近 14000人,教材内容也被数万篇期刊文章和学位论文引用。
从作者首次使用 MATLAB语言算起,已经 30余年了,通过相关领域的研究、思考与一线教学实践,积累了大量的实践经验资料。这些不可能在一部著作中全部介绍,所以与清华大学出版社策划与编写了这套“薛定宇教授大讲堂”系列著作,系统深入地介绍基于 MATLAB语言与工具的科学运算问题的求解方法。
本系列著作不是原来版本的简单改版,通过十余年的经验和资料积累,全面贯穿 “再认识 ”的思想写作此书,深度融合科学运算数学知识与基于 MATLAB的直接求解方法与技巧,力图更好地诠释计算机工具在每个数学分支的作用,帮助读者以不同的思维与视角了解工程数学问题的求解方法,创造性地得出问题的解。
本系列著作卷 I可以作为学习 MATLAB入门知识的教材与参考书,也为读者深入学习与熟练掌握 MATLAB语言编程技巧,深度理解科学运算领域 MATLAB的应用奠定一个坚实的基础。后续每一卷试图对应一个数学专题或一门数学课程进行展开。整套系列著作的写作贯穿“计算思维”的思想,深度探讨该数学专题的问题求解方法。本系列著作既适合学完相应的数学课程之后,深入学习利用计算机
. MOOC网址:https://www.icourse163.org/learn/NEU-1002660001
·ii·薛定宇教授大讲堂(卷 III):MATLAB线性代数运算
工具的科学运算问题求解方法与技巧,也可作为相应数学课程同步学习的伴侣,在学习相应课程理论知识的同时,侧重于学习基于计算机的数学问题求解方法,从另一个角度观察、审视数学课程所学的内容,扩大知识面,更好地学习、理解并实践相应的数学课程。
本书是系列著作的卷 III。本书试图以一个全新的角度,按照一般线性代数教程的方式介绍线性代数问题的求解,侧重利用 MATLAB语言直接求解矩阵运算与线性代数的问题。首先介绍矩阵的输入方法,然后介绍矩阵基本分析方法、矩阵基本变换与分解方法,并介绍矩阵方程的求解方法与矩阵任意函数的计算方法等。本书还介绍了线性代数的诸多应用问题的建模与求解方法。
值此系列著作付梓之际,衷心感谢相濡以沫的妻子杨军教授,她数十年如一日的无私关怀是我坚持研究、教学与写作工作的巨大动力。
薛定宇 2019年 5月
线性代数的研究起源于对线性方程组的求解。线性方程组是科学研究与工程实践中应用最广泛的数学模型,在实际应用中还可能建立更复杂的线性代数方程。为了研究方便,引入矩阵描述代数方程组。本节将给出几个简单的例子,演示数据表格的矩阵表示方法,并说明线性方程组的重要性。
1.1.1表格的矩阵表示
在人们的日常生活与科学研究中,经常会遇到各种各样的数据表格。如何有效地表示这些表格呢?表格在数学中和计算机上可能有各种各样的表示方法,矩阵是数据表格最有效的表示方法之一。
定义 1-1矩阵的数学形式为
a11 a12 a23 · · · a1n
A =… a21 .. . a22 .. . a23 .. . · · · … a2n .. . … (1-1-1)
am1 am2 am3 · · · amn
矩阵是线性代数领域重要的数学单元,下面通过例子演示用矩阵表示表格的具体方法。
例 1-1彩色图像的颜色在计算机上有多种表示方法。其中,三原色法是一种重要的颜色表示方法,一种颜色可以理解成由红(R)、绿(G)、蓝(B)三个颜色分量的不同组合构成。常用八种颜色的 RGB三原色分量如表 1-1所示,试用矩阵表示该表格。
表 1-1常用颜色的 RGB分量
.
三原色分量 黑色 蓝色 绿色 青色 红色 品红 黄色 白色
红 0 0 0 0 255 255 255 255
绿 0 0 255 255 0 0 255 255
蓝 0 255 0 255 0 255 0 255
·2·薛定宇教授大讲堂(卷 III):MATLAB线性代数运算
解如果矩阵的行用于表示三原色,各列分别表示黑色、蓝色、……、白色,则可以用
一个 3 × 8的矩阵表示整个表格,这个矩阵的元素排列与表格的数据排列完全一致,即
.
0 0 0 0 255255255255 A = . 0 0 255255 0 0 255255 0255 0 255 0 255 0 255
.
有了矩阵的数学表达式,用下面的语句将其直接输入 MATLAB的工作空间,就可以通过相应的命令对其进行运算了。
>> A=[0 0 0 0 255 255 255 255; 0 0 255 255 0 0 255 255
0 255 0 255 0 255 0 255];
从给出的表格可见,品红色是矩阵的第六列,所以可以由下面的命令提取出品红色的红绿蓝颜色分量
>> c=A(:,6)
例 1-2八大行星的一些参数由表 1-2中给出。其中,相对参数都是由地球参数换算得到的,半长轴的单位为 AU(Astronomical Unit,天文单位,为 149597870700m .
1.5×1011 m,地球到太阳的平均距离),自转周期的单位为天。试用矩阵表示这个表格。
表 1-2八大行星的一些参数
名称 相对直径 相对质量 半长轴 相对轨道周期 离心率 自转周期 卫星个数 行星环
水星 0.382 0.06 0.39 0.24 0.206 58.64 0 无
金星 0.949 0.82 0.72 0.62 0.007 243.02 0 无
地球 1 1 1 1 0.017 1 1 无
火星 0.532 0.11 1.52 1.88 0.093 1.03 2 无
木星 11.209 317.8 5.20 11.86 0.048 0.41 69 有
土星 9.449 95.2 9.54 29.46 0.054 0.43 62 有
天王星 4.007 14.6 19.22 84.01 0.047 0.72 27 有
海王星 3.883 17.2 30.06 164.8 0.009 0.67 14 有
解观察表 1-2可以发现,表格中大部分元素都是数值。除了数值之外还有表头,表格第一列为“名称”。此外,最后一列数据的内容为“无”或“有”。对最后一列进行变换,令“无”为 0、“有”为 1,则最后一列也是数据。如果只关心这个表格中的数据,不妨用矩
阵更简洁地表示这个表格,即
0.382 0.06 0.39 0.24 0.206 58.64 0 0
A = ………. 0.949 1 0.532 11.209 9.449 4.007 0.82 1 0.11 317.8 95.2 14.6 0.72 1 1.52 5.2 9.54 19.22 0.62 1 1.88 11.86 29.46 84.01 0.007 0.017 0.093 0.048 0.054 0.047 .243.02 1 1.03 0.41 0.43 .0.72 0 1 2 69 62 27 0 0 0 1 1 1
3.883 17.2 30.06 164.8 0.009 0.67 14 1
有了矩阵的数学形式,则可以用下面的 MATLAB语句进行输入。
. ……….
>> A=[0.382,0.06,0.39,0.24,0.206,58.64,0,0;
0.949,0.82,0.72,0.62,0.007,-243.02,0,0;
1,1,1,1,0.017,1,1,0;
0.532,0.11,1.52,1.88,0.093,1.03,2,0;
11.209,317.8,5.2,11.86,0.048,0.41,69,1;
9.449,95.2,9.54,29.46,0.054,0.43,62,1;
4.007,14.6,19.22,84.01,0.047,-0.72,27,1;
3.883,17.2,30.06,164.8,0.009,0.67,14,1];
本丛书卷 I中用到了这个例子,使用 MATLAB下的 table数据结构表示表 1-2。下面给出相应的 MATLAB命令。 >> name=str2mat(‘水星’,’金星’,’地球’,’火星’,’木星’,’土星’,… ‘天王星’,’海王星’); diameter=[0.382;0.949;1;0.532;11.209;9.449;4.007;3.883]; mass=[0.06; 0.82; 1; 0.11; 317.8; 95.2; 14.6; 17.2]; axis=[0.39; 0.72; 1; 1.52; 5.2; 9.54; 19.22; 30.06]; period=[0.24; 0.62; 1; 1.88; 11.86; 29.46; 84.01; 164.8]; eccentricity=[0.206; 0.007; 0.017; 0.093; 0.048; … 0.054; 0.047; 0.009];
rotation=[58.64;-243.02;1;1.03;0.41;0.43;-0.72;0.67];
moon=[0; 0; 1; 2; 69; 62; 27; 14];
ring={‘无’;’无’;’无’;’无’;’有’;’有’;’有’;’有’};
planet=table(name,diameter,mass,axis,period,eccentricity,…
rotation,moon,ring)
例 1-3例 1-2给出的相对数据是地球数据的倍数。已知地球的质量为 5.965 × 1024 kg,试求出其他行星的质量,例如木星的质量。 解从矩阵的存储看,“相对质量”是矩阵的第二列,第二列的全部元素可以由 A(:,2)命令提取。木星是第五行,所以可以用下面的命令计算出各个行星的实际质量,提取第五个元素则为木星的质量,为 1.8957×1027 kg。
>> M0=5.965e24; M=A(:,2)*M0; M(5)
1.1.2线性方程组的建立与求解
线性代数的研究起源于线性方程组的列写与求解,本节给出几个例子演示实际问题的线性方程组建模方法。
例 1-4公元 4–5世纪的中国古代著名的数学著作《孙子算经》曾给出了鸡兔同笼问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?” 解古典数学著作中有各种各样的方法求解鸡兔同笼问题。如果引入代数方程的思维,则假设鸡的个数为 x1,兔的个数为 x2,可以列出下面的线性代数方程。
·4·薛定宇教授大讲堂(卷 III):MATLAB线性代数运算
{
x1 x2 = 35
2×1 4×2 = 94
如果引入矩阵的概念,则可以将线性代数方程写成矩阵形式,即
[ ][ ][]
11 x1 35
=
24 x2 94
[][][]
11 x1 35
记 A =24 ,x = x2 ,B = 94 ,则可以写出线性代数方程的标准形式:
Ax = B(1-1-2)线性方程在 MATLAB下的求解语句为 x=AB,所以由 MATLAB命令求解方程,得出 x = [23, 12]T。方程解的物理含义是,鸡有 23个,兔有 12个。
>> A=[1 1; 2 4]; B=[35; 94]; x=AB
此外,还可以由符号运算中解方程的方法(不限于线性代数方程组)求解鸡兔同笼问题,其结果与前面得出的完全一致。
>> syms x y; [x y]=solve(x y==35, 2*x 4*y==94)
注意:早期版本中,上面的语句可以使用字符串描述方程本身。但新版本不支持这种形式,应该采用符号表达式表示方程。
例 1-5文献 [1]给出了梁平衡问题的应用实例。假设一个梁系统的结构体如图 1-1所示,每条线段表示一根梁,每一个圆圈表示一个连接点。假设所有斜线梁的倾斜角度都为 45.,且连接点 1的水平与垂直方向都固定,连接点 8的垂直方向固定,在连接点 2,5,6处增加负载。为使得整个架构平衡,试根据各个连接点的水平和垂直方向列出线性代数方程,写出其矩阵方程形式并试图得出方程的解。
评论
还没有评论。