数值计算功能
向量及其运算
1、向量生成
(1)、直接输入
向量元素用“[ ]”括起来,用空格或逗号生成行向量,用分号生成列向量
a1=[11 14 17 18]
a2=[11,14,17,18]
a2=[11;14;17;18] %列向量
用“’”可以进行向量转置
a1=[11 14 17 18]
a4=a1' %a1行向量,a4列向量
也可以用组合方法:
A=[1 2 3];
B=[7 8 9];
C=[A 4 ones(1,2) B]
(2)、等差元素向量生成
冒号生成法:Vec=Vec0:n:Vecn,其中Vec表示生成的向量,Vec0表示第一个元素,n表示步长,Vecn表示最后一个元素
使用linespace函数:Vec=linespace(Vec0,n,Vecn),其中Vec表示生成的向量,Vec0表示第一个元素,n表示生成向量元素个数(默认n=100),Vecn表示最后一个元素
vec1=10:5:50
vec2=50:-5:10
vec3=linspace(10,50,6)
2、向量的基本运算
(1)、向量与数的四则运算
向量中每个元素与数的加减乘除运算(除法运算时,向量只能作为被除数,数只能作为除数)
vec1=linspace(10,50,6)
vec1+100
vec2=logspace(0,10,6) %对数等分向量
vec2/100
(2)、向量与向量之间的加减运算
向量中的每个元素与另一个向量中相对应的元素的加减运算
vec1=linspace(10,50,6)
vec2=logspace(0,2,6)
vec3=vec1+vec2
(3)、点积、叉积和混合机
点积:dot函数,注意向量维数的一致性
x1=[11 22 33 44]
x2=[1 2 3 4]
a=dot(x1,x2)
sum(x1.*x2) %还可以采用sum函数计算向量的点积
叉积:cross函数,注意向量维数的一致性(由几何意义可知,向量维数只能为3)
x1=[11 22 33 44]
x2=[1 2 3 4]
x3=cross(x1,x2) %报错,维数只能为3
x1=[11 22 33]
x2=[1 2 3]
x3=cross(x1,x2)
混合积:结果为一个数,先求cross,再求dot
a=[1 2 3]
b=[2 4 3]
c=[5 2 1]
v=dot(a,cross(b,c))
v=cross(a,dot(b,c)) %报错
矩阵及其运算
MATLAB的基本单位是矩阵,逗号或空格区分同一行不同元素,分号区分不同行
1、矩阵的生成
4种方法:在command window直接输入;通过语句和函数产生;M文件中建立;外部数据文件中导入
(1)、直接输入:把矩阵元素直接排列到方括号中,每行元素用逗号或空格相隔,行与行之间用分号相隔
martix=[1 1 1 1;2,2,2,2;3,3,3,3;4 4 4 4]
冒号用法:
A=[1 1 1;1 2 3;1 3 6]
B=A(1:2,:)
(2)文件导入:
*.mat
*.txt
*.dat
load 文件名 参数
直接导入:File—Import Data
2、矩阵的基本数值运算
(1)、矩阵与是常数的四则运算(除法时,常数只能作为除数)
matrix=[1 1 1 1;2,2,2,2;3,3,3,3;4 4 4 4]
m1=100+matrix
m2=100-matrix
m3=100*matrix
m4=matrix/2
(2)、矩阵之间的四则运算
加减法:矩阵各个元素之间的加减法,必须是同型矩阵
matrix=[1 1 1 1;2,2,2,2;3,3,3,3;4 4 4 4]
m1=20*matrix
m2=m1+matrix
m3=[11 22 33;1 2 3;4 5 6]
m4=matrix-m1
m5=m3+m1 %报错,非同型矩阵
乘法:用*,左矩阵的列数需等于右矩阵的行数
A=[1 1 1 1;2 2 2 2;3 3 3 3;4 4 4 4]
B=[1 5 9 2;6 3 5 7;2 5 8 9;4 5 6 3]
C=A*B
D=[1 5 9;6 3 5;2 5 8]
E=A*D % 报错,4*4矩阵不能与3*3矩阵相乘
除法:
左除\(AX=B则X=A\B,相当于X=inv(A)*B,但是左除稳定性好)
右除/(XA=B则X=B/A,相当于X=B*inv(A))
个人认为:左除相当于逆矩阵左乘,右除相当于逆矩阵右乘
%解方程组XA=B的解,本列中A=[2 1 -1; 2 1 0;1 -1 1] ;B=[1 -1 3;4 3 2]
A=[2 1 -1; 2 1 0;1 -1 1]
B=[1 -1 3;4 3 2]
X=B/A
矩阵可以使用比较运算符:结果矩阵的对应位置为0或1
数据变换:
floor
ceil
round
fix
rem
[n,d]=rat(A):A表示为两个整数阵对应元素相除的形式A=n./d
3、矩阵的特征参数运算
(1)、乘方与开方
乘方:A^p计算A的p次方
p>0:A的p次方
p<0:A逆矩阵的abs(p)次方
A=[1 2 3 4;4 5 6 7;4 5 6 7;8 9 10 11]
B=A^10
开方:若有X*X=A,则有sqrtm(A)=X
A=magic(5)
B=sqrtm(A)
B^2 %验证正确性
(2)、指数与对数
指数:expm(X)=V*diag(exp(diag(D)))/V([V,D]=eig(X))
对数:L=logm(A),与指数运算互逆
X=rand(4)
Y=expm(X)
A=randn(4)
B=logm(A)
(3)、逆运算
inv函数,充要条件:矩阵的行列式不为0
A=[1 0 0 0;1 2 0 0;2 1 3 0;1 2 1 4]
B=inv(A)
广义逆矩阵(伪逆):
pinv(A)
非奇异矩阵的pinv与inv相同
(4)、行列式
det函数
A=[1 0 0 0;1 2 0 0;2 1 3 0;1 2 1 4]
B=inv(A)
x=det(A)
y=det(B)
i=x*y
(5)、特征值
E=eig(X):生成由X的特征值组成的列向量
[V,D]=eig(X):V是以X的特征向量为列向量的矩阵,D是由矩阵X的特征值构成的对角阵
D=eigs(X):生成由X的特征值组成的列向量(eigs函数使用迭代法求解矩阵的特征值和特征向量,X必须是方阵,最好是大型稀疏矩阵)
[V,D]=eig(X):V是以X的特征向量为列向量的矩阵,D是由矩阵X的特征值构成的对角阵
X=magic(3)
A=[1 0 0;0 0 3;0 9 0]
E=eig(X)
[V D]=eig(X)
D=eigs(A)
[V D]=eigs(A)
(6)、矩阵(向量)的范数
norm(X):2-范数
norm(X,2):2-范数
norm(X,1):1-范数
norm(X,inf):无穷范数
norm(X,’fro’):Frobenius范数
normest(X):只能计算2-范数,并且是2-范数的估计值,用于计算norm(X)比较费时的情况
X=hilb(4)
令数组全部的值为0norm(4)
norm(X)
norm(X,2)
norm(X,1)
norm(X,inf)
norm(X,'fro')
normest(X)
(7)、矩阵的条件数运算
矩阵的条件数是判断矩阵“病态”成都的一个度量,矩阵A的条件数越大,表明A越病态,反之,表明A越良态,Hilbert矩阵就是有名的病态矩阵
cond(X):返回关于矩阵X的2-范数的条件数
cond(X,P):关于矩阵X的P-范数的条件数(P为1、2、inf或’fro’)
rcond(X):计算矩阵条件数的倒数值,该值越接近0就越病态,越接近1就越良态
condest(X):计算关于矩阵X的1-范数的条件数的估计值
M=magic(3);
H=hilb(4);
c1=cond(M)
c2=cond(M,1)
c3=rcond(M)
c4=condest(M)
h1=cond(H)
h2=cond(H,inf)
h3=rcond(H)
h4=condest(H)
由以上结果可以看出,魔术矩阵比较良态,Hilbert矩阵是病态的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论