メインコンテンツ

hermiteForm

行列のエルミート型

説明

H = hermiteForm(A) は、行列 Aエルミート標準形を返します。A の要素は、整数または symvar(A,1) で決定される変数の多項式でなければなりません。エルミート型 H は上三角行列です。

[U,H] = hermiteForm(A) は、A のエルミート標準形と、H = U*A となるようなユニモジュラー変換行列 U を返します。

___ = hermiteForm(A,var) では、A の要素が、指定された変数 var の一変数多項式であると仮定します。A に他の変数が含まれる場合、hermiteForm ではそれらの変数をシンボリック パラメーターとして扱います。

前述のいずれの構文でも入力引数 var を使用できます。

Avar が含まれない場合、hermiteForm(A)hermiteForm(A,var) は異なる結果を返します。

すべて折りたたむ

逆ヒルベルト行列のエルミート型を求めます。

A = sym(invhilb(5))
A = 

(25-3001050-1400630-3004800-1890026880-126001050-1890079380-11760056700-140026880-117600179200-88200630-1260056700-8820044100)

H = hermiteForm(A)
H = 

(50-210-2806300600000042000000840000002520)

2 行 2 列の行列を作成します。この行列の要素は、変数 x の多項式です。

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

(x2+32x-12x+223x2+5)

この行列のエルミート型を求めます。

H = hermiteForm(A)
H = 

(14x349+47x249-76x49+20490x4+12x3-13x2-12x-11)

2 つの変数 xy を含む 2 行 2 列の行列を作成します。

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

(y+2xx2-y2y+3sin(x)x)

この行列のエルミート型を求めます。多項式の変数を指定しない場合、hermiteForm では symvar(A,1) を使用して、多項式の変数が x であると決定します。3*sin(x) + yx の多項式ではないため、hermiteForm(A) はエラーをスローします。

A のすべての要素が変数 y の多項式であると指定して、A のエルミート型を求めます。

H = hermiteForm(A,y)
H = 

(1xy23xsin(x)-2+xx-x23xsin(x)-203y2sin(x)-3x2sin(x)+y3+yx-x2+2)

逆ヒルベルト行列について、エルミート型とその対応する変換行列とを求めます。

A = sym(invhilb(3));
[U,H] = hermiteForm(A)
U = 

(1397643201512)

H = 

(303001200060)

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 = 

(1202x2+2xy+2y2-1)

H = 

(x-y3x22-3y220x4+6x3y-6xy3-y4)

H = U*A であることを検証します。

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

   1   1
   1   1

行列に特定の変数が含まれておらず、その変数を 2 番目の引数として指定して hermiteForm を呼び出す場合、その結果はその変数を指定しない場合に得られる結果とは異なります。たとえば、変数を 1 つも含まない行列を作成します。

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

     9   -36    30
   -36   192  -180
    30  -180   180

変数 x を 2 番目の引数として指定して、hermiteForm を呼び出します。この場合、hermiteForm では A の要素が x の一変数多項式であると仮定します。

syms x
hermiteForm(A,x)
ans = 3×3

     1     0     0
     0     1     0
     0     0     1

変数を指定せずに hermiteForm を呼び出します。この場合、hermiteFormA を整数行列として扱います。

hermiteForm(A)
ans = 3×3

     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) は定数です。

詳細

すべて折りたたむ

バージョン履歴

R2015b で導入