Matlab数学手册

http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
目录
第1 章 矩阵及其基本运算........................................................................................................... 8
1.1 矩阵的表示...................................................................................................................... 8
1.1.1 数值矩阵的生成................................................................................................... 8
1.1.2 符号矩阵的生成................................................................................................... 9
1.1.3 大矩阵的生成..................................................................................................... 10
1.1.4 多维数组的创建................................................................................................. 10
1.1.5 特殊矩阵的生成................................................................................................. 11
1.2 矩阵运算........................................................................................................................ 16
1.2.1 加、减运算......................................................................................................... 16
1.2.2 乘法..................................................................................................................... 16
1.2.3 集合运算............................................................................................................. 19
1.2.4 除法运算............................................................................................................. 22
1.2.5 矩阵乘方............................................................................................................. 23
1.2.6 矩阵函数............................................................................................................. 23
1.2.7 矩阵转置............................................................................................................. 24
1.2.8 方阵的行列式..................................................................................................... 25
1.2.9 逆与伪逆............................................................................................................. 25
1.2.10 矩阵的迹........................................................................................................... 26
1.2.11 矩阵和向量的范数........................................................................................... 26
1.2.12 条件数............................................................................................................... 27
1.2.13 矩阵的秩........................................................................................................... 28
1.2.14 特殊运算........................................................................................................... 28
1.2.15 符号矩阵运算................................................................................................... 34
1.2.16 矩阵元素个数的确定....................................................................................... 36
1.3 矩阵分解........................................................................................................................ 36
1.3.1 Cholesky 分解..................................................................................................... 36
1.3.2 LU 分解............................................................................................................... 37
1.3.3 QR 分解.............................................................................................................. 37
1.3.4 Schur 分解........................................................................................................... 39
1.3.5 实Schur 分解转化成复Schur 分解................................................................... 39
1.3.6 特征值分解......................................................................................................... 40
1.3.7 奇异值分解......................................................................................................... 40
1.3.8 广义奇异值分解................................................................................................. 41
1.3.9 特征值问题的QZ 分解...................................................................................... 42
1.3.10 海森伯格形式的分解....................................................................................... 42
1.4 线性方程的组的求解.................................................................................................... 42
1.4.1 求线性方程组的唯一解或特解(第一类问题) ............................................. 43
1.4.2 求线性齐次方程组的通解................................................................................. 45
1.4.3 求非齐次线性方程组的通解............................................................................. 46
1.4.4 线性方程组的LQ 解法...................................................................................... 48
1.4.5 双共轭梯度法解方程组..................................................................................... 49
1.4.6 稳定双共轭梯度方法解方程组......................................................................... 50
1.4.7 复共轭梯度平方法解方程组............................................................................. 51
1.4.8 共轭梯度的LSQR 方法..................................................................................... 51
1.4.9 广义最小残差法................................................................................................. 52
1.4.10 最小残差法解方程组....................................................................................... 52
1.4.11 预处理共轭梯度方法....................................................................................... 53
1.4.12 准最小残差法解方程组................................................................................... 53
1.5 特征值与二次型............................................................................................................ 55
1.5.1 特征值与特征向量的求法................................................................................. 55
1.5.2 提高特征值的计算精度..................................................................................... 56
1.5.3 复对角矩阵转化为实对角矩阵......................................................................... 56
1.5.4 正交基................................................................................................................. 56
1.5.5 二次型................................................................................................................. 57
1.6 秩与线性相关性............................................................................................................ 57
1.6.1 矩阵和向量组的秩以及向量组的线性相关性................................................. 57
1.6.2 求行阶梯矩阵及向量组的基............................................................................. 58
1.7 稀疏矩阵技术................................................................................................................ 59
1.7.1 稀疏矩阵的创建................................................................................................. 59
1.7.2 将稀疏矩阵转化为满矩阵................................................................................. 60
1.7.3 稀疏矩阵非零元素的索引................................................................................. 60
1.7.4 外部数据转化为稀疏矩阵................................................................................. 60
1.7.5 基本稀疏矩阵..................................................................................................... 61
1.7.6 稀疏矩阵的运算................................................................................................. 63
1.7.7 画稀疏矩阵非零元素的分布图形..................................................................... 64
1.7.8 矩阵变换............................................................................................................. 64
1.7.9 稀疏矩阵的近似欧几里得范数和条件数......................................................... 67
1.7.10 稀疏矩阵的分解............................................................................................... 67
1.7.11 稀疏矩阵的特征值分解................................................................................... 69
1.7.12 稀疏矩阵的线性方程组................................................................................... 69
第2 章 数值计算与数据分析..................................................................................................... 70
2.1 基本数学函数................................................................................................................ 70
2.1.1 三角函数与双曲函数......................................................................................... 70
2.1.2 其他常用函数..................................................................................................... 77
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
2.2 插值、拟合与查表........................................................................................................ 84
2.2.1 插值命令............................................................................................................. 85
2.2.2 查表命令............................................................................................................. 91
2.3 数值积分........................................................................................................................ 92
2.3.1 一元函数的数值积分......................................................................................... 93
2.3.2 二元函数重积分的数值计算............................................................................. 94
2.4 常微分方程数值解........................................................................................................ 96
2.5 偏微分方程的数值解.................................................................................................... 98
2.5.1 单的Poission 方程.............................................................................................. 99
2.5.2 双曲型偏微分方程........................................................................................... 100
2.5.3 抛物型偏微分方程........................................................................................... 101
第3 章 符号运算....................................................................................................................... 103
3.1 算术符号操作.............................................................................................................. 103
3.2 基本运算...................................................................................................................... 105
3.2.1 函数计算器....................................................................................................... 116
3.2.2 微积分............................................................................................................... 118
3.2.3 符号函数的作图............................................................................................... 121
3.2.4 积分变换........................................................................................................... 126
3.2.5 Taylor 级数........................................................................................................ 131
3.2.6 其它................................................................................................................... 133
第4 章 概率统计....................................................................................................................... 142
4.1 随机数的产生.............................................................................................................. 142
4.1.1 二项分布的随机数据的产生........................................................................... 143
4.1.2 正态分布的随机数据的产生........................................................................... 143
4.1.3 常见分布的随机数产生................................................................................... 144
4.1.4 通用函数求各分布的随机数据....................................................................... 144
4.2 随机变量的概率密度计算.......................................................................................... 144
4.2.1 通用函数计算概率密度函数值....................................................................... 145
4.2.2 专用函数计算概率密度函数值....................................................................... 145
4.2.3 常见分布的密度函数作图............................................................................... 146
4.3 随机变量的累积概率值(分布函数值)........................................................................ 150
4.3.1 通用函数计算累积概率值............................................................................... 150
4.3.2 专用函数计算累积概率值(随机变量X ≤ K的概率之和)........................150
4.4 随机变量的逆累积分布函数...................................................................................... 151
4.4.1 通用函数计算逆累积分布函数值................................................................... 152
4.4.2 专用函数-inv 计算逆累积分布函数................................................................ 152
4.5 随机变量的数字特征.................................................................................................. 153
4.5.1 平均值、中值................................................................................................... 153
4.5.2 数据比较........................................................................................................... 156
4.5.3 期望................................................................................................................... 157
4.5.4 方差................................................................................................................... 158
4.5.5 常见分布的期望和方差................................................................................... 160
4.5.6 协方差与相关系数........................................................................................... 161
4.6 统计作图...................................................................................................................... 162
4.6.1 正整数的频率表............................................................................................... 162
4.6.2 经验累积分布函数图形................................................................................... 163
4.6.3 最小二乘拟合直线........................................................................................... 163
4.6.4 绘制正态分布概率图形................................................................................... 163
4.6.5 绘制威布尔(Weibull)概率图形........................................................................ 164
4.6.6 样本数据的盒图............................................................................................... 164
4.6.7 给当前图形加一条参考线............................................................................... 165
4.6.8 在当前图形中加入一条多项式曲线............................................................... 165
4.6.9 样本的概率图形............................................................................................... 166
4.6.10 附加有正态密度曲线的直方图..................................................................... 166
4.6.11 在指定的界线之间画正态密度曲线............................................................. 167
4.7 参数估计...................................................................................................................... 167
4.7.1 常见分布的参数估计....................................................................................... 167
4.7.2 非线性模型置信区间预测............................................................................... 170
4.7.3 对数似然函数................................................................................................... 173
4.8 假设检验...................................................................................................................... 174
4.8.1 σ 2已知,单个正态总体的均值μ的假设检验(U检验法).....................174
4.8.2 σ 2未知,单个正态总体的均值μ的假设检验( t 检验法) ...........................175
4.8.3 两个正态总体均值差的检验(t 检验) ......................................................... 176
4.8.4 两个总体一致性的检验——秩和检验........................................................... 177
4.8.5 两个总体中位数相等的假设检验——符号秩检验........................................ 178
4.8.6 两个总体中位数相等的假设检验——符号检验........................................... 178
4.8.7 正态分布的拟合优度测试............................................................................... 178
4.8.8 正态分布的拟合优度测试............................................................................... 179
4.8.9 单个样本分布的 Kolmogorov-Smirnov 测试................................................ 180
4.8.10 两个样本具有相同的连续分布的假设检验................................................. 180
4.9 方差分析...................................................................................................................... 181
4.9.1 单因素方差分析............................................................................................... 181
4.9.2 双因素方差分析............................................................................................... 183
第5 章 优化问题....................................................................................................................... 185
5.1 线性规划问题.............................................................................................................. 185
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
5.2 foptions 函数................................................................................................................ 186
5.3 非线性规划问题.......................................................................................................... 187
5.3.1 有约束的一元函数的最小值........................................................................... 187
5.3.2 无约束多元函数最小值................................................................................... 188
5.3.3 有约束的多元函数最小值............................................................................... 190
5.3.4 二次规划问题................................................................................................... 192
5.4 “半无限”有约束的多元函数最优解...................................................................... 194
5.5 极小化极大(Minmax)问题..................................................................................... 198
5.6 多目标规划问题.......................................................................................................... 200
5.7 最小二乘最优问题...................................................................................................... 203
5.7.1 约束线性最小二乘........................................................................................... 203
5.7.2 非线性数据(曲线)拟合............................................................................... 204
5.7.3 非线性最小二乘............................................................................................... 206
5.7.4 非负线性最小二乘........................................................................................... 207
5.8 非线性方程(组)求解................................................................................................... 207
5.8.1 非线性方程的解............................................................................................... 207
5.8.2 非线性方程组的解........................................................................................... 208
第6 章 模糊逻辑....................................................................................................................... 210
6.1 隶属函数...................................................................................................................... 210
6.1.1 高斯隶属函数................................................................................................... 210
6.1.2 两边型高斯隶属函数....................................................................................... 210
6.1.3 建立一般钟型隶属函数................................................................................... 211
6.1.4 两个sigmoid 型隶属函数之差组成的隶属函数............................................ 211
6.1.5 通用隶属函数计算........................................................................................... 212
6.1.6 建立П型隶属函数........................................................................................... 213
6.1.7 通过两个sigmoid 型隶属函数的乘积构造隶属函数..................................... 213
6.1.8 建立Sigmoid 型隶属函数................................................................................ 213
6.1.9 建立S 型隶属函数........................................................................................... 215
6.1.10 建立梯形隶属函数......................................................................................... 215
6.1.11 建立三角形隶属函数..................................................................................... 216
6.1.12 建立Z 型隶属函数......................................................................................... 218
6.1.13 两个隶属函数之间转换参数......................................................................... 218
6.1.14 基本FIS 编辑器............................................................................................. 219
6.1.15 隶属函数编辑器............................................................................................. 220
6.2 模糊推理结构FIS ....................................................................................................... 221
6.2.1 不使用数据聚类方法从数据生成FIS 结构.................................................... 221
6.2.2 使用减法聚类方法从数椐生成FIS 结构........................................................ 222
6.2.3 生成一个FIS 输出曲面................................................................................... 223
6.2.4 将mamdan 型FIS 转换为Sugeno FIS............................................................ 223
6.2.5 完成模糊推理计算........................................................................................... 224
6.2.6 模糊c 均值聚类............................................................................................... 224
6.2.7 模糊均值和减法聚类....................................................................................... 225
6.2.8 绘制一个FIS .................................................................................................... 226
6.2.9 绘制给定变量的所有隶属的曲线................................................................... 226
6.2.10 从磁盘装入一个FIS ...................................................................................... 227
6.2.11 从FIS 中删除某一隶属函数.......................................................................... 227
6.2.12 从FIS 中删除变量......................................................................................... 228
6.2.13 设置模糊系统属性......................................................................................... 229
6.2.14 以分行形式显示FIS 结构的所有属性.......................................................... 230
6.2.15 完成模糊运算................................................................................................. 231
6.2.16 解析模糊规则................................................................................................. 232
6.2.17 规则编辑器和语法编辑器............................................................................. 233
6.2.18 规则观察器和模糊推理框图......................................................................... 234
6.2.19 保存FIS 到磁盘上......................................................................................... 234
6.2.20 显示FIS 的规则............................................................................................. 235
6.2.21 显示FIS 结构的所有属性............................................................................. 236
第7 章 绘图与图形处理........................................................................................................... 238
7.1 二维图形...................................................................................................................... 238
7.1.1 基本平面图形命令........................................................................................... 238
7.1.2 特殊平面图形命令........................................................................................... 245
7.1.3 二维图形注释命令........................................................................................... 252
7.2 三维图形...................................................................................................................... 256
7.2.1 三维曲线、面填色命令................................................................................... 256
7.2.2 三维图形等高线............................................................................................... 257
7.2.3 曲面与网格图命令........................................................................................... 260
7.2.4 三维数据的其他表现形式命令....................................................................... 264
7.3 通用图形函数命令...................................................................................................... 270
7.3.1 图形对象句柄命令........................................................................................... 270
7.3.2 轴的产生和控制命令....................................................................................... 281
7.3.3 图形句柄操作命令........................................................................................... 282
7.3.4 图形窗口的控制命令....................................................................................... 285
7.4 颜色与光照模式命令.................................................................................................. 286
7.4.1 颜色控制命令................................................................................................... 286
7.4.2 色图控制命令................................................................................................... 288
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
第1 章矩阵及其基本运算
MATLAB,即“矩阵实验室”,它是以矩阵为基本运算单元。因此,本书从最基本的运
算单元出发,介绍MATLAB 的命令及其用法。
1.1 矩阵的表示
1.1.1 数值矩阵的生成
1.实数值矩阵输入
MATLAB 的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理
的向量或矩阵。
不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗
号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于
一方括号([ ])内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,
会有多重的方括号。如:
>> Time = [11 12 1 2 3 4 5 6 7 8 9 10]
Time =
11 12 1 2 3 4 5 6 7 8 9 10
>> X_Data = [2.32 3.43;4.37 5.98]
X_Data =
2.43 3.43
4.37 5.98
>> vect_a = [1 2 3 4 5]
vect_a =
1 2 3 4 5
>> Matrix_B = [1 2 3;
>> 2 3 4;3 4 5]
Matrix_B = 1 2 3
2 3 4
3 4 5
>> Null_M = [ ] %生成一个空矩阵
2.复数矩阵输入
复数矩阵有两种生成方式:
第一种方式
例1-1
>> a=2.7;b=13/25;
>> C=[1,2*a+i*b,b*sqrt(a); sin(pi/4),a+5*b,3.5+1]
C=
1.0000 5.4000 + 0.5200i 0.8544
0.7071 5.3000 4.5000
第2 种方式
例1-2
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
>> R=[1 2 3;4 5 6], M=[11 12 13;14 15 16]
R =
1 2 3
4 5 6
M =
11 12 13
14 15 16
>> CN=R+i*M
CN =
1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i
4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i
1.1.2 符号矩阵的生成
在 MATLAB 中输入符号向量或者矩阵的方法和输入数值类型的向量或者矩阵在形式上
很相像,只不过要用到符号矩阵定义函数sym,或者是用到符号定义函数syms,先定义一
些必要的符号变量,再像定义普通矩阵一样输入符号矩阵。
1.用命令sym 定义矩阵:
这时的函数sym 实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的
符号或者是表达式,而且长度没有限制,只是将方括号置于用于创建符号表达式的单引号中。
如下例:
例1-3
>> sym_matrix = sym('[a b c;Jack,Help Me!,NO WAY!],')
sym_matrix =
[a b c]
[Jack Help Me! NO WAY!]
>> sym_digits = sym('[1 2 3;a b c;sin(x)cos(y)tan(z)]')
sym_digits =
[1 2 3]
[a b c]
[sin(x)cos(y)tan(z)]
2.用命令syms 定义矩阵
先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。
例1-4
>> syms a b c ;
>> M1 = sym('Classical');
>> M2 = sym(' Jazz');
>> M3 = sym('Blues')
>> syms_matrix = [a b c; M1, M2, M3;int2str([2 3 5])]
syms_matrix =
[ a b c]
[Classical Jazz Blues]
[ 2 3 5]
把数值矩阵转化成相应的符号矩阵。
数值型和符号型在MATLAB 中是不相同的,它们之间不能直接进行转化。MATLAB 提
供了一个将数值型转化成符号型的命令,即sym。
例1-5
>> Digit_Matrix = [1/3 sqrt(2) 3.4234;exp(0.23) log(29) 23^(-11.23)]
>> Syms_Matrix = sym(Digit_Matrix)
结果是:
Digit_Matrix =
0.3333 1.4142 3.4234
1.2586 3.3673 0.0000
Syms_Matrix =
[ 1/3, sqrt(2), 17117/5000]
[5668230535726899*2^(-52),7582476122586655*2^(-51),5174709270083729*2^(-103)]
注意:矩阵是用分数形式还是浮点形式表示的,将矩阵转化成符号矩阵后,都将以最接
近原值的有理数形式表示或者是函数形式表示。
1.1.3 大矩阵的生成
对于大型矩阵,一般创建 M 文件,以便于修改:
例1-6 用M 文件创建大矩阵,文件名为example.m
exm=[ 456 468 873 2 579 55
21 687 54 488 8 13
65 4567 88 98 21 5
456 68 4589 654 5 987
5488 10 9 6 33 77]
在MATLAB 窗口输入:
>>example;
>>size(exm) %显示exm 的大小
ans=
5 6 %表示exm 有5 行6 列。
1.1.4 多维数组的创建
函数 cat
格式 A=cat(n,A1,A2,…,Am)
说明 n=1 和n=2 时分别构造[A1;A2]和[A1,A2],都是二维数组,而n=3 时可以构造
出三维数组。
例1-7
>> A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;
>> A4=cat(3,A1,A2,A3)
A4(:,:,1) =
1 2 3
4 5 6
7 8 9
A4(:,:,2) =
1 4 7
2 5 8
3 6 9
A4(:,:,3) =
0 -2 -4
2 0 -2
4 2 0
或用另一种原始方式可以定义:
例1-8
>> A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
>> A5(:,:,1)=A1, A5(:,:,2)=A2, A5(:,:,3)=A3
A5(:,:,1) =
1 2 3
4 5 6
7 8 9
A5(:,:,2) =
1 4 7
2 5 8
3 6 9
A5(:,:,3) =
0 -2 -4
2 0 -2
4 2 0
1.1.5 特殊矩阵的生成
命令 全零阵
函数 zeros
格式 B = zeros(n) %生成n×n 全零阵
B = zeros(m,n) %生成m×n 全零阵
B = zeros([m n]) %生成m×n 全零阵
B = zeros(d1,d2,d3…) %生成d1×d2×d3×…全零阵或数组
B = zeros([d1 d2 d3…]) %生成d1×d2×d3×…全零阵或数组
B = zeros(size(A)) %生成与矩阵A 相同大小的全零阵
命令 单位阵
函数 eye
格式 Y = eye(n) %生成n×n 单位阵
Y = eye(m,n) %生成m×n 单位阵
Y = eye(size(A)) %生成与矩阵A 相同大小的单位阵
命令 全1 阵
函数 ones
格式 Y = ones(n) %生成n×n 全1 阵
Y = ones(m,n) %生成m×n 全1 阵
Y = ones([m n]) %生成m×n 全1 阵
Y = ones(d1,d2,d3…) %生成d1×d2×d3×…全1 阵或数组
Y = ones([d1 d2 d3…]) %生成d1×d2×d3×…全1 阵或数组
Y = ones(size(A)) %生成与矩阵A 相同大小的全1 阵
命令 均匀分布随机矩阵
函数 rand
格式 Y = rand(n) %生成n×n 随机矩阵,其元素在(0,1)内
Y = rand(m,n) %生成m×n 随机矩阵
Y = rand([m n]) %生成m×n 随机矩阵
Y = rand(m,n,p,…) %生成m×n×p×…随机矩阵或数组
Y = rand([m n p…]) %生成m×n×p×…随机矩阵或数组
Y = rand(size(A)) %生成与矩阵A 相同大小的随机矩阵
rand %无变量输入时只产生一个随机数
s = rand('state') %产生包括均匀发生器当前状态的35 个元素的向量
rand('state', s) %使状态重置为s
rand('state', 0) %重置发生器到初始状态
rand('state', j) %对整数j 重置发生器到第j 个状态
rand('state', sum (100*clock)) %每次重置到不同状态
例1-9 产生一个3×4 随机矩阵
>> R=rand(3,4)
R =
0.9501 0.4860 0.4565 0.4447
0.2311 0.8913 0.0185 0.6154
0.6068 0.7621 0.8214 0.7919
例1-10 产生一个在区间[10, 20]内均匀分布的4 阶随机矩阵
>> a=10;b=20;
>> x=a+(b-a)*rand(4)
x =
19.2181 19.3547 10.5789 11.3889
17.3821 19.1690 13.5287 12.0277
11.7627 14.1027 18.1317 11.9872
14.0571 18.9365 10.0986 16.0379
命令 正态分布随机矩阵
函数 randn
格式 Y = randn(n) %生成n×n 正态分布随机矩阵
Y = randn(m,n) %生成m×n 正态分布随机矩阵
Y = randn([m n]) %生成m×n 正态分布随机矩阵
Y = randn(m,n,p,…) %生成m×n×p×…正态分布随机矩阵或数组
Y = randn([m n p…]) %生成m×n×p×…正态分布随机矩阵或数组
Y = randn(size(A)) %生成与矩阵A 相同大小的正态分布随机矩阵
randn %无变量输入时只产生一个正态分布随机数
s = randn('state') %产生包括正态发生器当前状态的2 个元素的向量
s = randn('state', s) %重置状态为s
s = randn('state', 0) %重置发生器为初始状态
s = randn('state', j) %对于整数j 重置状态到第j 状态
s = randn('state', sum(100*clock)) %每次重置到不同状态
例1-11 产生均值为0.6,方差为0.1 的4 阶矩阵
>> mu=0.6; sigma=0.1;
>> x=mu+sqrt(sigma)*randn(4)
x =
0.8311 0.7799 0.1335 1.0565
0.7827 0.5192 0.5260 0.4890
0.6127 0.4806 0.6375 0.7971
0.8141 0.5064 0.6996 0.8527
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
命令 产生随机排列
函数 randperm
格式 p = randperm(n) %产生1~n 之间整数的随机排列
例1-12
>> randperm(6)
ans =
3 2 1 5 4 6
命令 产生线性等分向量
函数 linspace
格式 y = linspace(a,b) %在(a, b)上产生100 个线性等分点
y = linspace(a,b,n) %在(a, b)上产生n 个线性等分点
命令 产生对数等分向量
函数 logspace
格式 y = logspace(a,b) %在( )之间产生50 个对数等分向量
y = logspace(a,b,n)
y = logspace(a,pi)
命令 计算矩阵中元素个数
n = numel(a) %返回矩阵A 的元素的个数
命令 产生以输入元素为对角线元素的矩阵
函数 blkdiag
格式 out = blkdiag(a,b,c,d,…) %产生以a,b,c,d,…为对角线元素的矩阵
例1-13
>> out = blkdiag(1,2,3,4)
out =
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4
命令 友矩阵
函数 compan
格式 A = compan(u) %u 为多项式系统向量,A 为友矩阵,A 的第1 行元素为
-u (2:n)/u(1),其中u (2:n)为u 的第2 到第n 个元素,A 为特
征值就是多项式的特征根。
例1-14 求多项式 的友矩阵和根
>> u=[1 0 -7 6];
>> A=compan(u) %求多项式的友矩阵
A =
0 7 -6
1 0 0
0 1 0
>> eig(A) %A 的特征值就是多项式的根
ans =
-3.0000
2.0000
10a , 10b
(x −1)(x − 2)(x + 3) = x3 − 7x + 6
1.0000
命令 hadamard 矩阵
函数 hadamard
格式 H = hadamard(n) %返回n 阶hadamard 矩阵
例1-15
>> h=hadamard(4)
h =
1 1 1 1
1 -1 1 -1
1 1 -1 -1
1 -1 -1 1
命令 Hankel 方阵
函数 hankel
格式 H = hankel(c) %第1 列元素为c,反三角以下元素为0。
H = hankel(c,r) %第1 列元素为c,最后一行元素为r,如果c 的最后一个元素
与r 的第一个元素不同,交叉位置元素取为c 的最后一个元素。
例1-16
>> c=1:3,r=7:10
c =
1 2 3
r =
7 8 9 10
>> h=hankel(c,r)
h =
1 2 3 8
2 3 8 9
3 8 9 10
命令 Hilbert 矩阵
函数 hilb
格式 H = hilb(n) %返回n 阶Hilbert 矩阵,其元素为H(i,j)=1/(i+j-1)。
例1-17 产生一个3 阶Hilbert 矩阵
>> format rat %以有理形式输出
>> H=hilb(3)
H =
1 1/2 1/3
1/2 1/3 1/4
1/3 1/4 1/5
命令 逆Hilbert 矩阵
函数 invhilb
格式 H = invhilb(n) %产生n 阶逆Hilbert 矩阵
命令 Magic(魔方)矩阵
函数 magic
格式 M = magic(n) %产生n 阶魔方矩阵
例1-18
>> M=magic(3)
M =
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
8 1 6
3 5 7
4 9 2
命令 Pascal 矩阵
函数 pascal
格式 A = pascal(n) %产生n 阶Pascal 矩阵,它是对称、正定矩阵,它的元素由
Pascal 三角组成,它的逆矩阵的所有元素都是整数。
A = pascal(n,1) %返回由下三角的Cholesky 系数组成的Pascal 矩阵
A = pascal(n,2) %返回Pascal(n,1)的转置和交换的形式
例1-19
>> A=pascal(4)
A =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
>> A=pascal(3,1)
A =
1 0 0
1 -1 0
1 -2 1
>> A=pascal(3,2)
A =
1 1 1
-2 -1 0
1 0 0
命令 托普利兹矩阵
函数 toeplitz
格式 T = toeplitz(c,r) %生成一个非对称的托普利兹矩阵,将c 作为第1 列,将r 作
为第1 行,其余元素与左上角相邻元素相等。
T = toeplitz(r) %用向量r 生成一个对称的托普利兹矩阵
例1-20
>> c=[1 2 3 4 5];
>> r=[1.5 2.5 3.5 4.5 5.5];
>> T=toeplitz(c,r)
T =
1 5/2 7/2 9/2 11/2
2 1 5/2 7/2 9/2
3 2 1 5/2 7/2
4 3 2 1 5/2
5 4 3 2 1
命令 Wilkinson 特征值测试阵
函数 wilkinson
格式 W = wilkinson(n) %返回n 阶Wilkinson 特征值测试阵
例1-21
>> W=wilkinson(4)
W =
3/2 1 0 0
1 1/2 1 0
0 1 1/2 1
0 0 1 3/2
>> W=wilkinson(7)
W =
3 1 0 0 0 0 0
1 2 1 0 0 0 0
0 1 1 1 0 0 0
0 0 1 0 1 0 0
0 0 0 1 1 1 0
0 0 0 0 1 2 1
0 0 0 0 0 1 3
1.2 矩阵运算
1.2.1 加、减运算
运算符:“+”和“-”分别为加、减运算符。
运算规则:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。
例1-22
>>A=[1, 1, 1; 1, 2, 3; 1, 3, 6]
>>B=[8, 1, 6; 3, 5, 7; 4, 9, 2]
>>A+B=A+B
>>A-B=A-B
结果显示:A+B=
9 2 7
4 7 10
5 12 8
A-B=
-7 0 -5
-2 -3 -4
-3 -6 4
1.2.2 乘法
运算符:*
运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放
在后面的矩阵的各列元素对应相乘并相加。
1.两个矩阵相乘
例1-23
>>X= [2 3 4 5;
1 2 2 1];
>>Y=[0 1 1;
1 1 0;
0 0 1;
1 0 0];
Z=X*Y
结果显示为:
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
Z=
8 5 6
3 3 3
2.矩阵的数乘:数乘矩阵
上例中:a=2*X
则显示:a =
4 6 8 10
2 4 4 2
向量的点乘(内积):维数相同的两个向量的点乘。
数组乘法:
A.*B 表示A 与B 对应元素相乘。
3.向量点积
函数 dot
格式 C = dot(A,B) %若A、B 为向量,则返回向量A 与B 的点积,A 与B 长度
相同;若为矩阵,则A 与B 有相同的维数。
C = dot(A,B,dim) %在dim 维数中给出A 与B 的点积
例 >>X=[-1 0 2];
>>Y=[-2 -1 1];
>>Z=dot(X, Y)
则显示:Z =
4
还可用另一种算法:
sum(X.*Y)
ans=
4
4.向量叉乘
在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。
在Matlab 中,用函数cross 实现。
函数 cross
格式 C = cross(A,B) %若A、B 为向量,则返回A 与B 的叉乘,即C=A×B,A、B
必须是3 个元素的向量;若A、B 为矩阵,则返回一个3×n
矩阵,其中的列是A 与B 对应列的叉积,A、B 都是3×n 矩
阵。
C = cross(A,B,dim) %在dim 维数中给出向量A 与B 的叉积。A 和B 必须具有
相同的维数,size(A,dim)和size(B,dim)必须是3。
例1-24 计算垂直于向量(1, 2, 3)和(4, 5, 6)的向量。
>>a=[1 2 3];
>>b=[4 5 6];
>>c=cross(a,b)
结果显示:
c=
-3 6 -3
可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为±(-3, 6, -3)
5.混合积
混合积由以上两函数实现:
例1-25 计算向量a=(1, 2, 3)、b=(4, 5, 6)和c=(-3, 6, -3) 的混合积a ⋅ (b ×c)
解:
>>a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3];
>>x=dot(a, cross(b, c))
结果显示:x =
54
注意:先叉乘后点乘,顺序不可颠倒。
6.矩阵的卷积和多项式乘法
函数 conv
格式 w = conv(u,v) %u、v 为向量,其长度可不相同。
说明 长度为m 的向量序列u 和长度为n 的向量序列v 的卷积(Convolution)定义为:
Σ=
= + −
k
j 1
w (k) u(j) v(k 1 j)式中:w向量序列的长度为(m+n-1),当m=n 时,
w(1) = u(1)*v(1)
w(2) = u(1)*v(2)+u(2)*v(1)
w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1)

