24小时热门版块排行榜    

CyRhmU.jpeg
查看: 533  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

napoleon_999

木虫 (小有名气)

[求助] 关于Mathematica软件的问题已有2人参与

最近在初学软件Mathematica,想问各位大神一个问题。如何在Mathematica中实现遍历一类特殊的矩阵,比如说我想遍历所有的n*n的斜矩阵,n是任意一个给定的正整数,满足对角线全为0,上三角每一个位置是1或者-1,下三角对称位置是相反数。这样的命令怎么写,用for循环或怎样吗?好像查阅书籍没有类似的指导,提前谢过了!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

watesoyan

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
napoleon_999: 金币+5, ★★★★★最佳答案 2016-10-17 22:43:38
Join[#, -#] &@
  MaximalBy[
   N@Table[SymmetrizedArray[{{n - 1, n} :>
          1, ({i_, j_} /;
            i < j) :> #[[(2 n - i) (i - 1)/2 + j - i]]}, {n, n},
        Antisymmetric[{1, 2}]]] & /@ Tuples[{-1, 1}, n (n - 1)/2 - 1],
    Eigenvalues[#, 1] &] // Normal
可以得到16个矩阵
4楼2016-10-17 18:38:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

markh

银虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
Table[Sign[i - j], {i, 100}, {j, 100}]
yeah, 终于升级成为淫虫。
2楼2016-10-16 00:23:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

napoleon_999

木虫 (小有名气)

引用回帖:
2楼: Originally posted by markh at 2016-10-16 00:23:27
Table

感谢!其实我还有问题,就是假设我生成了这些矩阵,每个矩阵算一下最大特征值,然后我想把最大特征值最大的那些矩阵输出(可能有多个),这时候应该怎么做呢?如果我用替换,即遍历这些矩阵,碰到最大特征值更大的就替换之前的矩阵,那最后就只能输出一个矩阵而不是多个,这时候应该怎么做呢?请赐教!
3楼2016-10-16 12:41:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

napoleon_999

木虫 (小有名气)

引用回帖:
4楼: Originally posted by watesoyan at 2016-10-17 18:38:12
Join &@
  MaximalBy[
   N@Table[SymmetrizedArray[{{n - 1, n} :>
          1, ({i_, j_} /;
            i < j) :> #] & /@ Tuples,
    Eigenvalues &] // Normal
可以得到16个矩 ...

谢谢啦!非常感谢!

[ 发自手机版 http://muchong.com/3g ]
5楼2016-10-17 22:42:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见