linalg
:: minpoly
Минимальный полином матрицы
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
linalg::minpoly(A
, x
)
linalg::minpoly(A, x)
вычисляет минимальный полином квадратной матрицы A в x, т.е. многочлен самой низкой степени, уничтожающей матричный A.
Минимальный полином A
делит характеристический полином A
теоремой Кэли-Гамильтона.
Если матрица задана по Dom::Float
, то из-за числовых ошибок вычисленный полином может иметь степень выше, чем размерность матрицы. В таких случаях linalg::minpoly
возвращает значение FAIL
. Смотрите Пример 3.
Звонок компонента A
должен быть полем, т.е. областью категории Cat::Field
.
Мы задаем следующую матрицу по рациональным числам:
A := Dom::Matrix(Dom::Rational)( [[0, 2, 0], [0, 0, 2], [2, 0, 0]] )
Минимальным полиномом матричного A в переменной x затем дают:
delete x: linalg::minpoly(A, x)
В этом случае минимальный полином на самом деле равен характеристическому полиному A:
linalg::charpoly(A, x)
Минимальный полином матрицы:
B := matrix([[0, 1, 0], [0, 0, 0], [0, 0, 0]])
полином степени 2:
m := linalg::minpoly(B, x)
Характеристический полином B имеет степень 3 и разделен на минимальный полином B:
p := linalg::charpoly(B, x)
p / m
Для следующего примера MuPAD® не может вычислить минимальный полином, и таким образом FAIL
возвращен:
C := Dom::Matrix(Dom::Float)([ [7, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 2, 0, 0, 0], [1, 2, 3, 0, 0], [1, 2, 3, 4, 7] ])
delete x: linalg::minpoly(C, x)
Warning: Unable to compute minimal polynomial. [linalg::minpoly]
На самом деле для этого примера MuPAD не может проверять на нулевую эквивалентность во время Исключения Гаусса и поэтому выбрал неправильный элемент центра.
Если вы выполняете вычисление по коэффициенту domainDom::ExpressionField
(normal)
вместо этого, то в большинстве случаев минимальный полином может быть вычислен:
C := matrix([ [7, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 2, 0, 0, 0], [1, 2, 3, 0, 0], [1, 2, 3, 4, 7] ])
linalg::minpoly(C, x)
Однако в целом этой проблемы относительно нулевого распознавания нельзя избежать.
|
Квадратная матрица области категории |
|
Неопределенное |
Полином доменного Dom::DistributedPolynomial([x],R)
, где R
является звонком компонента A
или значением FAIL
.