w(n) = u(1)*v(n)+u(2)*v(n-1)+ … +u(n)*v(1)

w(2*n-1) = u(n)*v(n)
例1-26 展开多项式(s2 + 2s + 2)(s + 4)(s +1)
解:>> w=conv([1,2,2],conv([1,4],[1,1]))
w =
1 7 16 18 8
>> P=poly2str(w,'s') %将w 表示成多项式
P =
s^4 + 7 s^3 + 16 s^2 + 18 s + 8
7.反褶积(解卷)和多项式除法运算
函数 deconv
格式 [q,r] = deconv(v,u) %多项式v 除以多项式u,返回商多项式q 和余多项式r。
注意:v、u、q、r 都是按降幂排列的多项式系数向量。
例1-27 ,则其卷积为
>>u = [1 2 3 4]
>>v = [10 20 30]
>>c = conv(u,v)
c =
10 40 100 160 170 120
则反褶积为
>>[q,r] = deconv(c,u)
q =
10 20 30
r =
0 0 0 0 0 0
8.张量积
(x3 + 2x2 + 3x + 4)(10x2 + 20x + 30)
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
函数 kron
格式 C=kron (A,B) %A 为m×n 矩阵,B 为p×q 矩阵,则C 为mp×nq 矩阵。
说明 A 与B 的张量积定义为:
? ? ? ?
?
?
? ? ? ?
?
?
= ⊗ =
a B a B a B
a B a B a B
a B a B a B
C A B
m1 m2 mn
21 22 2n
11 12 1n
L
M M O M
L
L
A⊗ B 与B⊗A
均为mp×nq 矩阵,但一般地A⊗ B ≠ B⊗A。
例1-28 ??
?
??
?
=
3 4
1 2
A
? ? ?
?
?
? ? ?
?
?
=
7 8 9
4 5 6
1 2 3
B 求A⊗ B。
>> A=[1 2;3 4];B=[1 2 3;4 5 6;7 8 9];
>> C=kron(A,B)
C =
1 2 3 2 4 6
4 5 6 8 10 12
7 8 9 14 16 18
3 6 9 4 8 12
12 15 18 16 20 24
21 24 27 28 32 36
1.2.3 集合运算
1.两个集合的交集
函数 intersect
格式 c = intersect(a,b) %返回向量a、b 的公共部分,即c= a∩b。
c = intersect(A,B,'rows') %A、B 为相同列数的矩阵,返回元素相同的行。
[c,ia,ib] = intersect(a,b) %c 为a、b 的公共元素,ia 表示公共元素在a 中的位置,
ib 表示公共元素在b 中位置。
例1-29
>> A=[1 2 3 4;1 2 4 6;6 7 1 4]
A =
1 2 3 4
1 2 4 6
6 7 1 4
>> B=[1 2 3 8;1 1 4 6;6 7 1 4]
B =
1 2 3 8
1 1 4 6
6 7 1 4
>> C=intersect(A,B,'rows')
C =
6 7 1 4
例1-30
>> A = [1 9 6 20]; B = [1 2 3 4 6 10 20];
>> [c,ia,ib] = intersect(A,B)
c =
1 6 20
ia =
1 3 4
ib =
1 5 7
2.检测集合中的元素
函数 ismember
格式 k = ismember(a,S) %当a 中元素属于S 时,k 取1,否则,k 取0。
k = ismember(A,S,'rows') %A、S 有相同的列,返回行相同k 取1,不相同取0
的列向量。
例1-31
>> S=[0 2 4 6 8 10 12 14 16 18 20];
>> a=[1 2 3 4 5 6];
>> k=ismember(a,S)
k =
0 1 0 1 0 1 %1 表示相同元素的位置
例1-32
>> A=[1 2 3 4;1 2 4 6;6 7 1 4]
>> B=[1 2 3 8;1 1 4 6;6 7 1 4]
>> k=ismember(A,B,'rows')
k =
0
0
1 %1 表示元素相同的行
3.两集合的差
函数 setdiff
格式 c = setdiff(a,b) %返回属于a 但不属于b 的不同元素的集合,C = a-b。
c = setdiff(A,B,'rows') %返回属于A 但不属于B 的不同行
[c,i] = setdiff(…) %c 与前面一致,i 表示c 中元素在A 中的位置。
例1-33
>> A = [1 7 9 6 20]; B = [1 2 3 4 6 10 20];
>> c=setdiff(A,B)
c =
7 9
例1-34
>> A=[1 2 3 4;1 2 4 6;6 7 1 4]
>> B=[1 2 3 8;1 1 4 6;6 7 1 4]
>> c=setdiff(A,B,'rows')
c =
1 2 3 4
1 2 4 6
4.两个集合交集的非(异或)
函数 setxor
格式 c = setxor(a,b) %返回集合a、b 交集的非
c = setxor(A,B,'rows') %返回矩阵A、B 交集的非,A、B 有相同列数。
[c,ia,ib] = setxor(…) %ia、ib 表示c 中元素分别在a (或A)、b(或B)中位置
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
例1-35
>> A=[1 2 3 4];
>> B=[2 4 5 8];
>> C=setxor(A,B)
C =
1 3 5 8
例1-36
>> A=[1 2 3 4;1 2 4 6;6 7 1 4]
A =
1 2 3 4
1 2 4 6
6 7 1 4
>> B=[1 2 3 8;1 1 4 6;6 7 1 4]
B =
1 2 3 8
1 1 4 6
6 7 1 4
>> [C,ia,ib]=setxor(A,B,'rows')
C =
1 1 4 6
1 2 3 4
1 2 3 8
1 2 4 6
ia =
1
2
ib =
2
1
5.两集合的并集
函数 union
格式 c = union(a,b) %返回a、b 的并集,即c = a∪b。
c = union(A,B,'rows') %返回矩阵A、B 不同行向量构成的大矩阵,其中相同行
向量只取其一。
[c,ia,ib] = union(…) %ia、ib 分别表示c 中行向量在原矩阵(向量)中的位置
例1-37
>> A=[1 2 3 4];
>> B=[2 4 5 8];
>> c=union(A,B)
则结果为
c =
1 2 3 4 5 8
例1-38
>> A=[1 2 3 4;1 2 4 6]
A =
1 2 3 4
1 2 4 6
>> B=[1 2 3 8;1 1 4 6]
B =
1 2 3 8
1 1 4 6
>> [c,ia,ib]=union(A,B,'rows')
c =
1 1 4 6
1 2 3 4
1 2 3 8
1 2 4 6
ia =
1
2
ib =
2
1
6.取集合的单值元素
函数
格式 b = unique (a) %取集合a 的不重复元素构成的向量
b = unique (A,'rows') %返回A、B 不同行元素组成的矩阵
[b,i,j] = unique (…) %i、j 体现b 中元素在原向量(矩阵)中的位置
例1-39
>> A=[1 1 2 2 4 4 6 4 6]
A =
1 1 2 2 4 4 6 4 6
>> [c,i,j]=unique(A)
c =
1 2 4 6
i =
2 4 8 9
j =
1 1 2 2 3 3 4 3 4
例1-40
>> A=[1 2 2 4;1 1 4 6;1 1 4 6]
A =
1 2 2 4
1 1 4 6
1 1 4 6
>> [c,i,j]=unique(A,'rows')
c =
1 1 4 6
1 2 2 4
i =
3
1
j =
2
1
1
1.2.4 除法运算
Matlab 提供了两种除法运算:左除(\)和右除(/)。一般情况下,x=a\b 是方程a*x =b
的解,而x=b/a 是方程x*a=b 的解。
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
例:a=[1 2 3; 4 2 6; 7 4 9]
b=[4; 1; 2];
x=a\b
则显示:x=
-1.5000
2.0000
0.5000
如果a 为非奇异矩阵,则a\b 和b/a 可通过a 的逆矩阵与b 阵得到:
a\b = inv(a)*b
b/a = b*inv(a)
数组除法:
A./B 表示A 中元素与B 中元素对应相除。
1.2.5 矩阵乘方
运算符:^
运算规则:
(1)当A 为方阵,P 为大于0 的整数时,A^P 表示A 的P 次方,即A 自乘P 次;P 为
小于0 的整数时,A^P 表示A-1 的P 次方。
(2)当A 为方阵,p 为非整数时,则1
p
nn
p
11
V
d
d
A^ P V −
? ? ?
?
?
? ? ?
?
?
= O 其中V 为A 的特征向
量,
? ?
?
?
? ?
?
?
nn
11
d
d
O 为特征值对角矩阵。如果有重根,以上指令不成立。
(3)标量的矩阵乘方PA,标量的矩阵乘方定义为1
d
d
A V
p
p
P V
n n
11

