两个矩阵同时相似对角化matlab程序

两个矩阵同时相似对角化matlab程序

ID:33906813

大小:66.89 KB

页数:5页

时间:2019-03-01

两个矩阵同时相似对角化matlab程序_第1页
两个矩阵同时相似对角化matlab程序_第2页
两个矩阵同时相似对角化matlab程序_第3页
两个矩阵同时相似对角化matlab程序_第4页
两个矩阵同时相似对角化matlab程序_第5页
资源描述:

《两个矩阵同时相似对角化matlab程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、两个矩阵同时相似对角化MATLAB程序摘要:使用Matlab语言设计出实现两个复矩阵同时相似对角化的计算机程序。关键词:同时相似对角化;Matlab;程序矩阵对角化是重要的数学方法,但因其计算过程繁琐,人们往往望之生畏,尤其是多个矩阵同时对角化问题,因此本文设计出判断及计算两个复矩阵能否同时相似对角化的Matlab程序,用此能够方便地解决两个复矩阵同时相似对角化问题。1.理论基础定义[1]:设A、B是数域F上两个n阶矩阵,若存在f上的n阶可逆矩阵t,使得T-1AT与T-1BT同时为对角矩阵,则称A、B可同时相似对角化.定

2、理[1]:设A、B都是复数域C上的n阶矩阵,若AB=BA且A、B都可对角化,则存在可逆的T,使得T-1AT、T-1BT同时为对角形.证:因为A可对角化,所以存在可逆的P,使得其中❷",•••,❷d互不相同且nl+...+ns=n.又AB=BA(P-1AP)(P-1BP)=(P-1BP)(P-1AP),所以是准对角矩阵.其中Bi是ni阶方阵(i=l,2,…,s).但因为B可对角化,所以它的初等因子都是一次的,于是Bi的初等因子都是一次的,所以存在ni阶可逆方阵Qi,使得Qi-lBiQi(i=l,2,…,s)为对角形,于是令

3、Q=diag[Ql,...,Qs],则必有是对角形•于是令T二PQ,则T可逆,并且同时都是对角形.2.算法设计定理给出了判定两个矩阵能否同时相似对角化的条件,定理的证明给出了两个矩阵同时相似对角化的方法,据此设计算法如下:Stepl.依次判定是否AB=BA、B是否可以相似对角化、A是否可以相似对角化,若均是则转,否则输出A与B不能同时相似对角化(在MATLAB中可使用命令”[P,D]二eig(A)"求出一个矩阵P及对角矩阵D,再计算P的行列式的值即可断定A能否相似对角化)。Step2.确定A的特征根的个数s及每个特征根的

4、重数ni,并将D改写为D=diag[❷dlni,...,❷dsns](❷dl,...,❷ds是A的互不相同的特征根,ni是❷di的重数),且对P的列按照D中❷di的次序进行排列;Step3.计算P-lBP=diag[Bl,Bs],且求变换矩阵Qi,使Qi-lBiQi(i=l,,s)为对角形;Step4.令Q=diag[Ql,...,Qs],T=PQ,则TTAT、T-1BT同为对角形。算法的关键步骤是计算P-1BP二diag[Bl,,Bs],而其中的P必须由以下形式的D来确定:(D=diag[❷dlni,...,❷dsns

5、](❷dl,...,❷ds是A的互不相同的特征根,ni是❷di的重数,nl+...+ns=n),而P的第i列❷gi与D的对角线上的第i个元素❷di相对应,即❷gi是A属于❷di的特征向量。然而MATLAB的相似对角化命令[P,D]=eig(A)所求出的P与D未必满足要求,所以必须将MATLAB所求出的P与D变形为我们所需要的P与D,为此就应该对MATLAB所求出的D的对角线上的元素重新排列、同时对P的列也做相应的排列,具体方法是:扫描的对角线上的元素,每次扫描确定一个特征根的重数,并将该次扫描所得到的相同的特征根集中排列

6、在一起,并对P的列做同步排列,同时对扫描处理过的元素做出特定的标记,通过若干次扫描而求得A的特征根个数s与每个特征根❷di的重数ni,并得到所需要的P与D。据此思想设计算法如下:whilekfprintf('请输入矩阵的阶数:');n=input('n=');fprintf(?请输入矩阵A.');A=input('A=>');fprintf('请输入矩阵B.');B=input('B=>')ifA*B〜二B*Afprintf('矩阵A与B不能同时相似对角化,);end[P,D]=eig(B);ifdet(P)二二

7、0;fprintf('矩阵A与B不能同时相似对角化,);end[P,D]=eig(A);ifdet(P)=0;fprintf(,矩阵A与B不能同时相似对角化,);endk=0;%{记录统计次数%}s=0;%{记录特征根个数%}b二1/100000000;%{记号%}ni=linspace(0,0,n);%{定义存储代数重数数组%}E=eye(n);%{生成n阶单位阵%}whileklPij=E;Pij(:,m+1)=E(:,j);Pij(:,j)=E(:,m+1);p二p*Pij;d(j,j)二D(m+1,m+1);D(

8、m+1,m+1)=b;m=m+1;endendendendendend代码保存为".m”文件,如"tsdjh.m”,将tsdjh.m保存在MATLAB的”word”目录下,或者保存在自己的目录下且设置路径,那么在MATLAB的命令窗口中输入:tsdjh,回车,即可。方法二:直接将以上程序代码复制到MATLAB的命令窗

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。