两个矩阵同时相似对角化MATLAB程序.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
两个矩阵同时相似对角化MATLAB程序 摘 要:使用Matlab语言设计出实现两个复矩阵同 时相似对角化的计算机程序。 关键词:同时相似对角化;Mat lab;程序 矩阵对角化是重要的数学方法,但因其计算过程繁琐, 人们往往望之生畏,尤其是多个矩阵同时对角化问题,因此 本文设计出判断及计算两个复矩阵能否同时相似对角化的 Mat lab程序,用此能够方便地解决两个复矩阵同时相似对角 化问题。 1.理论基础 定义[1]:设A、B是数域F上两个n阶矩阵,若存 在f上的n阶可逆矩阵t,使得T-1AT与T-1BT同时为对 角矩阵,则称A、B可同时相似对角化. 定理[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 )为对角形,于是令 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及每个特征根的重数 ni ,并将 D 改写为 D=d iag[?dlni,..., ?dsns](?dl,...,?ds是A的互不相同的特征根, ni是?di的重数),且对P的列按照D中?di的次序进 行排列; Step3.计算 P-lBP=diag[Bl, Bs],且求变换矩 阵 Qi ,使 Qi-lBi Qi (i=l, , s)为对角形; Step4.令 Q=diag[Ql, . . . , Qs] , T=PQ,则 TTAT、 T-1BT同为对角形。 算法的关键步骤是计算P-1BP二diag[Bl, , Bs],而 其中的P必须由以下形式的D来确定: (D=d iag[?dlni,...,?dsns](?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的列也做相应的排列,具体方法是:扫 描的对角线上的元素,每次扫描确定一个特征根的重数, 并将该次扫描所得到的相同的特征根集中排列在一起,并对 P的列做同步排列,同时对扫描处理过的元素做出特定的标 记,通过若干次扫描而求得A的特征根个数s与每个特征 根?di的重数ni ,并得到所需要的P与D。据此思想设 计算法如下: while k fprintf (请输入矩阵的阶数:); n=input ( n=); fprintf (?请输入矩阵 A. \n ); A=input( A= ); fprintf (请输入矩阵 B. \n ); B=input ( B= ) if A*B?二B*A fprintf (矩阵A与B不能同时相似对 角化,);end [P, D]=eig (B); [P, D]=eig (B); if det (P)二二0; fprintf (矩 阵A 阵A与B不能同时相似对角化, );end [P, D]=eig (A); [P, D]=eig (A); if det (P) =0; fprintf (,矩 阵A 阵A与B不能同时相似对角化, );end k=0; k=0; %{记录统计次数%} s=0; % {记录特征根个数%} b 二 1/100000000; %{记号 %} ni=linspace (0, 0, ni=linspace (0, 0, n); %{定义存储代数重数数组%} E=eye (n); %{生成n阶单位阵%}

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档