MATLAB数值计算分解
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1-范数:║x║1=│x1│+│x2│+…+│xn│ 2-范数:║x║2=(│x1│^2+│x2│^2+…+│xn│^2)^1/2 ∞-范数:║x║∞=max(│x1│,│x2│,…,│xn│)
V=[-1,1/2,1]; v1=norm(V,1) v2=norm(V) vinf=norm(V,inf)
x1+2x2+3x3=5
x1+4x2+9x3=-2
x1+8x2+27x3=6 命令如下:
A=[1,2,3;1,4,9;1,8,27]; b=[5,–2,6]';
x=inv(A)*b 一般情况下,用左除比求矩阵的逆的方法更 有效,即x=A\b。
2 矩阵的秩
一个向量组的极大线形无关组的个数。
MATLAB中,求矩阵秩的函数是rank(A)。例如, 求例5.7中方程组系数矩阵D的秩,命令是:
2.3 多维矩阵
以三维矩阵为例,常用的方法有4种:
(1)对二维矩阵进行扩充得到三维矩阵。
(2)若干个同样大小的二维矩阵进行组合得到三维矩 阵。
(3)除产生单位矩阵的eye函数外,前面介绍的建立 矩阵的函数都可以延伸到三维矩阵。
(4)用cat函数构建多维矩阵。一般调用格式是:
cat(n,A1,A2,…,An)
例 产生5阶随机方阵A,其元素为[10,90] 区间的随机整数,然后判断A的元素是否 能被3整除。 (1) 生成5阶随机方阵A。
A=fix((90-10+1)*rand(5)+10) (2) 判断A的元素是否可以被3整除。
P=rem(A,3)==0
其他特殊矩阵函数
希尔伯特矩阵 hilb(n) 希尔伯特矩阵的逆矩阵 invhilb(n) 托普利兹矩阵 toeplitz(k,r)、 toeplitz(c) 友矩阵 compan(p) 生成多项式p的友矩阵,也就是 他的特征多项式是p; hadamard(k) 生成hadamard矩阵 hankel函数,生成hankel矩阵 magic(n),生成n×n的魔方矩阵 pascal函数,生成pascal矩阵 rosser,给出Rosser矩阵 vander(x),给出向量x的范德蒙矩阵 wilkinson(n),给出Wilkinson特征值测试矩阵
cat函数把大小相同的若干矩阵,沿第n维方向串 接成高维矩阵。当n=1和2时,沿行和列的方向串 接,结果是二维矩阵。当n=3时,沿页的方向串接, 结果是三维矩阵。
2.4 矩阵的运算
2.4.1 基本算术运算 1. 四则运算等 MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\(左除)、 ^(乘方)。 几点说明:1)加减运算与数字运算格式相同,要求两矩阵是同阶的;
9];
a1=norm(A,1)
%求A的1—范数
a2=norm(A)
%求A的2—范数
ainf=norm(A,inf) %求A的∞—范数
4 矩阵的条件数和迹 1.矩阵的条件数
用矩阵 及其逆矩阵 的范数的乘积表示矩阵的条件数,矩阵条件 数的大小是衡量矩阵“坏”或“好”的标志。
条件数大的矩阵称为“坏矩阵”或“病态矩阵”。 MATLAB中,计算矩阵A的3种条件数的函数是: (1)cond(A,1) 计算A的1—范数下的条件数 (2)cond(A)或cond(A,2) 计算A的2—范数数下的条件数 (3)cond(A,inf) 计算A的 ∞—范数下的条件数
这三个向量的共线共面问题。 命令如下:
X=[1,1,1];Y=[-1,2,1];Z=[2,2,2]; XY=[X;Y];YZ=[Y;Z];ZX=[Z;X];XYZ=[X;Y;Z]; rank(XY) rank(YZ) rank(ZX) rank(XYZ)
2.4.3 矩阵分解函数
特征值分解函数eig 复数特征值对角阵与实数块特征值对角阵地转化cdf2rdf、
2)乘法要求两矩阵有相邻公共维; 3)用矩阵法求解方程组Ax=b,A是(n×m)阶矩阵
讨论A的情况: n=m且非奇异,称恰定方程; n>m,超定方程,没有精确解,matlab使用最小二乘法来求解,来找到一
个向量x使它对n个方程的总误差最小; 方法:A\b 如果b是矩阵B,则对B中的每一列相应的方程组求解 nnls(A,b) 求非负的最小二乘解 lscov(A,b,v) 求在已知协方差v的情况下的最小二乘解
Matlab数值计算 基础功能
内容
向量(一维矩阵) 矩阵 数组 多项式
一、向量输入及其运算
向量的生成:
直接输入 向量元素用[]括起来 行向量:元素之间用空格或逗号分隔 列向量:元素之间用分号分隔
用冒号表达式生成 格式:X=X0:step:Xn step缺省则默认为1
线性等分向量的生成 格式:y=linspace(x1,x2,n) 生成n维行向量,y(1)=x1、y(n)=x(2) 若n缺省,则默认n=100
3. 利用MATLAB函数建立特殊矩阵
几个产生常用特殊矩阵的函数:全零阵 zeros、全一阵ones、单位阵eye、均匀分 布随机阵rand、正态分布随机阵randn。
这几个函数的调用格式相似,下面以产生 零矩阵的zeros函数为例进行说明。其调 用格式是:
zeros(m)
产生m×m零矩阵
zeros(m,n) 产生m×n零矩阵。
n<m,欠定方程,方程组有无穷多解,matlab在求解时给出一组解,无警 告信息。
2 矩阵与常数间的运算
常数与矩阵的各元素间进行运算, 当作除法时,常数只能做除数。
3 矩阵的逆运算 inv 命令
4 矩阵的行列式运算 det 函数
2.4.2 矩阵的函数运算
特征向量、特征值计算函数 eig、eigs
此外,还可利用一般向量和end运算符等来表示矩 阵下标,从而获得子矩阵。end表示某一维的末尾 元素下标。 如a(1,end)
(2)利用空矩阵删除矩阵的元素
在MATLAB中,定义[]为空矩阵。给变量 X赋空矩阵的语句为X=[]。
注意,X=[]与clear X不同,clear是将X从 工作空间中删除,而空矩阵则存在于工 作空间,只是维数为0。
对数等分向量的生成 格式:y=logspace(x1,x2,n) 生成n维行向量,y(1)=10^x1、 y(n)=10^x(2) 若n缺省,则默认n=50
向量的运算
加、减、数乘
点积 dot(a,b),a、b必须同维 叉积 cross(a,b),a、b为三维向量
两个三维向量的叉积等于一个新的向量, 该向量与前两者垂直,且长度为前两者张成 的平行四边形面积;
%求V的1—范数 %求V的2—范数
%求∞—范数
2. 矩阵的范数及其计算函数 MATLAB中提供了求3种矩阵范数的函数,其函
数调用格式与求向量的范数的函数完全相同
(含义请参见MATLAB help)
A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,1
2. 利用M文件建立矩阵
对于比较大且比较复杂的矩阵,可以为它专门 建立一个M文件。
例 利用M文件建立MYMAT矩阵。
(1)启动有关编辑程序或MATLAB文本编辑器, 并输入待建矩阵.
(2)把输入的内容以纯文本方式存盘(设文件名 为mymatrix.m)。
(3)运行该M文件,就会自动建立一个名为 MYMAT的矩阵,可供以后使用。
A=[2,2,3;4,5,-6;7,8,9]; C1=cond(A,1) C2=cond(A) C3=cond(A,inf)
2. 矩阵的迹
方阵对角元素之和。
MATLAB中,求矩阵的迹的函数是trace(A)。例如, X=[2 2 3;4 5 -6;7 8 9]; trace(X) ans =
16
MATLAB在三维向量中的应用 1. 向量共线或共面的判断 例 设X=(1,1,1),Y=(-1,2,1),Z=(2,2,2),判断
A=[2,1,-2;1,2,1;2,5,3];
[Q,R]=qr(A)
例:
A=[2,1,4,6;1,2,1,5;4,1,3,4;6,5,4,2]; [Q,D]=eig(A) Q*D*Q' ans =
2.0000 1.0000 4.0000 6.0000 1.0000 2.0000 1.0000 5.0000 4.0000 1.0000 3.0000 4.0000 6.0000 5.0000 4.0000 2.0000 结果与A相等,说明确实将A分解为了QDQ'的乘 积。
2. 矩阵拆分
(1)利用冒号表达式获得子矩阵
①A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A 矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j 列的元素。
②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素; A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素, A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第 k~k+m列中的所有元素。
奇异值函数 svd、svds
条件数函数 cond、condest、rcond
特征值的条件数 condeig
范数函数 norm、normest
秩函数 rank
迹函数 trace
举例: 1. 矩阵的逆
求一个矩阵的逆非常容易。求方阵A的逆可调 用函数inv(A)。 例 用求逆矩阵的方法解线性方程组。
D=[2,2,-1,1;4,3,-1,2;8,5,-3,4;3,3,-2,2]; r=rank(D) r=
4 说明D是一个满秩矩阵。
3 向量和矩阵的范数 1. 计算向量3种常用范数的函数 (1)norm(V)或norm(V,2) 计算向量V的2—范数 (2)norm(V,1) 计算向量V的1—范数 (3)norm(V,inf) 计算向量V的∞—范数
4. 建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。 例如
A=[1 2 3;4 5 6;7 8 9]; C=[A,eye(size(A)); ones(size(A)),A]
2. 2 矩阵的拆分 1. 矩阵元素
MATLAB允许用户对一个矩阵的单个元素进 行赋值和操作。例如
A(3,2)=200 也可以采用矩阵元素的序号来引用矩阵元素。
混合积 dot(a,cross(b,c))
以a,b,c为棱的平行六面体的体积
二、MATLAB矩阵
2.1 矩阵的建立 1. 直接输入法 将矩阵的元素用方括号括起来,按矩阵行 的顺序输入各元素,同一行的各元素之间 用空格或逗号分隔,不同行的元素之间用 分号分隔。例如 A=[1 2 3;4 5 6;7 8 9]
rsf2csf 奇异值分解svd LU分解
[L,U]=lu(A) 将方阵A分解为交换下三角矩阵L和上三角矩阵U,使 A=LU [L,U,P]=lu(A) 将方阵A分解为下三角矩阵L和上三角矩阵U,使 PA=LU
Chol分解chol QR分解 (正规正交矩阵Q与上三角形矩阵R)
[Q,R]=qr(A),根据方阵A,求一个正交矩阵Q和一个上三 角矩阵R,使A=Q*R 例如,对矩阵A进行QR分解的命令是:
例 先建立5×5矩阵A,然后将A的第1行元素乘以1, 第2行乘以2,…,第5行乘以5。
命令如下:
A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19]; D=diag([1,2,3,4,5]); D*A
•2.4.4 矩阵的一些操作
1、对角阵与三角阵 矩阵的对角元素 (1)提取矩阵的对角线元素
设A为m×n矩阵,diag(A)函数用于提取矩阵A主对角线元 素产生一个具有min(m,n)个元素的列向量。 diag(A,k),其功能是提取第k条对角线的元素。 (2)构造对角矩阵 设V为具有m个元素的向量,diag(V)将产生一个m×m对 角矩阵,其主对角线元素即为向量V的元素。 diag(V,k),其功能是产生一个对角阵,其第k条对角线的 元素即为向量V的元素。
zeros(size(A)) 产生与矩阵A同样大小的零矩 阵
例 分别建立3×3、3×2和与矩阵A同样大小的 零矩阵。
(1)建立一个3×3零矩阵:zeros(3) (2)建立一个3×2零矩阵:zeros(3,2) (3)建立与矩阵A同样大小零矩阵:
zeros(size(A))
此外,常用的函数还有reshape(A,m,n),它 在矩阵总元素保持不变的前提下,将矩阵A重 新排成m×n的二维矩阵。