hermiteForm

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

Описание

пример

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

Вызовите 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) определить полиномиальную переменную.

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

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

свернуть все

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

Матрица преобразования, возвращенная как 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