公告:1)网站程序升级:Q2A升级到1.8.6,Wordpress升级到5.7.2
2)修复了头像加载慢与提交问题反应慢等问题
2021-06-16

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

0 投票
1.4k 浏览

我想用MMA判断两个函数是否相似,可是MMA没有相关的函数,该怎么办呢?

比如让MMA判断

1 0 0 0 0
0 1 1 0 0
0 0 1 0 0
0 0 0 1 1
0 0 0 0 1

1 0 0 0 0
0 1 1 0 0
0 0 1 1 0
0 0 0 1 0
0 0 0 0 1

是否相似

 

 

分类:函数 | 用户: mma-2-2-2 (1.3k 分)
数学方法你会吧。。然后不就一步的事情吗
好的,我看一下若尔当标准型,顺便把高代基础复习一下,话说我实在是太渣了

2 个回答

–1 投票
 
已采纳

根据定理:两个同级复数矩阵相似的充分必要条件是:它们有相同的初等因子。

计算出两个矩阵的初等因子,比较一下就知道它们是否相似了。

在Mma中没找到计算初等因子的函数,但有Jordan分解函数,借助它写一个计算初等因子的函数,如下:

 

(*定义函数:计算矩阵初等因子*)
(*输入方阵,返回初等因子列表,每个初等因子(x-x0)^n表示为:{x0,n}*)
cdyz[m_] := 
 Module[{r = Length[m], list = {}, n = 1, 
   j = JordanDecomposition[m][[2]]},
  Do[
   If[j[[k, k + 1]] == 1, n++,
     AppendTo[list, {j[[k, k]], n}];
     n = 1;
     ];
   , {k, r - 1}];
  Sort@AppendTo[list, {j[[r, r]], n}]]

(*输入矩阵*)
a = ToExpression[StringSplit[#, " "] & /@ StringSplit["1 0 0 0 0 
     0 1 1 0 0 
     0 0 1 0 0 
     0 0 0 1 1 
     0 0 0 0 1", "\n"]];
b = ToExpression[StringSplit[#, " "] & /@ StringSplit["1 0 0 0 0 
     0 1 1 0 0 
     0 0 1 1 0 
     0 0 0 1 0 
     0 0 0 0 1", "\n"]];

(*计算两矩阵的初等因子*)
cdyz[a]
cdyz[b]

(*初等因子不相等,所以矩阵a与b不相似*)

这个搞复杂了,Jordan标准型相同即可(相似矩阵的Jordan标准型的顺序无所谓,但Mma生成的Jordan标准型不知道是什么顺序),下面是“Lozmlve*永”给出的代码

SimilarQ[a_,b_]:=Equal@@Last@*JordanDecomposition/@{a,b}

 

用户: 野鹤 (5.1k 分)
修改于 用户:野鹤
JordanDecomposition结果的第二个矩阵就是若尔当标准型,两个矩阵相似等价于若尔当标准型相同
有道理,我给搞复杂了,嘎嘎。
+2 投票
SimilarQ[a_,b_]:=Equal@@Last@*JordanDecomposition/@{a,b}
用户: Lozmlve*永 (1.2k 分)
修改于 用户:Lozmlve*永
不知道你这段代码 对于两个 若儿当块位置顺序不同 但是属于同一类相似的的矩阵能否判别
...