? ? ? ?
?
?
? ? ? ?
?
?
= O 式中V,D 取
自特征值分解AV=AD。
(4)标量的数组乘方P.^A,标量的数组乘方定义为
? ? ? ?
?
?
? ? ? ?
?
?
=
m1 mn
11 1n
a a
a a
p p
p p
P.^A
L
M M
L
数组乘方:
A.^P:表示A 的每个元素的P 次乘方。
1.2.6 矩阵函数
命令 方阵指数
函数 expm
格式 Y = expm(A) %使用Pade 近似算法计算eA,这是一个内部函数,A 为方阵。
Y=expm1(A) %使用一个M 文件和内部函数相同的算法计算eA
Y=expm2(A) %使用泰勒级数计算eA
Y=expm3(A) %使用特征值和特征向量计算eA
命令 矩阵的对数
函数 logm
格式 Y = logm(X) %计算矩阵X 的对数,它是expm(X)的反函数。
[Y,esterr] = logm(X) %esterr 为相对残差的估计值:norm(expm(Y)-X)/norm(X)
例1-41
>> A=[1 1 0;0 0 2;0 0 -1];
>> Y=expm(A)
Y =
2.7183 1.7183 1.0862
0 1.0000 1.2642
0 0 0.3679
>> A=logm(Y)
A =
1.0000 1.0000 0.0000
0 0 2.0000
0 0 -1.0000
命令 方阵的函数
函数 funm
格式 F = funm(A,fun) %A 为方阵,计算由fun 指定的A 的矩阵函数,fun 可以
是任意基本函数, 如sin 、cos 等等, 例如:
funm(A, ’exp’)=expm(A)。
[F,esterr] = funm(A,fun) %esterr 为结果所产生的相对误差的估计值。
命令 矩阵的方根
函数 sqrtm
格式 X = sqrtm(A) %矩阵A 的平方根A1/2,相当于X*X=A,求X。若A 的特征值
有非负实部,则X 是唯一的;若A 的特征值有负的实部,则X
为复矩阵;若A 为奇异矩阵,则X 不存在。
[X,resnorm] = sqrtm(A) % resnorm为结果产生的相对误差
[X,alpha,condest] = sqrtm(A) % alpha 为稳定因子,condest 为结果的条件数的估
计值。
命令 矩阵A 的多项式
函数 polyvalm
格式 polyvalm(P, A) %P 为多项式系数向量,方阵A 为多项式变量,返回多项式值。
1.2.7 矩阵转置
运算符:′
运算规则:若矩阵A 的元素为实数,则与线性代数中矩阵的转置相同。
若A 为复数矩阵,则A 转置后的元素由A 对应元素的共轭复数构成。
若仅希望转置,则用如下命令:A.′。
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
1.2.8 方阵的行列式
函数 det
格式 d = det(X) %返回方阵X 的多项式的值
例1-42
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> D=det(A)
D =
0
1.2.9 逆与伪逆
命令 逆
函数 inv
格式 Y=inv(X) %求方阵X的逆矩阵。若X为奇异阵或近似奇异阵,将给出警告信息。
例1-43 求
? ? ?
?
?
? ? ?
?
?
=
3 4 3
2 2 1
1 2 3
A 的逆矩阵
方法一
>>A=[1 2 3; 2 2 1; 3 4 3];
>>Y=inv(A)或Y=A^(-1)
则结果显示为
Y =
1.0000 3.0000 -2.0000
-1.5000 -3.0000 2.5000
1.0000 1.0000 -1.0000
方法二:由增广矩阵
? ? ?
?
?
? ? ?
?
?
=
3 4 3 0 0 1
2 2 1 0 1 0
1 2 3 1 0 0
B 进行初等行变换
>>B=[1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1];
>>C=rref(B) %化行最简形
>>X=C(:, 4:6) %取矩阵C 中的A^(-1)部分
显示结果如下:
C =
1.0000 0 0 1.0000 3.0000 -2.0000
0 1.0000 0 -1.5000 -3.0000 2.5000
0 0 1.0000 1.0000 1.0000 -1.0000
X =
1.0000 3.0000 -2.0000
-1.5000 -3.0000 2.5000
1.0000 1.0000 -1.0000
例1-44
>> A=[2 1 -1;2 1 2;1 -1 1];
>> format rat %用有理格式输出
>> D=inv(A)
D =
1/3 0 1/3
0 1/3 -2/3
-1/3 1/3 0
命令 伪逆
函数 pinv
格式 B = pinv(A) %求矩阵A 的伪逆
B = pinv(A, tol) %tol 为误差:max(size(A))*norm(A)*eps
说明 当矩阵为长方阵时,方程AX=I 和XA=I 至少有一个无解,这时A 的伪逆能在某
种程度上代表矩阵的逆,若A 为非奇异矩阵,则pinv(A) = inv(A)。
例1-45
>> A=magic(5); %产生5 阶魔方阵。
>> A=A(:,1:4) %取5 阶魔方阵的前4 列元素构成矩阵A。
A =
17 24 1 8
23 5 7 14
4 6 13 20
10 12 19 21
11 18 25 2
>> X=pinv(A) %计算A 的伪逆
X =
-0.0041 0.0527 -0.0222 -0.0132 0.0069
0.0437 -0.0363 0.0040 0.0033 0.0038
-0.0305 0.0027 -0.0004 0.0068 0.0355
0.0060 -0.0041 0.0314 0.0211 -0.0315
1.2.10 矩阵的迹
函数 trace
格式 b=trace (A) %返回矩阵A 的迹,即A 的对角线元素之和。
1.2.11 矩阵和向量的范数
命令 向量的范数
函数 norm
格式 n = norm(X) %X为向量,求欧几里德范数,即= Σ 2
|| X||2 | xk | 。
n = norm(X,inf) %求∞ -范数,即|| X||= max (abs (X))。
n = norm(X,1) %求1-范数,即=Σ
k
|| X||1 | xk |。
n = norm(X,-inf) %求向量X的元素的绝对值的最小值,即|| X||= min (abs (X))。
n = norm(X, p) %求p-范数,即p
k
p
|| X||p= Σ| xk | ,所以norm(X,2) = norm(X)。
命令 矩阵的范数
函数 norm
格式 n = norm(A) %A为矩阵,求欧几里德范数|| A||2,等于A的最大奇异值。
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
n = norm(A,1) %求A的列范数|| A||1,等于A的列向量的1-范数的最大值。
n = norm(A,2) %求A的欧几里德范数|| A||2,和norm(A)相同。
n = norm(A,inf) %求行范数|| A||∞,等于A的行向量的1-范数的最大值
即:max(sum(abs(A')))。
n = norm(A, 'fro' ) %求矩阵A的Frobenius范数= ΣΣ
i j
2
|| A||F | a i j | ,
即sqrt(sum(diag(A'*A))),不能用矩阵p-范数的定义来求。
命令 范数的估计值
函数 normest
格式 nrm = normest(A) %矩阵A 的2-范数(欧几里德范数)的估计值,相对误
差小于106。
nrm = normest(A,tol) %tol 为指定相对误差
[nrm,count] = normest(…) %count 给出计算估计值的迭代次数
1.2.12 条件数
命令 矩阵的条件数
函数 cond
格式 c = cond(X) %求X 的2-范数的条件数,即X 的最大奇异值和最小奇异值的商。
c = cond(X,p) %求p-范数的条件数,p 的值可以是1、2、inf 或者’fro’。
说明 线性方程组AX=b 的条件数是一个大于或者等于1 的实数,用来衡量关于数据中
的扰动,也就是A/或b 对解X 的灵敏度。一个差条件的方程组的条件数很大。条件数的定
义为:cond(A) | A |||| A−1 ||
命令 1-范数的条件数估计
函数 condest
格式 c = condest (A) %方阵A 的1-范数的条件数的下界估值。
[c,v] = condest (A) %v 为向量,满足c
|| Av ||= || A|| ⋅ || v || ,即norm(A*v,1)
=norm(A,1)*norm(v,1)/c。
[c,v] = condest (A,t) %求上面的c 和v,同时显示出关于计算的步骤信息。如果
t=1,则计算的每步都显示出来;如果t=-1,则给出商
c/rcond(A)。
命令 矩阵可逆的条件数估值
函数 rcond
格式 c = rcond(A) %对于差条件矩阵A 来说,给出一个接近于0 的数;对于好条件
矩阵A,则给出一个接近于1 的数。
命令 特征值的条件数
函数 condeig
格式 c = condeig(A) %返回矩阵A 的特征值的条件数
[V,D,c] = condeig(A) %D 为A 的特征值对角阵,V 为A 的特征向量。
1.2.13 矩阵的秩
函数 rank
格式 k = rank (A) %求矩阵A 的秩
k = rank (A,tol) %tol 为给定误差
1.2.14 特殊运算
1.矩阵对角线元素的抽取
函数 diag
格式 X = diag(v,k) %以向量v 的元素作为矩阵X 的第k 条对角线元素,当k=0 时,
v 为X 的主对角线;当k>0 时,v 为上方第k 条对角线;当k<0
时,v 为下方第k 条对角线。
X = diag(v) %以v 为主对角线元素,其余元素为0 构成X。
v = diag(X,k) %抽取X 的第k 条对角线元素构成向量v。k=0:抽取主对角线
元素;k>0:抽取上方第k 条对角线元素;k<0 抽取下方第k 条
对角线元素。
v = diag(X) %抽取主对角线元素构成向量v。
例1-46
>> v=[1 2 3];
>> x=diag(v,-1)
x =
0 0 0 0
1 0 0 0
0 2 0 0
0 0 3 0
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> v=diag(A,1)
v =
2
6
2.上三角阵和下三角阵的抽取
函数 tril %取下三角部分
格式 L = tril(X) %抽取X 的主对角线的下三角部分构成矩阵L
L = tril(X,k) %抽取X 的第k 条对角线的下三角部分;k=0 为主对角线;k>0
为主对角线以上;k<0 为主对角线以下。
函数 triu %取上三角部分
格式 U = triu(X) %抽取X 的主对角线的上三角部分构成矩阵U
U = triu(X,k) %抽取X 的第k 条对角线的上三角部分;k=0 为主对角线;k>0
为主对角线以上;k<0 为主对角线以下。
例1-47
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
>> A=ones(4) %产生4 阶全1 阵
A =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> L=tril(A,1) %取下三角部分
L =
1 1 0 0
1 1 1 0
1 1 1 1
1 1 1 1
>> U=triu(A,-1) %取上三角部分
U =
1 1 1 1
1 1 1 1
0 1 1 1
0 0 1 1
3.矩阵的变维
矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2 个已知维数矩阵
之间的变维操作;而后者是对于一个矩阵的操作。
(1)“:”变维
例1-48
> A=[1 2 3 4 5 6;6 7 8 9 0 1]
A =
1 2 3 4 5 6
6 7 8 9 0 1
>> B=ones(3,4)
B =
1 1 1 1
1 1 1 1
1 1 1 1
>> B(:)=A(:)
B =
1 7 4 0
6 3 9 6
2 8 5 1
(2)Reshape 函数变维
格式 B = reshape(A,m,n) %返回以矩阵A 的元素构成的m×n 矩阵B
B = reshape(A,m,n,p,…) %将矩阵A 变维为m×n×p×…
B = reshape(A,[m n p…]) %同上
B = reshape(A,siz) %由siz 决定变维的大小,元素个数与A 中元素个数
相同。
例1-49 矩阵变维
>> a=[1:12];
>> b=reshape(a,2,6)
b =
1 3 5 7 9 11
2 4 6 8 10 12
4.矩阵的变向
(1)矩阵旋转
函数
格式 B = rot90 (A) %将矩阵A 逆时针方向旋转90°
B = rot90 (A,k) %将矩阵A 逆时针方向旋转(k×90°),k 可取正负整数。
例1-50
>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> Y1=rot90(A),Y2=rot90(A,-1)
Y1 = %逆时针方向旋转
3 6 9
2 5 8
1 4 7
Y2 = %顺时针方向旋转
7 4 1
8 5 2
9 6 3
(2)矩阵的左右翻转
函数 fliplr
格式 B = fliplr(A) %将矩阵A 左右翻转
(3)矩阵的上下翻转
函数 flipud
格式 B = flipud(A) %将矩阵A 上下翻转
例1-51
>> A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> B1=fliplr(A),B2=flipud(A)
B1 =
3 2 1
6 5 4
B2 =
4 5 6
1 2 3
(4)按指定维数翻转矩阵
函数 flipdim
格式 B = flipdim(A,dim) % flipdim(A,1) = flipud(A),并且flipdim(A,2)=fliplr(A)。
例1-52
>> A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6
>> B1=flipdim(A,1),B2=flipdim(A,2)
B1 =
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
4 5 6
1 2 3
B2 =
3 2 1
6 5 4
(5)复制和平铺矩阵
函数 repmat
格式 B = repmat(A,m,n) %将矩阵A 复制m×n 块,即B 由m×n 块A 平铺而成。
B = repmat(A,[m n]) %与上面一致
B = repmat(A,[m n p…]) %B 由m×n×p×…个A 块平铺而成
repmat(A,m,n) %当A 是一个数a 时,该命令产生一个全由a 组成的
m×n 矩阵。
例1-53
>> A=[1 2;5 6]
A =
1 2
5 6
>> B=repmat(A,3,4)
B =
1 2 1 2 1 2 1 2
5 6 5 6 5 6 5 6
1 2 1 2 1 2 1 2
5 6 5 6 5 6 5 6
1 2 1 2 1 2 1 2
5 6 5 6 5 6 5 6
5.矩阵的比较关系
矩阵的比较关系是针对于两个矩阵对应元素的,所以在使用关系运算时,首先应该保证
两个矩阵的维数一致或其中一个矩阵为标量。关系运算是对两个矩阵的对应运算进行比较,
若关系满足,则将结果矩阵中该位置元素置为1,否则置0。
MATLAB 的各种比较关系运算有见表1-1。
表1-1
运算符 含义 运算符 含义
> 大于关系 < 大于关系
= = 等于关系 >= 大于或等于关系
<= 小于或等于关系 ~ = 不等于关系
例1-54
>> A=[1 2 3 4;5 6 7 8];B=[0 2 1 4;0 7 7 2];
>> C1=A==B, C2=A>=B, C3=A~=B
C1 =
0 1 0 1
0 0 1 0
C2 =
1 1 1 1
1 0 1 1
C3 =
1 0 1 0
1 1 0 1
6.矩阵元素的数据变换
对于小数构成的矩阵A 来说,如果我们想对它取整数,有以下几种方法:
(1)按-∞方向取整
函数 floor
格式 floor(A) %将A 中元素按-∞方向取整,即取不足整数。
(2)按+∞方向取整
函数 ceil
格式 ceil(A) %将A 中元素按+∞方向取整,即取过剩整数。
(3)四舍五入取整
函数 round
格式 round (A) %将A 中元素按最近的整数取整,即四舍五入取整。
(4)按离0 近的方向取整
函数 fix
格式 fix (A) %将A 中元素按离0 近的方向取整
例1-55
>> A=-1.5+4*rand(3)
A =
2.3005 0.4439 0.3259
-0.5754 2.0652 -1.4260
0.9274 1.5484 1.7856
>> B1=floor(A),B2=ceil(A),B3=round(A),B4=fix(A)
B1 =
2 0 0
-1 2 -2
0 1 1
B2 =
3 1 1
0 3 -1
1 2 2
B3 =
2 0 0
-1 2 -1
1 2 2
B4 =
2 0 0
0 2 -1
0 1 1
(5)矩阵的有理数形式
函数 rat
格式 [n,d]=rat (A) %将A 表示为两个整数矩阵相除,即A=n./d。
例1-56 对于上例中的A
>> [n,d]=rat(A)
n =
444 95 131
-225 2059 -472
166 48 1491
d =
193 214 402
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
391 997 331
179 31 835
(6)矩阵元素的余数
函数 rem
格式 C = rem (A, x) %表示A 矩阵除以模数x 后的余数。若x=0,则定义rem(A,
0)=NaN,若x≠0,则整数部分由fix(A./x)表示,余数C=A-x.*fix
(A./x)。允许模x 为小数。
7.矩阵逻辑运算
设矩阵A 和B 都是m×n 矩阵或其中之一为标量,在MATLAB 中定义了如下的逻辑运
算:
(1)矩阵的与运算
格式 A&B 或and(A, B)
说明 A 与B 对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。
(2)或运算
格式 A|B 或or(A, B)
说明 A 与B 对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。
(3)非运算
格式 ~A 或not (A)
说明 若A 的元素为0,则结果元素为1,否则为0。
(4)异或运算
格式 xor (A,B)
说明 A 与B 对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果
为0,否则为1。
例1-57
>> A=[0 2 3 4;1 3 5 0],B=[1 0 5 3;1 5 0 5]
A =
0 2 3 4
1 3 5 0
B =
1 0 5 3
1 5 0 5
>> C1=A&B,C2=A|B,C3=~A,C4=xor(A,B)
C1 =
0 0 1 1
1 1 0 0
C2 =
1 1 1 1
1 1 1 1
C3 =
1 0 0 0
0 0 0 1
C4 =
1 1 0 0
0 0 1 1
1.2.15 符号矩阵运算
1.符号矩阵的四则运算
Matlab 6.x 抛弃了在4.2 版中为符号矩阵设计的复杂函数形式,把符号矩阵的四则运算
简化为与数值矩阵完全相同的运算方式,其运算符为:加(+)、减(-)、乘(×)、除(/、
\)等或:符号矩阵的和(symadd)、差(symsub)、乘 (symmul)。
例1-58 >> A = sym(′[1/ x, 1/(x +1); 1/(x + 2), 1/(x + 3)]′);
>> B = sym(′[x, 1; x + 2, 0]′ ) ;
>>C=B-A
>>D=a\b
则显示:
C=
x-1/x 1-1/(x+1)
x+2-1/(x+2) -1/(x+3)
D=
-6*x-2*x^3-7*x^2 1/2*x^3+x+3/2*x^2
6+2*x^3+10*x^2+14*x -2*x^2-3/2*x-1/2*x^3
2.其他基本运算
符号矩阵的其他一些基本运算包括转置(')、行列式(det)、逆(inv)、秩(rank)、幂
(^)和指数(exp 和expm)等都与数值矩阵相同
3.将数值矩阵转化为符号矩阵
函数 sym
格式 B=sym(A) %将A 转化为符号矩阵B
例1-59
>> A=[2/3,sqrt(2),0.222;1.4,1/0.23,log(3)]
A =
0.6667 1.4142 0.2220
1.4000 4.3478 1.0986
>> B=sym(A)
B =
[ 2/3, sqrt(2), 111/500]
[ 7/5, 100/23, 4947709893870346*2^(-52)]
4.符号矩阵的索引与修改
符号矩阵的索引与修改同数值矩阵的索引与修改完全相同,即用矩阵的坐标括号表达式
实现。
例1-60 对上例中的矩阵B
>> B(2,3) %矩阵的索引
ans =
4947709893870346*2^(-52)
>> B(2,3)='log(7)' %矩阵的修改
B =
[ 2/3, sqrt(2), 111/500]
[ 7/5, 100/23, log(7)]
5.符号矩阵的简化
符号工具箱中提供了符号矩阵因式分解、展开、合并、简化及通分等符号操作函数。
(1)因式分解
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
函数 factor
格式 factor(s) %符号表达式s 的因式分解函数
说明 S 为符号矩阵或符号表达式,常用于多项式的因式分解。
例1-61 将x 9-1 分解因式
在Matlab 命令窗口键入:
syms x
factor(x^9-1)
则显示:ans =
(x-1)*(x^2+x+1)*(x6+x^3+1)
例1-62 问“入”取何值时,齐次方程组
??
??
?
+ + − λ =
+ − λ + =
− λ − + =
(1 ) 0
2 (3 ) 0
(1 ) 2 4 0
1 2 3
1 2 3
1 2 3
x x x
x x x
x x x
有非0 解?
解:在Matlab 编辑器中建立M 文件:
syms k
A=[1-k -2 4;2 3-k 1;1 1 1-k];
D=det(A)
factor(D)
其结果显示如下:
D =
-6*k+5*k^2-k^3
ans =
-k*(k-2)*(-3+k)
从而得到:当k=0、k=2 或k=3 时,原方程组有非0 解。
(2)符号矩阵的展开
函数 expand
格式:expand(s) %符号表达式s 的展开函数
说明:s 为符号矩阵或表达式。常用在多项式的因式分解中,也常用于三角函数,指数
函数和对数函数的展开中。
例1-63 将(x+1)3、sin(x+y)展开
在Matlab 编辑器中建立M 文件:
syms x y
p=expand((x+1)^3)
q=expand(sin(x+y))
则结果显示为
p =
x^3+3*x^2+3*x+1
q =
sin(x)*cos(y)+cos(x)*sin(y)
(3)同类式合并
函数 Collect
格式 Collect(s,v) %将s 中的变量v 的同幂项系数合并
Collect(s) % s 是矩阵或表达式,此命令对由命令findsym 函数返回的默认变
量进行同类项合并。
(4)符号简化
函数 simple 或simplify %寻找符号矩阵或符号表达式的最简型
格式 simple (s) % s 是矩阵或表达式
[R,how]=simple (s) %R 为返回的最简形,how 为简化过程中使用的主要方法。
说明 Simple(s)将表达式s 的长度化到最短。若还想让表达式更加精美,可使用函数
Pretty。
格式 Pretty(s) %使表达式s 更加精美
例1-64 计算行列式
4 4 4 4
2 2 2 2
1 1 1 1
a b c d
a b c d
a b c d 的值。
在Matlab 编辑器中建立M 文件:
syms a b c d
A=[1 1 1 1;a b c d;a^2 b^2 c^2 d^2;a^4 b^4 c^4 d^4];
d1=det(A)
d2=simple(d1) %化简表达式d1
pretty(d2) %让表达式d2 符合人们的书写习惯
则显示结果如下:
d1 =
b*c^2*d^4-b*d^2*c^4-b^2*c*d^4+b^2*d*c^4+b^4*c*d^2-b^4*d*c^2-a*c^2*d^4+a*d^2*c^4+a*b
^2*d^4-a*b^2*c^4-a*b^4*d^2+a*b^4*c^2+a^2*c*d^4-a^2*d*c^4-a^2*b*d^4+a^2*b*c^4+a^2*b^4*d-a
^2*b^4*c-a^4*c*d^2+a^4*d*c^2+a^4*b*d^2-a^4*b*c^2-a^4*b^2*d+a^4*b^2*c
d2 =
(-d+c)*(b-d)*(b-c)*(-d+a)*(a-c)*(a-b)*(a+c+d+b)
(-d+c)(b-d)(b-c)(-d+a)(a-c)(a-b)(a+c+d+b)
1.2.16 矩阵元素个数的确定
函数 numel
格式 n = numel(a) %计算矩阵A 中元素的个数
例1-65
>> A=[1 2 3 4;5 6 7 8];
>> n=numel(A)
n =
8
1.3 矩阵分解
1.3.1 Cholesky 分解
函数 chol
格式 R = chol(X) %如果X 为n 阶对称正定矩阵,则存在一个实的非奇异上三角
阵R,满足R'*R = X;若X 非正定,则产生错误信息。
[R,p] = chol(X) %不产生任何错误信息,若X 为正定阵,则p=0,R 与上相同;
若X 非正定,则p 为正整数,R 是有序的上三角阵。
例1-66
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
>> X=pascal(4) %产生4 阶pascal 矩阵
X =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
>> [R,p]=chol(X)
R =
1 1 1 1
0 1 2 3
0 0 1 3
0 0 0 1
p =
0
1.3.2 LU 分解
矩阵的三角分解又称 LU 分解,它的目的是将一个矩阵分解成一个下三角矩阵L 和一个
上三角矩阵U 的乘积,即A=LU。
函数 lu
格式 [L,U] = lu(X) %U 为上三角阵,L 为下三角阵或其变换形式,满足LU=X。
[L,U,P] = lu(X) %U 为上三角阵,L 为下三角阵,P 为单位矩阵的行变换矩阵,
满足LU=PX。
例1-67
>> A=[1 2 3;4 5 6;7 8 9];
>> [L,U]=lu(A)
L =
0.1429 1.0000 0
0.5714 0.5000 1.0000
1.0000 0 0
U =
7.0000 8.0000 9.0000
0 0.8571 1.7143
0 0 0.0000
>> [L,U,P]=lu(A)
L =
1.0000 0 0
0.1429 1.0000 0
0.5714 0.5000 1.0000
U =
7.0000 8.0000 9.0000
0 0.8571 1.7143
0 0 0.0000
P =
0 0 1
1 0 0
0 1 0
1.3.3 QR 分解
将矩阵 A 分解成一个正交矩阵与一个上三角矩阵的乘积。
函数 qr
格式 [Q,R] = qr(A) %求得正交矩阵Q 和上三角阵R,Q 和R 满足A=QR。
[Q,R,E] = qr(A) %求得正交矩阵Q 和上三角阵R,E 为单位矩阵的变换形式,
R 的对角线元素按大小降序排列,满足AE=QR。
[Q,R] = qr(A,0) %产生矩阵A 的“经济大小”分解
[Q,R,E] = qr(A,0) %E 的作用是使得R 的对角线元素降序,且Q*R=A(:, E)。
R = qr(A) %稀疏矩阵A 的分解,只产生一个上三角阵R,满足R'*R =
A'*A,这种方法计算A'*A 时减少了内在数字信息的损耗。
[C,R] = qr(A,b) %用于稀疏最小二乘问题:minimize||Ax-b||的两步解:[C,R] =
qr(A,b),x = R\c。
R = qr(A,0) %针对稀疏矩阵A 的经济型分解
[C,R] = qr(A,b,0) %针对稀疏最小二乘问题的经济型分解
例1-68
>>A =[ 1 2 3;4 5 6; 7 8 9; 10 11 12];
>>[Q,R] = qr(A)
Q =
-0.0776 -0.8331 0.5444 0.0605
-0.3105 -0.4512 -0.7709 0.3251
-0.5433 -0.0694 -0.0913 -0.8317
-0.7762 0.3124 0.3178 0.4461
R =
-12.8841 -14.5916 -16.2992
0 -1.0413 -2.0826
0 0 0.0000
0 0 0
函数 qrdelete
格式 [Q,R] = qrdelete(Q,R,j) %返回将矩阵A 的第j 列移去后的新矩阵的qr 分解
例1-69
>> A=[-149 -50 -154;537 180 546;-27 -9 -25];
>> [Q,R]=qr(A)
Q =
-0.2671 -0.7088 0.6529
0.9625 -0.1621 0.2176
-0.0484 0.6865 0.7255
R =
557.9418 187.0321 567.8424
0 0.0741 3.4577
0 0 0.1451
>> [Q,R]=qrdelete(Q,R,3) %将A 的第3 列去掉后进行qr 分解。
Q =
-0.2671 -0.7088 0.6529
0.9625 -0.1621 0.2176
-0.0484 0.6865 0.7255
R =
557.9418 187.0321
0 0.0741
0 0
函数 qrinsert
格式 [Q,R] = qrinsert(Q,R,j,x) %在矩阵A 中第j 列插入向量x 后的新矩阵进行qr 分
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
解。若j 大于A 的列数,表示在A 的最后插入列x。
例1-70
>> A=[-149 -50 -154;537 180 546;-27 -9 -25];
>> x=[35 10 7]';
>> [Q,R]=qrinsert(Q,R,4,x)
Q =
-0.2671 -0.7088 0.6529
0.9625 -0.1621 0.2176
-0.0484 0.6865 0.7255
R =
557.9418 187.0321 567.8424 -0.0609
0 0.0741 3.4577 -21.6229
0 0 0.1451 30.1073
1.3.4 Schur 分解
函数 schur
格式 T = schur(A) %产生schur 矩阵T,即T 的主对角线元素为特征值的三角阵。
T = schur(A,flag) %若A 有复特征根,则flag='complex',否则flag='real'。
[U,T] = schur(A,…) %返回正交矩阵U 和schur 矩阵T,满足A = U*T*U'。
例1-71
>> H = [ -149 -50 -154; 537 180 546; -27 -9 -25 ];
>> [U,T]=schur(H)
U =
0.3162 -0.6529 0.6882
-0.9487 -0.2176 0.2294
0.0000 0.7255 0.6882
T =
1.0000 -7.1119 -815.8706
0 2.0000 -55.0236
0 0 3.0000
1.3.5 实Schur 分解转化成复Schur 分解
函数 rsf2csf
格式 [U,T] = rsf2csf (U,T) %将实舒尔形式转化成复舒尔形式
例1-72
>> A=[1 1 1 3;1 2 1 1;1 1 3 1;-2 1 1 4];
>> [u,t]=schur (A)
u =
-0.4916 -0.4900 -0.6331 -0.3428
-0.4980 0.2403 -0.2325 0.8001
-0.6751 0.4288 0.4230 -0.4260
-0.2337 -0.7200 0.6052 0.2466
t =
4.8121 1.1972 -2.2273 -1.0067
0 1.9202 -3.0485 -1.8381
0 0.7129 1.9202 0.2566
0 0 0 1.3474
>> [U,T]=rsf2csf (u,t)
U =
-0.4916 -0.2756 - 0.4411i 0.2133 + 0.5699i -0.3428
-0.4980 -0.1012 + 0.2163i -0.1046 + 0.2093i 0.8001
-0.6751 0.1842 + 0.3860i -0.1867 - 0.3808i -0.4260
-0.2337 0.2635 - 0.6481i 0.3134 - 0.5448i 0.2466
T =
4.8121 -0.9697 + 1.0778i -0.5212 + 2.0051i -1.0067
0 1.9202 + 1.4742i 2.3355 0.1117 + 1.6547i
0 0 1.9202 - 1.4742i 0.8002 + 0.2310i
0 0 0 1.3474
1.3.6 特征值分解
函数 eig
格式 d = eig(A) %求矩阵A 的特征值d,以向量形式存放d。
d = eig(A,B) %A、B 为方阵,求广义特征值d,以向量形式存放d。
[V,D] = eig(A) %计算A 的特征值对角阵D 和特征向量V,使AV=VD 成立。
[V,D] = eig(A,'nobalance') %当矩阵A 中有与截断误差数量级相差不远的值时,
该指令可能更精确。'nobalance'起误差调节作用。
[V,D] = eig(A,B) %计算广义特征值向量阵V 和广义特征值阵D,满足
AV=BVD。
[V,D] = eig(A,B,flag) % 由flag 指定算法计算特征值D 和特征向量V,flag 的
可能值为:'chol' 表示对B 使用Cholesky 分解算法,这里
A 为对称Hermitian 矩阵,B 为正定阵。'qz' 表示使用QZ
算法,这里A、B 为非对称或非Hermitian 矩阵。
说明 一般特征值问题是求解方程:Ax = λx解的问题。广义特征值问题是求方程:
Ax = λBx 解的问题。
1.3.7 奇异值分解
函数 svd
格式 s = svd (X) %返回矩阵X 的奇异值向量
[U,S,V] = svd (X) %返回一个与X 同大小的对角矩阵S,两个酉矩阵U 和V,
且满足= U*S*V'。若A 为m×n 阵,则U 为m×m 阵,V
为n×n 阵。奇异值在S 的对角线上,非负且按降序排列。
[U,S,V] = svd (X,0) %得到一个“有效大小”的分解,只计算出矩阵U 的前n
列,矩阵S 的大小为n×n。
例1-73
>> A=[1 2;3 4;5 6;7 8];
>> [U,S,V]=svd(A)
U =
-0.1525 -0.8226 -0.3945 -0.3800
-0.3499 -0.4214 0.2428 0.8007
-0.5474 -0.0201 0.6979 -0.4614
-0.7448 0.3812 -0.5462 0.0407
S =
14.2691 0
0 0.6268
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
0 0
0 0
V =
-0.6414 0.7672
-0.7672 -0.6414
>> [U,S,V]=svd(A,0)
U =
-0.1525 -0.8226
-0.3499 -0.4214
-0.5474 -0.0201
-0.7448 0.3812
S =
14.2691 0
0 0.6268
V =
-0.6414 0.7672
-0.7672 -0.6414
1.3.8 广义奇异值分解
函数 gsvd
格式 [U,V,X,C,S] = gsvd(A,B) %返回酉矩阵U 和V、一个普通方阵X、非负对角矩
阵C 和S,满足A = U*C*X',B = V*S*X',C'*C + S'*S
= I (I 为单位矩阵);A 和B 的列数必须相同,行数可
以不同。
[U,V,X,C,S] = gsvd(A,B,0) %含义与前面相似
sigma = gsvd (A,B) %返回广义奇异值sigma
例1-74
>> A=reshape(1:12,3,4) %产生3 行4 列矩阵,元素由1,2,…,12 构成。
A =
1 4 7 10
2 5 8 11
3 6 9 12
>> B=magic(4) %产生4 阶魔方阵
B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> [U,V,X,C,S]=gsvd(A,B)
U =
0.4082 0.7071 0.5774
-0.8165 0.0000 0.5774
0.4082 -0.7071 0.5774
V =
0.2607 -0.7950 -0.5000 0.2236
-0.4029 0.3710 -0.5000 0.6708
-0.5452 -0.0530 -0.5000 -0.6708
0.6874 0.4770 -0.5000 -0.2236
X =
0 -9.4340 -17.0587 3.4641
1.8962 8.7980 -17.0587 8.6603
3.7924 8.1620 -17.0587 13.8564
-5.6885 -7.5260 -17.0587 19.0526
C =
0 0.0000 0 0
0 0 0.0829 0
0 0 0 1.0000
S =
1.0000 0 0 0
0 1.0000 0 0
0 0 0.9966 0
0 0 0 0.0000
1.3.9 特征值问题的QZ 分解
函数 qz
格式 [AA,BB,Q,Z,V] = qz(A,B) %A、B 为方阵,产生上三角阵AA 和BB,正
交矩阵Q、Z 或其列变换形式,V 为特征向量
阵。且满足:Q*A*Z= AA 和Q*B*Z = BB。
[AA,BB,Q,Z,V] = qz(A,B,flag) %产生由flag 决定的分解结果,flag 取值为:
'complex':表示复数分解(默认),取值为'real':
表示实数分解。
1.3.10 海森伯格形式的分解
如果矩阵 H 的第一子对角线下元素都是0,则H 为海森伯格(Hessenberg)矩阵。如果矩
阵是对称矩阵,则它的海森伯格形式是对角三角阵。MATLAB 可以通过相似变换将矩阵变
换成这种形式。
函数 hess
格式 H = hess(A) %返回矩阵A 的海森伯格形式
[P,H] = hess(A) %P 为酉矩阵,满足:A = PHP' 且P'P = eye(size(A))。
例1-75
>> A=[-149 -50 -154;537 180 546;-27 -9 -25];
>> [P,H]=hess(A)
P =
1.0000 0 0
0 -0.9987 0.0502
0 0.0502 0.9987
H =
-149.0000 42.2037 -156.3165
-537.6783 152.5511 -554.9272
0 0.0728 2.4489
H 的第一子对角元素是H(3,1)=0。
1.4 线性方程的组的求解
我们将线性方程的求解分为两类:一类是方程组求唯一解或求特解,另一类是方程组求
无穷解即通解。可以通过系数矩阵的秩来判断:
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
若系数矩阵的秩r=n(n 为方程组中未知变量的个数),则有唯一解;
若系数矩阵的秩r<n,则可能有无穷解;
线性方程组的无穷解 = 对应齐次方程组的通解+非齐次方程组的一个特解;其特解的求
法属于解的第一类问题,通解部分属第二类问题。
1.4.1 求线性方程组的唯一解或特解(第一类问题)
这类问题的求法分为两类:一类主要用于解低阶稠密矩阵 —— 直接法;另一类是解大
型稀疏矩阵 —— 迭代法。
1.利用矩阵除法求线性方程组的特解(或一个解)
方程:AX=b
解法:X=A\b
例1-76 求方程组
? ?
?
? ?
?
?
+ =
+ + =
+ + =
+ + =
+ =
x 5x 1
x 5x 6x 0
x 5x 6x 0
x 5x 6x 0
5x 6x 1
4 5
3 4 5
2 3 4
1 2 3
1 2
的解。
解:
>>A=[5 6 0 0 0
1 5 6 0 0
0 1 5 6 0
0 0 1 5 6
0 0 0 1 5];
B=[1 0 0 0 1]';
R_A=rank(A) %求秩
X=A\B %求解
运行后结果如下
R_A =
5
X =
2.2662
-1.7218
1.0571
-0.5940
0.3188
这就是方程组的解。
或用函数rref 求解:
>> C=[A,B] %由系数矩阵和常数列构成增广矩阵C
>> R=rref(C) %将C 化成行最简行
R =
1.0000 0 0 0 0 2.2662
0 1.0000 0 0 0 -1.7218
0 0 1.0000 0 0 1.0571
0 0 0 1.0000 0 -0.5940
0 0 0 0 1.0000 0.3188
则R 的最后一列元素就是所求之解。
例1-77 求方程组
??
??
?
+ − − =
− − + =
+ − − =
x 5x 9x 8x 0
3x x 3x 4x 4
x x 3x x 1
1 2 3 4
1 2 3 4
1 2 3 4
的一个特解。
解:
>>A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];
>>B=[1 4 0]';
>>X=A\B %由于系数矩阵不满秩,该解法可能存在误差。
X =[ 0 0 -0.5333 0.6000]’(一个特解近似值)。
若用rref 求解,则比较精确:
>> A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];
B=[1 4 0]';
>> C=[A,B]; %构成增广矩阵
>> R=rref(C)
R =
1.0000 0 -1.5000 0.7500 1.2500
0 1.0000 -1.5000 -1.7500 -0.2500
0 0 0 0 0
由此得解向量X=[1.2500 – 0.2500 0 0]’(一个特解)。
2.利用矩阵的LU、QR 和cholesky 分解求方程组的解
(1)LU 分解:
LU 分解又称Gauss 消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交
换)和上三角矩阵的乘积。即A=LU,L 为下三角阵,U 为上三角阵。
则:A*X=b 变成L*U*X=b
所以X=U\(L\b) 这样可以大大提高运算速度。
命令 [L,U]=lu (A)
例1-78 求方程组
??
??
?
+ =
− + =
+ − =
11x 3x 8
3x x 2x 10
4x 2x x 2
1 2
1 2 3
1 2 3
的一个特解。
解:
[2,10, 8]
11 3 0
3 1 2
4 2 1
= ′
? ? ?
?
?
? ? ?
?
?


A = b
>>A=[4 2 -1;3 -1 2;11 3 0];
>>B=[2 10 8]';
>>D=det(A)
>>[L,U]=lu(A)
>>X=U\(L\B)
显示结果如下:
D =
0
L =
0.3636 -0.5000 1.0000
0.2727 1.0000 0
1.0000 0 0
U =
11.0000 3.0000 0
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
0 -1.8182 2.0000
0 0 0.0000
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.018587e-017.
> In D:\Matlab\pujun\lx0720.m at line 4
X =
1.0e+016 *
-0.4053
1.4862
1.3511
说明 结果中的警告是由于系数行列式为零产生的。可以通过A*X 验证其正确性。
(2)Cholesky 分解
若A 为对称正定矩阵,则Cholesky 分解可将矩阵A 分解成上三角矩阵和其转置的乘积,
即:A = R′ ∗ R 其中R 为上三角阵。
方程 A*X=b 变成 R′ ∗ R *X = b
所以 X = R \ (R′ \ b)
(3)QR 分解
对于任何长方矩阵A,都可以进行QR 分解,其中Q 为正交矩阵,R 为上三角矩阵的初
等变换形式,即:A=QR
方程 A*X=b 变形成 QRX=b
所以 X=R\(Q\b)
上例中 [Q, R]=qr(A)
X=R\(Q\B)
说明 这三种分解,在求解大型方程组时很有用。其优点是运算速度快、可以节省磁盘
空间、节省内存。
1.4.2 求线性齐次方程组的通解
在 Matlab 中,函数null 用来求解零空间,即满足A·X=0 的解空间,实际上是求出解
空间的一组基(基础解系)。
格式 z = null % z 的列向量为方程组的正交规范基,满足Z′× Z = I。
z = null(A,′ r′) % z 的列向量是方程AX=0 的有理基
例1-79 求解方程组的通解:
??
??
?
− − − =
+ − − =
+ + + =
x x 4x 3x 0
2x x 2x 2x 0
x 2x 2x x 0
1 2 3 4
1 2 3 4
1 2 3 4
解:
>>A=[1 2 2 1;2 1 -2 -2;1 -1 -4 -3];
>>format rat %指定有理式格式输出
>>B=null(A,'r') %求解空间的有理基
运行后显示结果如下:
B =
2 5/3
-2 -4/3
1 0
0 1
或通过行最简行得到基:
>> B=rref(A)
B =
1.0000 0 -2.0000 -1.6667
0 1.0000 2.0000 1.3333
0 0 0 0
即可写出其基础解系(与上面结果一致)。
写出通解:
syms k1 k2
X=k1*B(:,1)+k2*B(:,2) %写出方程组的通解
pretty(X) %让通解表达式更加精美
运行后结果如下:
X =
[ 2*k1+5/3*k2]
[ -2*k1-4/3*k2]
[ k1]
[ k2]
% 下面是其简化形式
[2k1 + 5/3k2 ]
[ ]
[-2k1 - 4/3k2]
[ ]
[ k1 ]
[ ]
[ k2 ]
1.4.3 求非齐次线性方程组的通解
非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。
因此,步骤为:
第一步:判断AX=b 是否有解,若有解则进行第二步
第二步:求AX=b 的一个特解
第三步:求AX=0 的通解
第四步:AX=b 的通解= AX=0 的通解+AX=b 的一个特解。
例1-80 求解方程组
??
??
?
+ + − =
− + − =
− + − =
2x x 2x 2x 3
3x x 5x 3x 2
x 2x 3x x 1
1 2 3 4
1 2 3 4
1 2 3 4
解:在Matlab 中建立M 文件如下:
A=[1 -2 3 -1;3 -1 5 -3;2 1 2 -2];
b=[1 2 3]';
B=[A b];
n=4;
R_A=rank(A)
R_B=rank(B)
format rat
if R_A==R_B&R_A==n %判断有唯一解
X=A\b
elseif R_A==R_B&R_A<n %判断有无穷解
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
X=A\b %求特解
C=null(A,'r') %求AX=0 的基础解系
else X='equition no solve' %判断无解
end
运行后结果显示:
R_A =
2
R_B =
3
X =
equition no solve
说明 该方程组无解
例1-81 求解方程组的通解:
??
??
?
+ − − =
− − + =
+ − − =
x 5x 9x 8x 0
3x x 3x 4x 4
x x 3x x 1
1 2 3 4
1 2 3 4
1 2 3 4
解法一:在Matlab 编辑器中建立M 文件如下:
A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];
b=[1 4 0]';
B=[A b];
n=4;
R_A=rank(A)
R_B=rank(B)
format rat
if R_A==R_B&R_A==n
X=A\b
elseif R_A==R_B&R_A<n
X=A\b
C=null(A,'r')
else X='Equation has no solves'
end
运行后结果显示为:
R_A =
2
R_B =
2
Warning: Rank deficient, rank = 2 tol = 8.8373e-015.
> In D:\Matlab\pujun\lx0723.m at line 11
X =
0
0
-8/15
3/5
C =
3/2 -3/4
3/2 7/4
1 0
0 1
所以原方程组的通解为X=k1
? ? ? ?
?
?
? ? ? ?
?
?
0
1
3 / 2
3 / 2
+k2
? ? ? ?
?
?
? ? ? ?
?
?−
1
0
7 / 4
3/ 4
+
? ? ? ?
?
?
? ? ? ?
?
?

3/ 5
8 /15
0 0
解法二:用rref 求解
A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];
b=[1 4 0]';
B=[A b];
C=rref(B) %求增广矩阵的行最简形,可得最简同解方程组。
运行后结果显示为:
C =
1 0 -3/2 3/4 5/4
0 1 -3/2 -7/4 -1/4
0 0 0 0 0
对应齐次方程组的基础解系为:
? ? ? ?
?
?
? ? ? ?
?
?
ξ =
0
1
3 / 2
3 / 2
1 ,
? ? ? ?
?
?
? ? ? ?
?
?−
ξ =
1
0
7 / 4
3/ 4
2 非齐次方程组的特解为:
? ? ? ?
?
?
? ? ? ?
?
?

η =
0 0
1/ 4
5 / 4
* 所以,原方程组的通解为:X=k1 ξ1 +k2 ξ2 + η*。
1.4.4 线性方程组的LQ 解法
函数 symmlq
格式 x = symmlq(A,b) %求线性方程组AX=b 的解X。A 必须为n 阶对称方阵,b 为
n 元列向量。A 可以是由afun 定义并返回A*X 的函数。如果
收敛,将显示结果信息;如果收敛失败,将给出警告信息并显
示相对残差norm(b-A*x)/norm(b)和计算终止的迭代次数。
symmlq(A,b,tol) %指定误差tol,默认值是1e-6。
symmlq(A,b,tol,maxit) %maxit 指定最大迭代次数
symmlq(A,b,tol,maxit,M) %M 为用于对称正定矩阵的预处理因子
symmlq(A,b,tol,maxit,M1,M2) %M=M1×M2
symmlq(A,b,tol,maxit,M1,M2,x0) %x0 为初始估计值,默认值为0。
[x,flag] = symmlq(A,b,…) %flag 的取值为:0 表示在指定迭代次数之内按要求
精度收敛;1 表示在指定迭代次数内不收敛;2 表示
M 为坏条件的预处理因子;3 表示两次连续迭代完全
相同;4 表示标量参数太小或太大;5 表示预处理因
子不是对称正定的。
[x,flag,relres] = symmlq(A,b,…) % relres 表示相对误差norm(b-A*x)/norm(b)
[x,flag,relres,iter] = symmlq(A,b,…) %iter 表示计算x 的迭代次数
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
[x,flag,relres,iter,resvec] = symmlq(A,b,…) %resvec 表示每次迭代的残差:
norm(b-A*x0)
[x,flag,relres,iter,resvec,resveccg] = symmlq(A,b,…) %resveccg 表示每次迭代共
轭梯度残差的范数
1.4.5 双共轭梯度法解方程组
函数 bicg
格式 x = bicg(A,b) %求线性方程组AX=b 的解X。A 必须为n 阶方阵,b 为n 元列
向量。A 可以是由afun 定义并返回A*X 的函数。如果收敛,将
显示结果信息;如果收敛失败,将给出警告信息并显示相对残差
norm(b-A*x)/norm(b)和计算终止的迭代次数。
bicg(A,b,tol) %指定误差tol,默认值是1e-6。
bicg(A,b,tol,maxit) %maxit 指定最大迭代次数
bicg(A,b,tol,maxit,M) %M为用于对称正定矩阵的预处理因子
bicg(A,b,tol,maxit,M1,M2) %M=M1×M2
bicg(A,b,tol,maxit,M1,M2,x0) %x0 为初始估计值,默认值为0。
[x,flag] = bicg(A,b,…) %flag 的取值为:0 表示在指定迭代次数之内按要求精度
收敛;1 表示在指定迭代次数内不收敛;2 表示M 为坏条
件的预处理因子;3 表示两次连续迭代完全相同;4 表示
标量参数太小或太大。
[x,flag,relres] = bicg(A,b,…) % relres 表示相对误差norm(b-A*x)/norm(b)
[x,flag,relres,iter] = bicg(A,b,…) %iter 表示计算x 的迭代次数
[x,flag,relres,iter,resvec] = bicg(A,b,…) %resvec 表示每次迭代的残差:
norm(b-A*x0)
例1-83 调用MATLAB6.0 数据文件west0479。
>> load west0479
>> A=west0479; %将数据取为系数矩阵A。
>> b=sum (A,2); %将A 的各行求和,构成一列向量。
>> X=A\b; %用“\”求AX=b 的解。
>> norm(b-A*X)/norm(b) %计算解的相对误差。
ans =
1.2454e-017
>> [x,flag,relres,iter,resvec] = bicg(A,b) %用bicg 函数求解。
x = (全为0,由于太长,不显示出来)
flag =
1 %表示在默认迭代次数(20 次)内不收敛。
relres = %相对残差relres = norm(b-A*x)/norm(b) =norm(b)/norm(b) = 1。
1
iter = %表明解法不当,使得初始估计值0 向量比后来所有迭代值都好。
0
resvec = (略) %每次迭代的残差。
>> semilogy(0:20,resvec/norm(b),'-o') %作每次迭代的相对残差图形,结果如下图。
>> xlabel('iteration number') %x 轴为迭代次数。
>> ylabel('relative residual') %y 轴为相对残差。
0 5 10 15 20
100
101
102
103
104
105
iteration number
relative residual
图1-1 双共轭梯度法相对误差图
1.4.6 稳定双共轭梯度方法解方程组
函数 bicgstab
格式 x =bicgstab(A,b)
bicgstab(A,b,tol)
bicgstab(A,b,tol,maxit)
bicgstab(A,b,tol,maxit,M)
bicgstab(A,b,tol,maxit,M1,M2)
bicgstab(A,b,tol,maxit,M1,M2,x0)
[x,flag] = bicgstab(A,b,…)
[x,flag,relres] = bicgstab(A,b,…)
[x,flag,relres,iter] = bicgstab(A,b,…)
[x,flag,relres,iter,resvec] = bicgstab(A,b,…)
稳定双共轭梯度法解方程组,调用方式和返回的结果形式和命令bicg 一样。
例1-84
>>load west0479;
>>A=west0479;
>>b=sum(A,2);
>>[x,flag]=bicgstab(A,b)
显示结果是x 的值全为0,flag=1。表示在默认误差和默认迭代次数(20 次)下不收敛。
若改为:
>>[L1,U1] = luinc(A,1e-5);
>>[x1,flag1] = bicgstab(A,b,1e-6,20,L1,U1)
即指定误差,并用A 的不完全LU 分解因子L 和U 作为预处理因子M=L*U,其结果是
x1 的值全为0,flag=2 表示预处理因子为坏条件的预处理因子。
若改为
>>[L2,U2]=luinc(A,1e-6); %稀疏矩阵的不
完全LU 分解。
>>[x2,flag2,relres2,iter2,resvec2]=bicgstab(A,b,1e-
15,10,L2,U2)
%指定最大迭
代次数为10 次,预处理因子M=L*U。
>>semilogy(0:0.5:iter2,resvec2/norm(b),'-o') %
每次迭代的相对残差图形,见图1-2。
>>xlabel('iteration number')
0 1 2 3 4 5 6
10-16
10-14
10-12
10-10
10-8
10-6
10-4
10-2
100
iteration number
relative residual
图1-2 稳定双共轭梯度方法的相对误差图
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
>>ylabel('relative residual')
结果为
x2=(其值全为1,略)
flag2 =
0 %表示收敛
relres2 =
2.8534e-016 %收敛时的相对误差
iter2 =
6 %计算终止时的迭代次数
resvec2 = %每次迭代的残差
1.4.7 复共轭梯度平方法解方程组
函数 cgs
格式 x = cgs(A,b)
cgs(A,b,tol)
cgs(A,b,tol,maxit)
cgs(A,b,tol,maxit,M)
cgs(A,b,tol,maxit,M1,M2)
cgs(A,b,tol,maxit,M1,M2,x0)
[x,flag] = cgs(A,b,…)
[x,flag,relres] = cgs(A,b,…)
[x,flag,relres,iter] = cgs(A,b,…)
[x,flag,relres,iter,resvec] = cgs(A,b,…)
调用方式和返回的结果形式与命令bicg 一样。
1.4.8 共轭梯度的LSQR 方法
函数 lsqr
格式 x = lsqr(A,b)
lsqr(A,b,tol)
lsqr(A,b,tol,maxit)
lsqr(A,b,tol,maxit,M)
lsqr(A,b,tol,maxit,M1,M2)
lsqr(A,b,tol,maxit,M1,M2,x0)
[x,flag] = lsqr(A,b,…)
[x,flag,relres] = lsqr(A,b,…)
[x,flag,relres,iter] = lsqr(A,b,…)
[x,flag,relres,iter,resvec] = lsqr(A,b,…)
调用方式和返回的结果形式与命令bicg 一样。
例1-85
>>n = 100;
>>on = ones(n,1);
>>A = spdiags([-2*on 4*on -on],-1:1,n,n); %产生一个对角矩阵
>>b = sum(A,2);
>>tol = 1e-8; %指定精度
>>maxit = 15; %指定最大迭代次数
>>M1 = spdiags([on/(-2) on],-1:0,n,n);
>>M2 = spdiags([4*on -on],0:1,n,n); %M1*M2=M,即产生预处理因子
>>[x,flag,relres,iter,resvec] = lsqr(A,b,tol,maxit,M1,M2,[])
结果显示
x 的值全为1
flag =
0 %表示收敛
relres =
3.5241e-009 %表示相对残差
iter =
12 %计算终止时的迭代次数
1.4.9 广义最小残差法
函数 qmres
格式 x = gmres(A,b)
gmres(A,b,restart)
gmres(A,b,restart,tol)
gmres(A,b,restart,tol,maxit)
gmres(A,b,restart,tol,maxit,M)
gmres(A,b,restart,tol,maxit,M1,M2)
gmres(A,b,restart,tol,maxit,M1,M2,x0)
[x,flag] = gmres(A,b,…)
[x,flag,relres] = gmres(A,b,…)
[x,flag,relres,iter] = gmres(A,b,…)
[x,flag,relres,iter,resvec] = gmres(A,b,…)
除参数restart(缺省时为系数方阵A 的阶数n)可以给出外,调用方式和返回的结果形
式与命令bicg 一样。
例1-86
>>load west0479;
>>A = west0479;
>>b = sum(A,2);
>>[x,flag] = gmres(A,b,5)
结果显示flag=1,表示在默认精度和默认迭代次数下不收敛。
若最后一行改为
>>[L1,U1] = luinc(A,1e-5);
>>[x1,flag1] = gmres(A,b,5,1e-6,5,L1,U1)
结果flag1=2,说明该方法失败,原因是U1 的对角线上有0 元素,构成坏条件的预处理
因子。
若改为:
[L2,U2] = luinc(A,1e-6);
tol = 1e-15;
[x4,flag4,relres4,iter4,resvec4] = gmres(A,b,4,tol,5,L2,U2)
[x6,flag6,relres6,iter6,resvec6] = gmres(A,b,6,tol,3,L2,U2)
[x8,flag8,relres8,iter8,resvec8] = gmres(A,b,8,tol,3,L2,U2)
结果flag4=0,flag6=0,flag8=0 表示参数restart 分别取为4,6,8 时收敛。
1.4.10 最小残差法解方程组
函数 minres
格式 x = minres(A,b)
minres(A,b,tol)
minres(A,b,tol,maxit)
minres(A,b,tol.maxit,M)
minres(A,b,tol,maxit,M1,M2)
minres(A,b,tol,maxit,M1,M2,x0)
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 中国电子技术论坛
[x,flag] = minres(A,b,…)
[x,flag,relres] = minres(A,b,…)
[x,flag,relres,iter] = minres(A,b,…)
[x,flag,relres,iter,resvec] = minres(A,b,…)
[x,flag,relres,iter,resvec,resveccg] = minres(A,b,…)
这里A 为对称矩阵,这种方法是寻找最小残差来求x。调用方式和返回的结果形式与命
令bicg 一样。
例1-87
>>n = 100; on = ones(n,1);
>>A = spdiags([-2*on 4*on -2*on],-1:1,n,n);
>>b = sum(A,2);
>>tol = 1e-10;
>>maxit = 50;
>>M1 = spdiags(4*on,0,n,n);
>> [x,flag,relres,iter,resvec,resveccg] = minres(A,b,tol,maxit,M1,[],[])
结果显示:
flag =
0
relres =
4.6537e-014
iter =
49
resvec =(略)
resveccg =(略)
1.4.11 预处理共轭梯度方法
函数 pcg
格式 x = pcg(A,b)
pcg(A,b,tol)
pcg(A,b,tol,maxit)
pcg(A,b,tol,maxit,M)
pcg(A,b,tol,maxit,M1,M2)
pcg(A,b,tol,maxit,M1,M2,x0)
pcg(A,b,tol,maxit,M1,M2,x0,p1,p2,…)
[x,flag] = pcg(A,b,tol,maxit,M1,M2,x0,p1,p2,…)
[x,flag,relres] = pcg(A,b,tol,maxit,M1,M2,x0,p1,p2,…)
[x,flag,relres,iter] = pcg(A,b,tol,maxit,M1,M2,x0,p1,p2,…)
[x,flag,relr
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值