Найдите ранг символьной матрицы
rank(A)syms a b c d A = [a b; c d]; rank(A)
ans =
2Символьные вычисления возвращают точный ранг матрицы, в то время как числовые вычисления могут пострадать от ошибок округления. Это точное вычисление полезно для плохо обусловленных матриц, таково как Гильбертова матрица. Рангом Гильбертовой матрицы порядка n является n.
Найдите ранг Гильбертовой матрицы порядка 15 численно. Затем преобразуйте числовую матрицу в символьную матрицу с помощью sym и найдите ранг символически.
H = hilb(15); rank(H) rank(sym(H))
ans =
12
ans =
15Символьное вычисление возвращает правильный ранг 15. Числовое вычисление возвращает неправильный ранг 12 из-за ошибок округления.
Рассмотрите эту матрицу
После упрощения 1-sin(x)^2 к cos(x)^2 матрица имеет ранг 1. Однако rank возвращает неправильный ранг 2, потому что это не учитывает тождества, удовлетворенные специальными функциями, происходящими в элементах матрицы. Продемонстрируйте неправильный результат.
syms x A = [1-sin(x) cos(x); cos(x) 1+sin(x)]; rank(A)
ans =
2rank возвращает неправильный результат, потому что выходные параметры промежуточных шагов не упрощены. В то время как нет никакого отказоустойчивого обходного решения, можно упростить символьные выражения при помощи числовой замены и оценки замены с помощью vpa.
Найдите правильный ранг путем замены x с номером и оценки результата с помощью vpa.
rank(vpa(subs(A,x,1)))
ans =
1Однако даже после числовой замены, rank может возвратить неправильные результаты из-за ошибок округления.