exponenta event banner

hermiteForm

Эрмитовая форма матрицы

Описание

пример

H = hermiteForm(A) возвращает нормальную форму Эрмита матрицы A. Элементы A должны быть целыми числами или многочленами в переменной, определяемой symvar(A,1). Форма Эрмита H - верхняя треугольная матрица.

пример

[U,H] = hermiteForm(A) возвращает нормальную форму Эрмита A и матрица унимодулярного преобразования U, такой, что H = U*A.

пример

___ = hermiteForm(A,var) предполагает, что элементы A одномерные многочлены в указанной переменной var. Если A содержит другие переменные, hermiteForm обрабатывает эти переменные как символические параметры.

Можно использовать входной аргумент var в любом из предыдущих синтаксисов.

Если A не содержит var, то hermiteForm(A) и hermiteForm(A,var) возвращает различные результаты.

Примеры

Эрмитовая форма для матрицы целых чисел

Найдите эрмитовую форму обратной матрицы Гильберта.

A = sym(invhilb(5))
H = hermiteForm(A)
A =
[    25,   -300,    1050,   -1400,    630]
[  -300,   4800,  -18900,   26880, -12600]
[  1050, -18900,   79380, -117600,  56700]
[ -1400,  26880, -117600,  179200, -88200]
[   630, -12600,   56700,  -88200,  44100]
 
H =
[ 5,  0, -210, -280,  630]
[ 0, 60,    0,    0,    0]
[ 0,  0,  420,    0,    0]
[ 0,  0,    0,  840,    0]
[ 0,  0,    0,    0, 2520]

Эрмитовая форма для матрицы одномерных многочленов

Создайте матрицу 2 на 2, элементы которой являются многочленами в переменной x.

syms x
A = [x^2 + 3, (2*x - 1)^2; (x + 2)^2, 3*x^2 + 5]
A =
[   x^2 + 3, (2*x - 1)^2]
[ (x + 2)^2,   3*x^2 + 5]

Найдите эрмитовую форму этой матрицы.

H = hermiteForm(A)
H =
[ 1, (4*x^3)/49 + (47*x^2)/49 - (76*x)/49 + 20/49]
[ 0,            x^4 + 12*x^3 - 13*x^2 - 12*x - 11]

Эрмитовая форма для матрицы многомерных многочленов

Создайте матрицу 2 на 2, содержащую две переменные: x и y.

syms x y
A = [2/x + y, x^2 - y^2; 3*sin(x) + y, x]
A =
[      y + 2/x, x^2 - y^2]
[ y + 3*sin(x),         x]

Найдите эрмитовую форму этой матрицы. Если переменная полинома не указана, hermiteForm использование symvar(A,1) и, таким образом, определяет, что полиномиальная переменная x. Поскольку 3*sin(x) + y не является многочленом в x, hermiteForm выдает ошибку.

H = hermiteForm(A)
Error using mupadengine/feval (line 163)
Cannot convert the matrix entries to integers or univariate polynomials.

Найти эрмитскую форму A указывая, что все элементы A являются многочленами в переменной y.

H = hermiteForm(A,y)
H =
[ 1, (x*y^2)/(3*x*sin(x) - 2) + (x*(x - x^2))/(3*x*sin(x) - 2)]
[ 0,     3*y^2*sin(x) - 3*x^2*sin(x) + y^3 + y*(- x^2 + x) + 2]

Эрмитовая форма и матрица преобразования

Найдите эрмитовую форму и соответствующую матрицу преобразования для обратной матрицы Гильберта.

A = sym(invhilb(3));
[U,H] = hermiteForm(A)
U =
[ 13,  9,  7]
[  6,  4,  3]
[ 20, 15, 12]
 
H =
[ 3,  0, 30]
[ 0, 12,  0]
[ 0,  0, 60]

Убедитесь, что H = U*A.

isAlways(H == U*A)
ans =
  3×3 logical array
     1     1     1
     1     1     1
     1     1     1

Найдите форму Эрмита и соответствующую матрицу преобразования для матрицы многочленов.

syms x y
A = [2*(x - y), 3*(x^2 - y^2);
     4*(x^3 - y^3), 5*(x^4 - y^4)];
[U,H] = hermiteForm(A,x)
U =
[                   1/2,  0]
[ 2*x^2 + 2*x*y + 2*y^2, -1]
 
H =
[ x - y,         (3*x^2)/2 - (3*y^2)/2]
[     0, x^4 + 6*x^3*y - 6*x*y^3 - y^4]

Убедитесь, что H = U*A.

isAlways(H == U*A)
ans =
  2×2 logical array
     1     1
     1     1

Если для целочисленной матрицы указана переменная

Если матрица не содержит определенную переменную, вызывается hermiteForm указывая эту переменную в качестве второго аргумента, результат отличается от полученного без указания этой переменной. Например, создайте матрицу, которая не содержит переменных.

A = [9 -36 30; -36 192 -180; 30 -180 180]
A =
     9   -36    30
   -36   192  -180
    30  -180   180

Звонить hermiteForm указание переменной x в качестве второго аргумента. В этом случае hermiteForm предполагает, что элементы A являются одномерными многочленами в x.

syms x
hermiteForm(A,x)
ans =
     1     0     0
     0     1     0
     0     0     1

Звонить hermiteForm без указания переменных. В этом случае hermiteForm удовольствия A как матрица целых чисел.

hermiteForm(A)
ans =
     3     0    30
     0    12     0
     0     0    60

Входные аргументы

свернуть все

Входная матрица, заданная как символическая матрица, элементами которой являются целые числа или одномерные многочлены. Если элементы A содержат более одной переменной, используйте var для задания полиномиальной переменной и обработки всех остальных переменных в качестве символьных параметров. Если A многомерный, и вы не указываете var, то hermiteForm использование symvar(A,1) для определения полиномиальной переменной.

Полиномиальная переменная, заданная как символьная переменная.

Выходные аргументы

свернуть все

Эрмитовая нормальная форма входной матрицы, возвращаемая как символическая матрица. Эрмитовая форма матрицы - верхняя треугольная матрица.

Матрица преобразования, возвращаемая как унимодульная символьная матрица. Если элементы A являются целыми числами, то элементы U также являются целыми числами, и det(U) = 1 или det(U) = -1. Если элементы A являются многочленами, то элементы U являются одномерными многочленами, и det(U) является константой.

Подробнее

свернуть все

Нормальная форма Hermite

Для любой квадратной матрицы A n-на-n с целыми коэффициентами существует матрица H n-на-n и унимодулярная матрица U n-на-n, так что A * U = H, где H - эрмитова нормальная форма A. Унимодулярная матрица является вещественной квадратной матрицей, так что её определитель равен1 или -1. Если A является матрицей многочленов, то определитель U является константой.

hermiteForm возвращает нормальную форму эрмитова несингулярной целочисленной квадратной матрицы A в виде верхней треугольной матрицы H, такой что Hjj≥0 и −Hjj2<Hij≤Hjj2 для j > i. Если А не является квадратной матрицей или сингулярной матрицей, матрица Н является просто верхней треугольной матрицей.

См. также

|

Представлен в R2015b