1.点乘,点除,点乘方
点乘(对应元素相乘),必须同维或者其中一个是标量,a.*b
点除,a.\b表示矩阵b的每个元素除以a中对应元素或者除以常数a,a./b表示常数a除以矩阵b中每个元素或者矩阵a除以矩阵b对应元素或者常数b
点乘方a.^b,矩阵a中每个元素按b中对应元素乘方或者b是常数
2.矩阵中元素的操作
矩阵a中第r行,a(r,:),
第r列,a(:,r),
依次提取每一列组成一个列向量a(:),
提取子矩阵第i到j行和第k到t列a(i:j,k:t)
可以通过下标引用,但是元素下标从1开始, 也可通过序号引用,但是按列存储,也就是说对于3*3的矩阵a,a(4)是a(1,2)不是a(2,1)
3.求极限
syms x;
f表达式
limit(f,0)//表示x趋于0时的极限
4.因式分解
syms x
factor(表达式)
5.求积分
syms x
y = x^2 + 2
int(y,3,4)//在区间3到4求积分
5 . 求n阶导数
diff(函数表达式,阶数n)//注意并不是在x = n时的一阶导数值
6.解一元方程
syms x
y = X^3 - 1//y必须是个式子,也就是说x必须是符号变量不可是具体的数,否则一直空解
solve(y)
7.whos用于显示驻留在工作区内的变量的详细信息,采用clear 变量名把该变量清理出内存
8.linspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素,n是元素总数。 显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。
9.size(矩阵名),输出行数和列数,比如产生和矩阵a同维的全一阵,ones(size(a))
10.常用的产生通用特殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones:产生全1矩阵(幺矩阵)。 eye:产生单位矩阵。 rand:产生0~1间均匀分布的随机矩阵。 randn:产生均值为0,方差为1的标准正态分布随机矩阵。
一.常用特殊阵
建立随机矩阵:
(1) 在区间[20,50]内均匀分布的5阶随机矩阵。
(2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。
命令如下: x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
此外,常用的函数还有reshape(A,m,n),它在矩阵总元素个数保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。
例如,行向量:
a = [1 2 3 4 5 6]
执行下面语句把它变成3行2列:
b = reshape(a,3,2)
执行结果:
b =
1 4
2 5
3 6
在使用reshape时一定要注意的是变换前后矩阵的总元素个数和值不变。
二.用于专门学科的特殊矩阵
(1) 魔方矩阵
魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。
对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。
将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。
M=100+magic(5)
可知:n阶普通魔方阵的常数值是n(n^2+1)/2(1加到n^2再除以n)。
(2) 范得蒙矩阵
范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列(即从第三列开始)是其后列与倒数第二列的点乘积即倒数第二列的次方。
可以用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的范得蒙矩阵。
例如,A=vander([1;2;3;5])即可得到上述范得蒙矩阵。
(3) 希尔伯特矩阵
Hilbert matrix,矩阵的一种,其元素为1/(i+j-1),ij分别为其行标和列标。
即:
[1,1/2,1/3,……,1/n]
|1/2,1/3,1/4,……,1/(n+1)|
|1/3,1/4,1/5,……,1/(n+2)|
……
[1/n,1/(n+1),1/(n+2),……,1/(2n-1)]
希尔伯特矩阵是一种数学变换矩阵,正定,且高度病态(即,任何一个元素发生一点变动,整个矩阵的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。
在MATLAB中,生成希尔伯特矩阵的函数是hilb(n)。 使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果。MATLAB中,有一个专门求希尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。
因为希尔伯特矩阵已经规定好了,因此hilb和invhilb只有一个参数即阶数。
format rat %以有理形式输出,即循环小数表示成分数
(4) 托普利兹矩阵
托普利兹(Toeplitz)矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。即主对角线上的元素相等,平行于主对角线的线上的元素也相等。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x, y均为向量,两者不必等长。toeplitz(x)用向量x生成一个对称的托普利兹矩阵。例如 T=toeplitz(1:6).
(5) 伴随矩阵
MATLAB生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。
例如,为了求多项式的x3-7x+6的伴随矩阵,可使用命令: p=[1,0,-7,6];
compan(p)
看了好多的书,都把compan()函数翻译成求伴随矩阵或友矩阵,可是你用它的时候你会
发现,compan()函数的输入只能是一个向量(vector),而不能是一个矩阵(matrix),
所以我觉得它不能称为真正的求伴随矩阵的函数。不过,我们可以利用高等数学上的伴随
矩阵和逆矩阵的关系来求逆矩阵,像这样:
1 function J=companymatrix(A)
2 if det(A)~=0%det是求行列式的值
3 J=inv(A)*det(A);
4 else
5 fprintf('|A|=0\n');
6 J=pinv(A)*det(A);
7 end
(6) 帕斯卡矩阵
我们知道,二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。
由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。
函数pascal(n)生成一个n阶帕斯卡矩阵。
求(x+y)5的展开式。
在MATLAB命令窗口,输入命令: pascal(6)
矩阵次对角线上的元素1,5,10,10,5,1即为展开式的系数。
11.矩阵分析
11.1 对角阵 只有对角线上有非0元素的矩阵称为对角矩阵,对角线上的元素相等的对角矩阵称为数量矩阵,对角线上的元素都为1的对角矩阵称为单位矩阵。
diag(a),提取矩阵a的对角线元素组成列向量。
先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以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:5);
D*A %用D左乘A,对A的每行乘以一个指定常数
11.2三角阵
triu及tril
11.3矩阵转置
a'共轭转置,a.'为普通矩阵转置(并不是顺时针旋转90),rot90(a)表示逆时针旋转90