【问题标题】:How to calculate the rank with Symbolic如何用符号计算排名
【发布时间】:2017-04-04 19:58:36
【问题描述】:

代码:

with(LinearAlgebra): 
mat := Matrix([[a, b, b, b, b], [b, a, b, b, b], [b, b, a, b, b],
 [b, b, b, a, b], [b, b, b, b, a]]);
Rank(mat);

函数Rank 只是给了我5 的结果,但实际上:

when a=b=0,rank(mat)=0
when a=b≠0,rank(mat)=1
when a+4b=0,rank(mat)=4
when a≠b&&a≠-4b,rank(mat)=5

枫把它算作不同的条件?

【问题讨论】:

    标签: maple


    【解决方案1】:

    在大多数情况下,Maple 将本例中的 a 和 b 等符号视为通用符号(例如,它们不满足任何代数方程,例如 a-b=0 等),并且在这些假设下,排名为 5。这不是一个完全无用的结果,因为可能有一个通常不是满秩的符号矩阵。

    如果您想获得所有案例,我认为您可能必须继续手动计算符号行列式/次要并找到它们的根源。例如

    d5 := LinearAlgebra:-Determinant(mat);
    s := {solve(d5, a)}; # two solutions
    mat1 := eval(mat, a = s[1]); # a=b
    LinearAlgebra:-Rank(mat1); # rank=1
    mat2 := eval(mat, a = s[2]); # a=-4*b
    LinearAlgebra:-Rank(mat2); # rank=3
    

    要深入到较低级别的情况,您需要开始查看 mat1 和 mat2 的次要的零。由于 mat1 是 1 级,因此您必须查看是什么使其 1x1 次要数为零,但由于 mat1 具有所有相同的条目,因此该条件只是 b=0。

    您仍然需要检查 mat2,因为可能存在 rank=2 的情况,或者 b 上的其他条件会为您提供 1 或 0 的排名。

    minors := { seq(seq(LinearAlgebra:-Minor(mat2, i, j), i=1..5), j=1..5)) };
    s2 := solve(minors, b); # {b=0}
    LinearAlgebra:-Rank( eval(mat2, s2) ); # 0
    

    这向我们表明,a=-4*b 时唯一较低等级的可能性是 b=0,因此与 a=b 时相同的等级 0 条件。就是这样。

    如果不是所有情况,那么您将不得不查看 3x3 和 2x2 未成年人,这需要明智地使用 LinearAlgebra:-SubMatrix 命令。在一般情况下,这种方法可能会导致大量的案例拆分,并且几乎可以肯定有一种更好的方法可以更普遍地重复使用次要计算。

    如果您有理由相信您的矩阵通常是可对角化的,那么您可以查看特征多项式的系数在哪里消失。

    【讨论】:

    • 这是一个好的开始,非常感谢。只是不适合排名为0的情况
    • 要得到rank 0 case的条件,需要从minors开始看。对于 a=-4*b 条件,任何 3x3 次要条件( LinearAlgebra:-Minor( eval(mat, a=s[2]), 1,1) 例如)都会为您提供 b=0 条件。对于 a=b 条件,矩阵为 Rank 1,因此,您只需查看 1x1 次要数,即可立即得到 b=0。
    • 这让我印象深刻。您能否将其作为完整答案发布给后续读者?我会接受的。
    • 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多