如何用Mathematica求解相合转换矩阵精要.docxVIP

如何用Mathematica求解相合转换矩阵精要.docx

  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文档。上传文档
查看更多
如何用Mathematica求解相合转换矩阵精要

如何用Mathematica求解相合转换矩阵 Mathematica介绍 1 Mathematica是一款功能强大的数学软件,在各个学科中均有广泛应用。如果你对此感兴趣,可以参考维基百科或百度对此的介绍。废话不多说,下面进入正题:如何用Mathematica求解相合转换矩阵? 相合矩阵的定义: 在数学上,所谓矩阵相合是指,在某一域上的矩阵A和B,如果存在一可逆矩阵(非奇矩阵)P使得PTAP=B,则称A与B矩阵相合。相合关系是一种等价关系,因为它满足自反性,对称性与传递性。 下面举一个例子说明在已知矩阵A,B的情况下如何求解转换矩阵P。 A=012210379 , B=41438-42在mathematica中操作如下: 1、首先定义已知矩阵A,B与未知矩阵P(注意加了;可以使结果不显示出来,一切都请使用英文标点),其中a11,a12,a13,a21,a22,a23,a31,a32,a32为未知数 2、然后开始解方程,请注意这里矩阵相乘用dot(.)然后Flatten是必须的。本质上讲,这里是把它换成线性方程组求解,这里是核心步骤!!!得到的解以集合的形式给出,如果无解你会得到{{}} 3.接下来就是把我们设的未知数带入到矩阵P中,带入的语法如下: 对,第二个解很麻烦,我们还需要对未知数赋值。 以上就介绍完了求相合转换矩阵的技巧。本质上讲,这是运用了Mathematica求解矩阵方程的技巧。上述代码还可以推广到求一个转化矩阵M使多个矩阵同时对角化。希望这篇文章对学习线性代数与群论还有其他学科的同学有帮助。再次感谢Mathematica! 本文章已获得作者Shanglong Ning的授权,转载请注明出处。 附1:(请逐段运行代码) (*Define Matrices*) A = {{0, 1, 2}, {2, 1, 0}, {3, 7, 9}}; B = {{4, 14, 38}, {-4, 2, -14}, {4, 60, 108}}; (*Define unknown Matrices*) P = {{a11, a12, a13}, {a21, a22, a23}, {a31, a32, a33}}; (*下面开始解方程*) s1 = Solve[Transpose[P].A.P == B, P // Flatten]; Length[s1] (*Length[s1]为解的个数*) (*我们选取第7个解s1[[7]]看一下*) Ans1 = P /. s1[[7]] Transpose[Ans1].A.Ans1 == B Ans2 = P /. s1[[2]] (*我们发现除了这组解比较复杂外,还有一个重要的地方不一样,它含有参数a31,\ 也就是说,a31取不同的值,就有可能得到不同的结果,下面我们随便赋一个值看看(当然得保证式子有意义)*) Ans22 = Ans2 /. a31 - 3(*请记住这个赋值语法,很有用,\[Rule]的输入方法为:短横线-再点击大于号*) FullSimplify[ Transpose[ Ans22].A.Ans22] == \ B(*(注意,这里验证的时候请加FullSimplify,因为里面太复杂了,如果不化简的话,Mathmatica是没法比较的哦)*) 附2:(纯文本) In[1]:= (*Define Matrices*) A={{0,1,2},{2,1,0},{3,7,9}}; B={{4,14,38},{-4,2,-14},{4,60,108}}; In[3]:= (*Define unknown Matrices*) P={{a11,a12,a13},{a21,a22,a23},{a31,a32,a33}}; (*下面开始解方程*) In[4]:= s1=Solve[Transpose[P].A.P==B,P//Flatten]; \:6B63\:5728\:8BA1\:7B97In[4]:= Solve::svars: 方程可能无法给出所有 solve 变量的解. Length[s1] 8 (*Length[s1]为解的个数*) (*我们选取第7个解s1[[7]]看一下*) In[5]:= Ans1=P/.s1[[7]] Out[5]= {{-30,-(5/2),-(253/2)},{-10,3/2,-(77/2)},{6,-1,23}} (*下面我们来验证一下它是不是解呢?*) In[6]:= Transpose[Ans1].A.Ans1==B Out[6]= True (*输出结果为True,可见结果对了*) (*下面我们再来看另一组解,比如说第二组s1[2]*) In[7]:= Ans2=P/.s1[[2]] Out[7

文档评论(0)

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

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

1亿VIP精品文档

相关文档