В большинстве случаев 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
Чтобы перейти к регистру более низкого ранга, вам нужно начать смотреть на нули миноров мат1 и мат2. Так как mat1 имеет ранг 1, вы должны посмотреть, что делает его младшие 1x1 нулевыми, но поскольку mat1 имеет все идентичные записи, это условие просто b = 0.
Вам все еще нужно проверить мат2, потому что может быть случай ранга = 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
. В общем случае этот подход может привести к большому разделению регистра, и почти наверняка есть лучший способ сделать это в более общем случае, повторно используя второстепенные вычисления.
Если у вас есть основания полагать, что ваша матрица в целом диагонализируема, вы можете посмотреть, где исчезают коэффициенты характеристического многочлена.
person
John M
schedule
04.04.2017