meteor2013
V2EX  ›  问与答

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

  •  1
     
  •   meteor2013 · Mar 14, 2015 · 4235 views
    This topic created in 4257 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
    yangzh
    Mar 14, 2015
    1
    meteor2013
    meteor2013
    OP
    Mar 14, 2015
    2
    @yangzh

    我目前用magic(n)生成

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