hermiteForm

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

Синтаксис

H = hermiteForm(A)
[U,H] = hermiteForm(A)
___ = hermiteForm(A,var)

Описание

пример

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

пример

[U,H] = hermiteForm(A) возвращает нормальную форму Эрмита A и unimodular матрицы преобразования 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

Вызовите   переменную x определения hermiteForm  в качестве второго аргумента. В этом случае 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), чтобы определить полиномиальную переменную.

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

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

свернуть все

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

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

Больше о

свернуть все

Эрмитова нормальная форма

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

hermiteForm возвращает нормальную форму Эрмита несингулярной целочисленной квадратной матрицы A как верхняя треугольная матрица H, такой что Hjj0 и Hjj2<HijHjj2 для j>i. Если A не является квадратной матрицей или сингулярной матрицей, матричный H является просто верхней треугольной матрицей.

Смотрите также

|

Введенный в R2015b