linalg
:: smithForm
Нормальная форма Смита матрицы
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
linalg::smithForm(A
, <var>, <All>)
linalg::smithForm(A)
вычисляет нормальную форму Смита n - размерная квадратная матрица A, который является n ×n диагональный матричный S, такой, что S i - 1, i - 1 делит S i, i для i = 2, …, n.
Нормальная форма Смита матричного A
уникальна.
Звонком компонента A
должно быть Евклидово кольцо, то есть, область категории Cat::EuclideanDomain
.
linalg::smithForm(A, var)
возвращает нормальную форму Смита A
, принимая, что элементы A
являются одномерными полиномами в переменной var
. Если A
не содержит var
, то smithForm(A)
и smithForm(A,var)
возвращают различные результаты.
linalg::smithForm(A, <var>, All)
возвращает список [S, U, V]
, где S
является нормальной формой Смита A
, и U
и V
являются unimodular матрицами преобразования, такими что S = U*A*V
. Можно использовать опцию All
с или не задавая переменную var
.
Создайте следующую матрицу целых чисел.
A := matrix([[9, -36, 30], [-36, 192, -180], [30, -180, 180]])
Найдите нормальную форму Смита этой матрицы.
linalg::smithForm(A)
Используйте опцию All
, чтобы найти соответствующие матрицы преобразования.
[S, U, V] := linalg::smithForm(A, All)
Проверьте тот S = U*A*V
.
S = U*A*V
Создайте следующую матрицу полиномов.
B := matrix([[-(x - 3)^2*(x - 2),(x - 3)*(x - 2)*(x - 4)], [(x - 3)*(x - 2)*(x - 4),-(x - 3)^2*(x - 4)] ])
Найдите нормальную форму Смита этой матрицы.
linalg::smithForm(B)
Используйте опцию All
, чтобы найти соответствующие матрицы преобразования.
[U, S, V] := linalg::smithForm(B, All)
Если матрица не содержит конкретную переменную, и вы вызываете linalg::smithForm
, указывающий, что переменная в качестве второго аргумента, то результат отличается от того, что вы получаете, не указывая ту переменную. Например, создайте матрицу, которая не содержит переменных.
A := matrix([[9, -36, 30], [-36, 192, -180], [30, -180, 180]])
Вызовите переменную x
определения linalg::smithForm
в качестве второго аргумента. В этом случае linalg::smithForm
принимает, что элементы A
являются одномерными полиномами в x
.
linalg::hermiteForm(A, x)
Вызовите linalg::smithForm
, не задавая переменные. В этом случае linalg::smithForm
обрабатывает A
как матрицу целых чисел.
linalg::hermiteForm(A)
|
Квадратная матрица области категории |
|
Возвращает список |
Матрица того же доменного типа как A
. С опцией All
linalg::smithForm
возвращает список [S, U, V]
, где S
является матрицей того же доменного типа как A
, и U
и V
являются соответствующими матрицами преобразования.
n ×n матричный S = (s ij) с коэффициентами в Евклидово кольце является нормальной формой Смита матрицы, если S является диагональной матрицей (с неотрицательными коэффициентами в случае кольцевого ℤ), такой, что s i, i делит s i + 1, i + 1 для всего i <n.