MATLAB矩阵分析及多项式运算
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A=
1 8 27 125 1 1 1 4 2 1 9 3 1 25 5 1
(8) Hilbert(希尔伯特矩阵)与逆Hilbert矩阵 Hilbert矩阵的元素为:
1 1 1 hi, j , n阶矩阵表示为: H 2 i j 1 1 n
1 1 n 2 1 1 3 n 1 1 1 n 1 2n 1
例: >>r =[1,2,3,4]
>>c=[5,6,7,8]
r=
1 2 3 4 >>T=toeplitz(r) T= 1 2 3 4
c=
5 6 7 8
T=toeplitz(c,r)
T= 5 2 3 4 6 5 2 3 7 6 5 2 8 7 6 5
2 1 2 3
3 2 1 2
4
3 2 1
(10) 伴随矩阵 MATLAB生成伴随矩阵的函数是compan(p),其中p 是一个多项式的系数向量,高次幂系数排在前,低 次幂排在后。 例如,求多项式的x3-7x+6的伴随矩阵,可使用命令: p=[1,0,-7,6]; compan(p) ans = 0 7 -6 1 0 0 0 1 0
(11) 帕斯卡矩阵 二次项(x+y)n展开后的系数随n的增大组成 一个三角形表,称为杨辉三角形。由杨辉 三角形表组成的矩阵称为帕斯卡(Pascal)矩 阵。 函数pascal(n)生成一个n阶帕斯卡矩阵。
例:求(x+y)5的展开式。 在MATLAB命令窗口,输入命令: >> pascal(6) ans = 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 ,10,10,5,1即为展开式的系数。
>>eye(2,3) ans= 1 0 0 0 1 0
(2)零矩阵 零矩阵的所有元素为0,其语法格式为: A=zeros(n);%返回一个n х n大小的零矩阵;
A=zeros(m,n);%返回一个m х n大小的零矩阵;
A=zeros(size(B));%返回一个大小与矩阵B相同的零矩阵。 例:>>A=zeros(3,4) A= 0 0 0 0 0 0 0 0 >> A=zeros(3) A= 0 0 0 0 0 0 0 0 0
(7) 范得蒙矩阵 矩阵元素最后一列全为1,倒数第二列为一 个指定的向量,其他各列是其后列与倒数 第二列的点乘积。 函数vander(V)生成以向量V为基础向量的 范得蒙矩阵。
范得蒙矩阵
>> A=vander([1;2;3;5])
>> p=[1 2 3 4 5] p= 1 2 3 4 5 >> A=vander(p) A= 1 1 1 1 1 16 8 4 2 1 81 27 9 3 1 256 64 16 4 1 625 125 25 5 1
(6) 魔方矩阵 对于n阶魔方阵,其元素由1,2,3,…,n2共n2个 整数组成。 魔方矩阵的每行、每列及两条对角线上的 元素和都相等,均等于n(n2+1)/2。 magic(n):其功能是生成一个n阶魔方阵。
例:将101~125等25个数填入一个5行5列的表格中,使其
每行每列及对角线的和均为565。
例: >>A=rand(3,4) A= 0.9501 0.4860 0.4565 0.4447 0.2311 0.8913 0.0185 0.6154 0.6068 0.7621 0.8214 0.7919
建立随机矩阵: (1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随 机矩阵。 命令如下: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5)
A=ones(n);%返回一个n х n大小的1矩阵; A=ones(m,n);%返回一个m х n大小的1矩阵; A=ones(size(B));%返回一个与矩阵B大小相同的1矩阵。 例:>>A=ones(3) A= 1 1 1 1 1 1 1 1 1
(4)随机矩阵 随机矩阵的元素是随机产生的。有两种函数: rand函数和randn函数。它们的用法相同。
>> 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]
A= 17 23 4 10 11 0 1 0 15 5 7 14 16 0 13 0 22 12 19 21 3 18 25 2 19
>> diag(A) ans = >> diag(A,3) ans =
(1)单位矩阵 单位矩阵的主对角线元素为1,其他元素为0,语法格式为:
– A=eye(n); %返回一个nхn大小的单位矩阵; – A=eye(m,n); %返回一个mхn大小的单位矩阵; – A=eye(size(B)); %返回一个大小与B一样的单位矩阵。
例: >>A=eye(4,3) A= 1 0 0 0 1 0 0 0 1 0 0 0
(x + y)5 = 1 x5 + 5 x4y + 10 x3y2 + 10 x2y3 + 5 x y4 + 1 y5
矩阵分析
1.对角阵 只有对角线上有非0元素的矩阵称为对角矩阵, 对角线上的元素相等的对角矩阵称为数量矩阵, 对角线上的元素都为1的对角矩阵称为单位矩阵。
23
对角阵
(1)提取矩阵的对角线元素 设A为mxn矩阵,diag(A)函数用于提取矩阵 A主对角线元素产生一个具有min(m,n)个元 素的列向量。 diag(A)函数还有进一步的形式diag(A,k), 其功能是提取第k条对角线的元素组成列向 量。
v= 1 2 3
0 0 0 0
4
例:diag( )函数的不同调用格式
>> C=[1 2 3]; V=diag(C) % 生成对角矩阵 V= 1 0 0 0 2 0 0 0 3 >> V1=diag(V)' % 将列向量通过转置变换成行向量 V1 = 1 2 3 >> C=[1 2 3]; V=diag(C,2) % 主对角线上第 k条对角线为C的矩阵 V= 0 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0
此外,常用的函数还有reshape(A,m,n),它 在矩阵总元素保持不变的前提下,将矩阵A 重新排成m×n的二维矩阵。
>> x=linspace(0,11,12)*pi; >> y=reshape(x,3,4) y= 0 9.4248 18.8496 28.2743 3.1416 12.5664 21.9911 31.4159 6.2832 15.7080 25.1327 34.5575
0 0 0 0
设A为2×3矩阵,则可以用zeros(size(A))建立一个 与矩阵A同样大小零矩阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A zeros(size(A)) %产生一个与矩阵A同样大小的零矩阵 ans = 0 0 0 0 0 0
(3)“1”矩阵
“1”矩阵的所有元素为1,其语法格式为:
0 0 0 0 0 0 0
ans = 0 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0
例: >>v=[ 1,2,3,4 ]
v=
>> A= [1 0 0 0
0 2 0 0
1 2 3 4
>>A=diag(v)
0 0 3 0
0 0 0 4]
A= 1
0
0 0 0
2 0 0 3 0 0 4
>>v=diag(A)
MATLAB中提供的Hilbert矩阵的函数调用方法有:
H=hilb(n);%产生一个n阶Hilbert 矩阵; B=invhilb(n);%产生一个n阶逆Hilbert矩阵,n小于5时 求其精确逆矩阵,大于5时求其近似逆矩阵。
例: 求4阶希尔伯特矩阵及其逆矩阵。命令如下: >> format rat %以有理形式输出 >> H=hilb(4) H= 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 1/4 1/5 1/6 1/7 >> H=invhilb(4) H= 16 -120 240 -140 -120 1200 -2700 1680 240 -2700 6480 -4200 -140 1680 -4200 2800
– rand函数:产生的矩阵元素服从(0,1)之间的均匀 分布; – randn函数:产生的矩阵元素服从均值为0,方差为1的 正态分布。
语法格式为:
– A=rand(n); %返回一个n х n大小的随机矩阵; – A=rand(m,n);%返回一个m х n大小的随机矩阵; – A=rand(size(B)); %返回一个与矩阵B大小相同的随机 矩阵。
>> V=[1 2 3 4 5]; >> diag(V)
ans = 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5
>> diag(V,2) ans =
>> diag(1:3,-1)
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 5 0 0
(9)Toeplitz(托普利兹)矩阵 托普利兹(Toeplitz)矩阵是由一行和一列来定义的矩阵,除第 一行第一列外,其他每个元素都与左上角的元素相同。 其语法格式为: T=toeplitz(r);%生成一个由向量r构成的对称toeplitz矩阵, 其第一行由r定义。 T=toeplitz(c,r);%生成一个非对称的Toeplitz矩阵,这里c, r 均为向量,两者不必等长。 c作为其第一列,r作为第一行, 如果c和r的第一个元素不同,则用列中元素。
MATLAB矩阵分析及多项式 运算
特殊矩阵
一些常用的产生特殊矩阵的函数:
– – – – 单位矩阵:eye(m,n); eye(m) 零矩阵:zeros(m,n); zeros(m) 一矩阵:ones(m,n); ones(m) rand(m,n):产生一个m×n 的0~1间均匀分布的 随机矩阵 – randn:产生均值为0,方差为1的标准正态分布 随机矩阵。
生成三对角矩阵:
>> V=diag([1 2 3 4])+diag([2 3 4],1)+diag([5 4 3],-1)
V= 1 5 0 0
2 2 4 0
0 3 3 3
0 0 4 4
例: 建立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的每行乘以一个指定常数 ans = 17 0 1 0 15 46 10 14 28 32 12 0 39 0 66 40 48 76 84 12
>> B=100+magic(5)
B= 117 123 104 110 111 124 105 106 112 118 101 107 113 119 125 108 114 120 121 102 115 116 122 103 109
>> sum(B(1,:)) ans = 565 >> sum(B(2,:)) ans = 565 >> sum(B(:,4)) ans = 565 >> B(1,1)+B(2,2)+B(3,3)+B(4,4)+B(5,5) ans = 565
17 5 13 21 19
0 16
>> A=[1,2,3;4,5,6] A= 1 2 3 4 5 6
>> D=diag(A) D= 1 5
(2)构造对角矩阵 设V为具有m个元素的向量,diag(V)将产生 一个mxm对角矩阵,其主对角线元素即为 向量V的元素。 diag(V,k)将产生一个nxn(n=m+|k|)对角矩阵, 其第k条对角线元素即为向量V的元素。