在MATLAB中常用线性代数命令字符以及调用格式
==本文基于MATLAB2012a版本==
主要包括多项式、行列式、矩阵的生成、取块和基本运算以及求解线性方程组、特征值和特诊多项式
多项式
多项式表达式与根
poly2sym(p) %返回由多项式系数转换为多项式函数p(x)表达式
polyval(p,2) %返回多项式函数p(x)当x=a时的值
roots(p) %返回多项式函数p(x)的所有复数根
poly(r) %返回由根组成的向量r创建的多项式函数篇p(x)的系数
多项式四则运算
conv(p1,p2) %返回多项式函数p1(x)和p2(x)的乘积
[q,r]=deconv(p1,p2) %返回多项式函数p1(x)和p2(x)的商式q(x)和余式r(x)
MATLAB中多项式加减运算与乘除法不同:
在MATLAB中多项式用行矩阵表示,多项式相加就是对应的行矩阵相加。
为了解决**多项式次数可能不同**而得到**不同型的行矩阵**从而导致无法相加的问题
解决方法:
将对应的行矩阵化为同型矩阵,
实例:
clear
p1=[1 0 -2 1];
p2=[-1 0 1 0 -2 3];
m=length(p1);n=length(p2);
t=max(m,n);
p1=[zeros(1,t-m),p1]
p2=[zeros(1,t-n),p2]
p=p1+p2
多项式的分解与合并
>符号运算
syms x
collect(f) %对符号多项式f进行合并同类项
expand(f) %对符号多项式f进行展开
horner(f) %对符号多项式f进行嵌套分解
factor(f) %对符号多项式f进行因式分解
有理分式的分解与合并
[a,b,r]=residue(p,q) %返回将p(x)/q(x)分解为最简分数之和
[p,q]=residue(a,b,r) %返回将简单分式之和合并为有理分式,a表示分子,b表示和a对应分式的分母的根,r表示整式
MATLAB中``[ ]``表示为空,当返回结果为``r=[ ]``表示为无整数部分
行列式
det(A) %计算A的行列式值,A为数值或符号方阵
示例:
D=[2 -3 -1 2;1 -5 3 -4;0 2 1 -1;-5 1 3 -3];
det(D)
注意点:一行行读,横着写,每一行以分号隔开
衍生运用:
克莱默法则求解线性方程组
矩阵
矩阵
矩阵的生成
| 函数 | 功能 |
| zeros(m,n)函数 | 生成m行n列全部元素为0的矩阵 |
| ones(m,n)函数 | 生成m行n列全部元素为1的矩阵 |
| rand(m,n)函数 | 生成m行n列全部在0到1的均匀分布随即元素的矩阵 |
| randn(m,n)函数 | 生成m行n列全部为标准正态分布随机元素的矩阵 |
| magic(n)函数 | 生成n阶幻方方阵(魔阵),即每行每列和对角线上元素之和相等 |
| diag(M)函数 | 从矩阵**M**对角线元素生成一列数据或将一列数组**M**生成一个对角阵|
| triu(M)函数 | 取矩阵**M**的对应元素生成上三角矩阵 |
| tril(M)函数 | 取矩阵**M**的对应元素生成下三角矩阵 |
| length(M)函数 | 返回向量**M**的长度|
| size(M)函数 | 返回矩阵**M**的行数和列数|
| eye(n)函数 | 生成n阶单位阵 |
| hilb(n)函数 | 生成n阶希尔伯特(Hibert)病态矩阵|
| pascal(n) | 生成n阶的帕斯卡(Pascal)矩阵|
矩阵的取块和变换
A(,:) %提取矩阵A的第i行
A(:,j) %提取矩阵A的第j行
A(:) %将矩阵A的各列元素依次排成一行向量
A(i:j) %将矩阵A(;)的第i个到第j个的元素依次排成一行向量
A(i:j,:) %提取矩阵A的第i行到第j行的所有元素所成的矩阵
A(:,i:j) %提取矩阵A的第i列到第j列的所有元素所成的矩阵
A(i:j,k:l) %提取矩阵A的第i行到第j行以及第k列到第l列的所有元素所成的子阵
B=reshape(A,m,n) %将矩阵中A的元素依次序组成一个m行n列的矩阵B
B=rot90(A) %将矩阵A逆时针旋转90°得到新矩阵B
B=fliplr(A) %将矩阵A中的元素左右对称得到新矩阵B
B=flipud(A) %将矩阵A中的元素上下对称得到新矩阵B
flipdim(A,1)=flipud(A) flipdim(A,2)=fliplr(A)
A(2,:)=[ ] %将矩阵A的第2行删除
A(A>5)=1 %将矩阵中的所有大于6的元素赋值为1
矩阵的基本运算
| 命令 | 注释 |
| A±B | 矩阵A加减矩阵B |
| A+k | 矩阵A的所有元素加上数k |
| `A*B` | 矩阵A的乘以矩阵B |
| `k*A,A*k` | 矩阵A的所有元素乘以数k |
| `A.*B` | 将矩阵的各个元素对应和矩阵B中的元素相乘 |
| `A./B` | 将矩阵的各个元素对应和矩阵B中的元素相除 |
| `A/B` | 右除 |
| `A\B` | 左除 |
| `A.'` | 得到矩阵A的转置 |
| `A'` | 得到矩阵A的共轭转置,在实数域内就是转置 |
| `inv(A)或A^(-1)` | 得到矩阵A的逆矩阵,A应该为可逆阵 |
| `A^k` | 矩阵A的k次幂 |
| `sqrtm(A)或A^(1/2)` | 矩阵A的开方,其平方为A |
| `sqrt(A)` | 矩阵A的对应元素开方 |
求解线性方程组
rank(A) %得到矩阵A的秩
rref(A) %得到矩阵A的行最简形
bull(A) %得到系数矩阵为A的齐次方程组基础解系
null(A,`r`) %得到系数矩阵为A的齐次方程组有理数形式的基础解系
当原方程组(即AX=b)无解的时候,由于实际应用中需要求出最小二乘解(使得向量AX=b的长度达到最小的解)
在此情况下,通过输入`X=A\b`得到该方程组的最小二乘解
特征值和特征多项式
trace(A) %得到矩阵A的迹
ploy(A) %得到矩阵A的特征多项式系数
[a,b]=eig(A) %得到矩阵A的特征列向量矩阵a和对应特征值组成额度对角阵b
B=orth(A) %正交化空间,即矩阵B的列向量正交且生成的线性空间与矩阵A的列向量生成的线性空间等价