LinearAlgebra[PopovForm] - 行列の Popov 標準形の計算
使い方
PopovForm(A, x, shifts, out)
パラメータ
A - x の 1 変数多項式からなる行列
x - 多項式領域の変数名
shifts - (オプション) shifts = obj の形をした等式; ここで obj は、1 つまたは 2 つのリストからなるリスト
out - (オプション) output = objの形をした等式; ここで obj は、'P', 'U', 'rank', 'P_pivots', 'U_pivots' のうちのいずれか、あるいは 1 つまたは複数の変数名を含むリスト; 計算させる結果オブジェクトの選択
|
説明
|
|
•
|
PopovForm(A, x) 関数は、有理数 Q あるいは Q 上の有理式の体に係数を持つ、x の 1 変数多項式からなる m x n 矩形行列の列 Popov 標準形 P (多項式階段形とも呼ばれる) を計算します。出力のオプションを指定することで、形式 P、P を与えるユニモジュラ乗数 U、 P と U の階および様々なピボットを要求することが可能です。
|
|
|
列 Popov 形の定義
|
|
•
|
列 Popov 形には、いくつかの種類がありますが、一般に列の置換を除いて一義的です。最大階数および最大でない階数の両方の場合で使用される定義は、以下のとおりです。
|
|
m = n かつ P が正則である場合、 P は以下の次数の制約を持ちます。
|
|
deg P[i,i] > deg P[j,i] for all j > i
deg P[i,i] >= deg P[j,i] for all j < i
|
|
m > n かつ P が最大階数を持つ場合、P[P_pivots,*] が Popov 標準形であるような、n のピボット行 P_pivots が先行するリストが存在します。
|
|
m >= n かつ P が r < n の列階数を持つ場合、P は最初の n-r 列に 0 を持ち、P[P_pivots,*] が Popov 標準形であるような、r のピボット行 P_pivots が先行するリストが存在します。この場合、U は最小のユニモジュラ乗数で、U[U_pivots,*] が Popov 標準形にあるような、行の P_pivots からなるリストが存在します。
|
|
Popov 標準形 P は、A に対する基本的な列操作を行うことで得られます。この操作には、列の交換、列への単元の掛け算、他の列からある列の多項式倍を引く減算などが含まれます。使用される手法は、Beckermann, Labahn, および Villard による分数を用いないアルゴリズムです。返される行列のオブジェクトは、P = A . U という属性を持ちます。
|
•
|
output オプション (out) は、返される式列の内容を決定します。
|
|
output オプションに何が含まれるかによって、P (Popov 標準形), U (ユニモジュラ変換行列), rank (行列の階数), P_pivots あるいは U_pivots (P と U それぞれに対応するピボット行) のうち、1 つまたは複数の因子を含む式列が返されます。
|
|
output がリストである場合、リスト内に指定されたものと同じ次数のオブジェクトが返されます。
|
•
|
shifts オプションは、(最大の列階数でない場合に) 次数の制約を Popov 形および最小乗数の両方へシフトすることを許すための、オプション入力です。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
A := < <z^3-z^2, z^3-2*z^2+2*z-2>|<z^3-2*z^2-1, z^3-3*z^2+3*z-4>>;
|
| (3.1) |
| (3.2) |
>
|
(P, U) := PopovForm(A, z, output=['P', 'U']);
|
| (3.3) |
>
|
map(expand, P - A . U);
|
| (3.4) |
| (3.5) |
低い階数の行列
>
|
A := <<3*z-6,-3*z+3,2*z+3,z>|<-3*z,3*z, -2, -1>|<6,-3,-2*z-1,-z+1>>;
|
| (3.6) |
>
|
P,U,r := PopovForm( A,z,output=['P','U','rank']);
|
| (3.7) |
>
|
P,U,r,II,K := PopovForm( A,z,output=['P','U','rank','P_pivots','U_pivots']);
|
| (3.8) |
[2,2,0,0] シフトされた Popov形
>
|
P,U,r,II,K := PopovForm( A, z, shifts=[[2,2,0,0]],
output=['P','U','rank','P_pivots','U_pivots']);
|
| (3.9) |
ユニモジュラ乗数に [0,-3,0,0] のシフトを行う Popov 形
>
|
A:=<<-z^3+4*z^2+z+1,-z^2+7*z+4>|<z-1,z+2>| <2*z^2+2*z-2,z^2+6*z+6>|<-z^2,-2*z>>;
|
| (3.10) |
>
|
P,U,r,II,K := PopovForm( A,z,shifts=[[0,0],[0,-3,0,0]],
output=['P','U','rank','P_pivots','U_pivots']);
|
| (3.11) |
>
|
map(expand, P - A . U);
|
| (3.12) |
| (3.13) |
|
|
参考文献
|
|
|
B. Beckermann, G. Labahn, and G. Villard. ``Shifted Normal Forms of Polynomial Matrices''. ISSAC'99, (1999): 189-196.
|
|
B. Beckermann, G. Labahn, and G. Villard. ``Shifted Normal Forms of General Polynomial Matrices''. University of Waterloo, Technical Report, Department of Computer Science, 2001.
|
|
B. Beckermann and G. Labahn. ``Fraction-free Computation of Matrix Rational Interpolants and Matrix GCDs''. SIAM Journal on Matrix Analysis and Applications. V.22, No.1 (2000): 114-144.
|
|
|