meteor2013
V2EX  ›  问与答

请问有没好点的办法生成非奇异矩阵[Matlab]

  •  1
     
  •   meteor2013 · Mar 14, 2015 · 3911 views
    This topic created in 4111 days ago, the information mentioned may be changed or developed.
    我目前用的办法是用
    magic(n)生成随机的n阶矩阵
    然后用det()检查是否非奇异矩阵
    但这种办法效率太低了。
    大家有好点的办法吗?

    对了,v2ex能加一个Matlab板块吗?
    7 replies    2015-03-14 12:36:24 +08:00
    yangzh
        1
    yangzh  
       Mar 14, 2015
    meteor2013
        2
    meteor2013  
    OP
       Mar 14, 2015
    @yangzh

    我目前用magic(n)生成

    如果 n=10, 奇异矩阵的概率极低
    但是n=100,为什么奇异矩阵的概率就非常高了啊?
    h4x3rotab
        3
    h4x3rotab  
       Mar 14, 2015
    非奇异矩阵 <=> 行列式不为0 <=> 可以高斯-约当消元得到单位矩阵
    反过来,拿一个单位矩阵,随机做线性变换,是不是就能得到一个非奇异矩阵?
    脑洞出来的,不知道对不对
    ruoyu0088
        4
    ruoyu0088  
       Mar 14, 2015   ❤️ 1
    你确定magic函数是生成随机矩阵的吗?
    jokester
        5
    jokester  
       Mar 14, 2015
    re 4f
    然后用det判定singuarity有点那个
    rank应该会快些
    facat
        6
    facat  
       Mar 14, 2015
    我以前试过用rand,生成的矩阵几乎不奇异。
    或者楼主先找出一个非奇异矩阵,然后在此基础上做初等变换,依据线性代数的知识,得到的矩阵仍然是非奇异的。
    meteor2013
        7
    meteor2013  
    OP
       Mar 14, 2015
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5521 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 09:03 · PVG 17:03 · LAX 02:03 · JFK 05:03
    ♥ Do have faith in what you're doing.