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