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

如何用Mathematica求解相合转换矩阵Mathematica介绍Mathematica是一款功能强大的数学软件,在各个学科中均有广泛应用。如果你对此感兴趣,可以参考维基百科或百度对此的介绍。废话不多说,下面进入正题:如何用Mathematica求解相合转换矩阵?相合矩阵的定义:在数学上,所谓矩阵相合是指,在某一域上的矩阵A和B,如果存在一可逆矩阵(非奇矩阵)P使得PTAP=B,则称A与B矩阵相合。相合关系是一种等价关系,因为它满足自反性,对称性与传递性。下面举一个例子说明在已知矩阵A,B的情况下如何求解转换矩阵P。 , 在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 == BAns2 = 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==BOut[6]= True(*输出结果为True,可见结果对了*)(*下面我们再来看另一组解,比如说第二组s1[2]*)In[7]:= Ans2=P/.s1[[2]]Out[7]= {{(1/3230)(25608-9034 a31+388 Sqrt[3748-44 a31+17 a31^2]+8795556/(-198+a31-3 Sqrt[3748-44 a3

文档评论(0)

整理王 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档