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
枫木计算它是一个不同的条件?
答案 0 :(得分:2)
在大多数情况下,Maple将此示例中的a和b等符号视为通用符号(例如,它们不满足任何代数方程式,例如ab = 0等),并且在这些假设下,等级为5。并不是一个完全无用的结果,因为它可能有一个通常不是满级的符号矩阵。
如果你想得到所有的案例,我想你可能不得不手动计算符号决定因素/未成年人并找到它们的根源。 e.g。
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
时的唯一较低排名可能性,因此排名0条件与a=b
时相同。这就是所有情况。
如果不是所有情况,那么你必须看看3x3和2x2未成年人,这需要明智地使用LinearAlgebra:-SubMatrix
命令。在一般情况下,这种方法可能会导致很多案例分裂,并且几乎可以肯定有更好的方法来重复使用次要计算。
如果你有理由相信你的矩阵通常可以对角化,那么你可以看一下特征多项式的系数在哪里消失。