如何用符号计算等级

时间:2017-04-04 19:58:36

标签: maple

代码:

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

枫木计算它是一个不同的条件?

1 个答案:

答案 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*bb=0时的唯一较低排名可能性,因此排名0条件与a=b时相同。这就是所有情况。

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

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