符号矩阵.docx

上传人:b****4 文档编号:4473772 上传时间:2022-12-01 格式:DOCX 页数:9 大小:19.68KB
下载 相关 举报
符号矩阵.docx_第1页
第1页 / 共9页
符号矩阵.docx_第2页
第2页 / 共9页
符号矩阵.docx_第3页
第3页 / 共9页
符号矩阵.docx_第4页
第4页 / 共9页
符号矩阵.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

符号矩阵.docx

《符号矩阵.docx》由会员分享,可在线阅读,更多相关《符号矩阵.docx(9页珍藏版)》请在冰豆网上搜索。

符号矩阵.docx

符号矩阵

符号矩阵

符号矩阵和向量是数组,其元素为符号表达式,可用函数sym来产生。

>>A=sym('[a,b,c;b,c,a;c,a,b]')

A=

[a,b,c]

[b,c,a]

[c,a,b]

>>G=sym('[cos(t),sin(t);-sin(t),cos(t)]')

G=

[cos(t),sin(t)]

[-sin(t),cos(t)]

函数sym也可以扩展成定义各元素的公式。

注意,只有在这种情况下,i,j分别表示行列的位置;且不影响i,j的缺省值(它代表

)。

下面的例子建立了3×3的矩阵,其元素依赖于行和列的位置。

>>S=sym(3,3,'(i+j)+(i-j+s)')%createamatrixusingaformula

S=

[2/s,3/(-1+s),4/(-2+s)]

[1/(1+s),4/s,s/(-1+s)]

[4/(2+s),5/(1+s),6/s]

>>S=sym(3,3,'m','n','(m-n)/(m-n-t)')%usemandninanotherformula

S=

[0,-1/(-1-t),-2/(-2-t)]

[1/(1-t),0,-1/(-1-t)]

[2/(2-t),1/(1-t),0]

函数sym也可以把数值矩阵转换成符号形式

>>M=[1.1,1.2,1.3;2.1,2.2,2.3;3.1,3.2,3.3]%anumericmatrix

M=

1.10001.20001.3000

2.10002.20002.3000

3.10003.20003.3000

>>S=sym(M)%converttosymbolicform

S=

[11/10,6/5,13/10]

[21/10,11/5,23/10]

[31/10,16/5,33/10]

如果数值矩阵的元素可以指定为小的整数之比,则函数sym将采用有理分式表示。

如果元素是无理数,则在符号形式中sym将用符号浮点数表示元素。

>>E=[exp

(1)sqrt

(2)]

E=

2.71831.4142

>>sym(E)

ans=

[3060513257434036*2^(-50),3184525836262886*2^(-51)]

用函数symsize可以得到符号矩阵的大小(行,列数)。

函数返回数值或向量,而不是符号表达式。

symsize的四种形式说明如下:

>>S=sym('[a,b,c;d,e,f]')%createasymbolicmatrix

S=

[a,b,c]

[d,e,f]

>>d=symsize(S)%returnthesizeofSasthe2-elementvectord

d=

23

>>[m,n]=symsize(S)%returnthenumberofrowsinm,andcolumninn

m=

2

n=

3

>>m=symsize(S,1)%returnthenumberofrows

m=

2

>>n=symsize(S,2)%returnthenumberofcolumns

n=

3

数值数组用N(m,n)形式来访问单个元素,但符号数组元素必须用函数如sym(S,m,n)来获取。

若能用相同的句法当然好,但MATLAB符号表达式的表示不方便。

在内部,符号数组表示成一个字符串数组;而S(m,n)返回单个字母。

所以,符号数组的各个元素,必须由符号函数,如sym,来指定,而不是直接指定。

>>G=sym('[ab,cd;ef,gh]')%createa2-by-2symbolicmatrix

G=

[ab,cd]

[ef,gh]

>>G(1,2)%thisisthesecondcharacterofthefirstrowofG

ans=

a

>>r=sym(G,1,2)%thisisthesecondexpressinoninthefirstrowofG

r=

cd

记住,在上例中的符号矩阵G,实际是以2×7字符数组存储在计算机中。

第一行为'[ab,cd]',所以第二个元素是'a'。

最后,sym可以用于改变符号数组的一个元素。

>>sym(G,2,2,'pq')%changethe(2,2)elementinGfrom'gh'to'pq'

ans=

[ab,cd]

[ef,pq]

代数运算

用函数symadd,symsub,symmul和symdiv,对符号矩阵可以执行许多通用的代数运算,用sympow可计算乘幂,用transpose计算符号矩阵的转置。

>>G=sym('[cos(t),sin(t0;-sin(t0,cos(t)]')%createasymbolicmatrix

G=

[cos(t),sin(t)]

[-sin(t),cos(t)]

>>symadd(G,'t')%add't'toeachelement

ans=

[cos(t)+t,sin(t)+t]

[-sin(t)+t,cos(t)+t]

>>symmul(G,G)%multiplyGbyG;Synpow(G,2)doesthesamething

ans=

[cos(t)^2-sint(t)^2,2*cos(t)*sin(t)]

[-2*cos(t)*sin(t),cos(t)^2-sin(t)^2]

>>simple(G)%trytosimplify

ans=

[cos(2*t),sin(2*t)]

[-sin(2*t),cos(2*t)]

下面通过证明G的转置是它的逆来证明G是正交阵。

>>I=symmul(G,transpose(G))%multiplyGbyitstranspose

I=

