Найдите ранг символьной матрицы
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 = 2
rank
возвращает неправильный результат, потому что выходные параметры промежуточных шагов не упрощены. В то время как нет никакого отказоустойчивого обходного решения, можно упростить символьные выражения при помощи числовой замены и оценки замены с помощью vpa
.
Найдите правильный ранг путем замены x
с номером и оценкой результата с помощью vpa
.
rank(vpa(subs(A,x,1)))
ans = 1
Однако даже после числовой замены, rank
может возвратить неправильные результаты из-за ошибок округления.