基本命令:
A的转置——A’
A的行列式——det(A)
矩阵A的秩——rank(A)
A的逆矩阵——inv(A)
A的n次幂——A^n
矩阵A和B里的元素相乘——A .* B
选择A的第i行生成一个行向量——ai=A(i,:)
选择A的第j列生成一个列向量——aj=A(:,j)
生成n阶零矩阵——zeros(n)
生成n阶单位矩阵——eye(n)
两个向量的内积——a1 * a2’
其他命令:
存储工作空间变量——save 文件名 变量名
查询函数的用法——help 函数名
列出所有变量的详细资料——whos
演示程序demo——demo
特殊矩阵:
全一矩阵——y = ones(n) y = ones(m,n)
均匀分布随机矩阵——y = rand(n) y =rand(m,n)
正态分布随机矩阵——y = randn(n) y = randn(m,n)
线性等分向量——y = linspace(a,b) 默认100等分 %n等分: y = linspace(a,b,n)
对数等分向量——y =logspace(a,b) 默认50等分 %n等分:y = logspace(a,b,n)
矩阵A中元素的个数——n = numel(A) 以输入元素为对角线元素的矩阵——out = blkdiag(a,b,c…)
n阶Hadamard矩阵——H =hadamard(n) Hankel矩阵——H = hankel© 第一列元素为c,反三角以下元素为0
n阶Hilbert矩阵——H = hilb(n) H(i,j) = 1/(i+j-1)
n阶逆Hilbert矩阵——H = invhilb(n)
n阶魔方矩阵——M = magic(n)
向量的范数——n = norm(X) 具体help查询
矩阵的范数——n = norm(A) 具体help查询
其他运算:
矩阵A的特征值——D = eig(A)
特征向量矩阵X和特征值组成的对角阵D——[X,D] = eig(A)
将非奇异矩阵A正交化为Q——Q = orth(A) (Q’ * Q = 单位矩阵)
由已定义的矩阵A,E,O,A作为矩阵的子块,生成矩阵B——B = [A,E;O,A]矩阵A的列向量组的极大线性无关组——rref(A)
数——c = cond(A) 默认为2条件数
p条件数:c = cond(A,p)
[
数学定义为矩阵A的条件数等于A的范数与A的逆的范数的乘积,即cond(A) = ‖ A ‖·‖ A逆
]LU = A——[L,U] = lu(A)
LU = PA——[L,U,P] = lu(A)
[
U为上三角阵,L为下三角阵或其变换形式,P为单位矩阵的行变换矩阵
]
例子
①解方程组
clear
format rat %format函数控制输出格式 format rat是小数去用分数输出表示
A=[5,0,4,2;1,-1,2,1;4,1,2,0;1,1,1,1];
B=[3;1;1;0];
S=length(A(:,1))
R=rank(A)
if S==R
X=A\B
else
fprintf('error\n')
end
②解线性方程组
clear
A=[1,-2,3,1,1;1,1,-1,-1,-2;2,-1,1,0,-2;2,2,5,-1,1];
b=[7;2;7;18];
B=[A,b];
n=length(A(1,:))
RA=rank(A)
RB=rank(B)
if RA==RB
if RA==n
X=A\b
else
D=rref(B)
end
else
fprintf('No Solution for the Equations')
end
③解齐次线性方程组
clear
A=[1,1,1,4,-3;2,1,3,5,-5;1,-1,3,-2,-1;3,1,5,6,-7];
R=rank(A)
%X=rref(A)
%仅仅用rref的话,本题的秩=2<5,方程有非零解,需要自己再去做
%因此不必用rref,MATLAB提供了一个求矩阵令空间的函数null来方便求解
Y=null(A,'r')在这里插入代码片
④求非齐次线性方程组的通解
clear
A=[1,5,-1,-1;1,-2,1,3;3,8,-1,1;1,-9,3,7];
b=[-1;3;1;7];
B=[A,b];
RA=rank(A)
RB=rank(B)
Y=null(A,'r')
n=length(b)
if RA==RB
if RA==n
X=A\B %方程组满秩时,求出唯一解
else
p=pinv(A)*b %在方程组不满秩时,求出特解
Y=null(A,'r') %求出方程组的基础解系
n1=length(Y(1,:))
k=sym(['kI']) %这里是ki,是为了把数组k说明成字符型变量
for i=1:n1 %求出方程的全部解
k(i)=strcat('k',num2str(i))
p=p+k(i)*Y(:,i)
end
end
else
fprintf('No Solution for the Equations')
end