[cos(t)^2+sin(t)^2,0]

[0,cos(t)^2+sin(t)^2]

>>simplify(I)%thereappearstobeatrigidentityhere

ans=

[1,0]

[0,1]

正如所期望的那样,这是单位阵。

线性代数运算

用函数inverse和determ,可计算符号矩阵的逆阵以及行列式。

>>H=sym(hilb(3))%thesymbolicformofthenumeric3-by-3Hilbertmatrix

H=

[1,1/2,1/3]

[1/2,1/3,1/4]

[1/3,1/4,1/5]

>>determ(H)%dindthedeterminantofH

ans=

1/2160

>>J=inverse(H)%findtheinverseofH

J=

[9,-36,30]

[-36,192,-180]

[30,-180,180]

>>determ(J)%findthedeterminantoftheinverse

ans=

2160

用函数linsolve求解齐次线性方程;这是等价于基本的MATLAB的逆斜杠\算子的符号,linsolve(A,B)对X方阵求解矩阵方程A*X=B。

回到以前的硬币问题:

黛安娜想去看电影,她从小猪存钱罐倒出硬币并清点,她发现:

10美分的硬币数加上5美分的硬币总数的一半等于25美分的硬币数。

1美分的硬币数比5美分、10美分以及25美分的硬币总数多10。

25美分和10美分的硬币总数等于1美分的硬币数加上1/4的5美分的硬币数

25美分的硬币数和1美分的硬币数比5美分的硬币数加上8倍的10美分的硬币数多1。

象上次所做的那样,列出线性方程组,令p,n,d和q分别为1美分,5美分,10美分,和25美分的硬币数

重新以p,n,d,q的顺序排列表达式

p/2+n/2+d-q=0p-n-d-q=-10-p-n/4+d+q=0

p-n-8d+q=1

接下来,列出方程系数的符号数组。

>>A=sym('[1/2,1/2,1,-1;1,-1,-1,-1;-1,-1/4,1,1;1,-1,-8,1]')

A=

[1/2,1/2,1,-1]

[1,-1,-1,-1]

[-1,-1/4,1,1]

[1,-1,-8,1]

>>B=sym('[0;-10;0;-1]')%CreatethesymbolicvectorB

B=

[0]

[-10]

[0]

[-1]

>>X=linsolve(A,B)%solvethesymbolicsystemA'X=Bforx

x=

[16]

[8]

[3]

[15]

结果是相同的,黛安娜有16枚1美分的硬币,8枚5美分的硬币,3枚10美分的硬币,15枚25美分的硬币。

其他特性

symop将其参量串接起来,并计算所得到的表达式。

>>f='cos(x)'%createanexpression

f=

cos(x)

>>symop('atan(',f,'+',a,')','^2')

ans=

atan(cos(x)+a)^2

在用函数symop时,若将数组和标量混合应慎重。

例如:

>>M=sym('[ab;cd]')

M=

[a,b]

[c,d]

>>symop(M,'+','t')

ans=

[a+t,b]

[c,d+t]

是把t加到M的对角线上。

函数charpoly求解矩阵的特征多项式。

>>G=sym('[1,1/2;1/3,1/4]')%createasymbolicmatrix

G=

[1,1/2]

[1/3,1/4]

>>charpoly(G)%findthecharacteristicpolynomialofG

ans=

x'2-5/4*x+1/12

用函数eigensys可以求得符号矩阵的特征根和特征向量

>>F=sym('[1/2,1/4;1/4,1/2]')%createasymbolicmatrix

F=

[1/2,1/4]

[1/4,1/2]

>>eigensys(F)%findtheeigenvaluesofF

ans=

[3/4]

[1/4]

>>[V,E]=eigensys(F)%findeigenvaluesEandeigenvectorsv

V=

[-1,1]

[1,1]

E=

[1/4]

[3/4]

矩阵的约当(Jordan)标准型是特征值的对角矩阵;转换矩阵的列是特征向量。

对于给定的矩阵A,jordan(A)求出非奇异的矩阵V,使得inv(V)*A*V成为约当标准型,函数jordan有两种形式

>>jordan(F)%findtheJordanformofF,above

ans=

[1/4,0]

[0,3/4]

>>[V,J]=jordan(F)%findtheJordanformandeigenvectors

V=

[1/2,1/2]

[-1/2,1/2]

J=

[1/4,0]

[0,3/4]

标准形和特征向V的列是某些F可能的特征向量。

因为F是非奇异的,F的零空间的基是空矩阵,而列空间的基是单位阵。

>>F=sym('[1/2,1/4;1/4,1/2]')%recreateF

F=

[1/2,1/4]

[1/4,1/2]

>>nullspace(F)%thenullspaceofFistheemptymatrix

ans=

[]

>>colspace(F)%findthecolumnspaceofF

ans=

[1,0]

[0,1]

 

用函数singvals可求解矩阵奇异值。

>>A=sym(magic(3))%Generatea3-by-3matrix

A=

[8,1,6]

[3,5,7]

[4,9,2]

>>singvals(A)%findthesingularexpressions

ans=

[15.00000000000000]

[6.928203230275511]

[3.464101615137752]

 

函数jacobian(w,v)可相对于v求解w的雅可比(Jacobia)值。

其结果的第(i,j)项是df(i)/dv(j)。

注意,当f是标量时,f的雅可比值是f的梯度。

>>jacobian('u*exp(v)',sym('u,v'))

ans=

[exp(v,u*exp(v)]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1