LinearAlgebra[IsOrthogonal] - 直交行列であるかを判定
LinearAlgebra[IsUnitary] - ユニタリ行列であるかを判定
使い方
IsOrthogonal(A, M)
IsUnitary(A, M)
パラメータ
A - 正方行列
M - (オプション) 正方行列
|
説明
|
|
•
|
IsOrthogonal(A) 関数は A が 直交行列 (AA' = I, ただし A' は転置であり I は単位行列) であるかどうか判定します。
|
|
IsOrthogonal(A,M) 関数は A が M によって定義される内積 (AMA' = I) に関して直交行列であるかどうかを判定します。
|
|
一般に、IsOrthogonal 関数は A が直交行列であると判定されれば true を返し、A が直交行列でないと判定されれば false を返し、その他の場合は FAIL を返します。
|
•
|
IsUnitary(A) 関数は A がユニタリ行列 (A . A* = I, ただし A* はエルミート転置であり I は単位行列) であるかどうかを判定します。
|
|
IsUnitary(A,M) 関数は A が M によって定義される内積 (A . M . A* = I) についてユニタリ行列であるかどうかを判定します。
|
|
一般に、IsUnitary 関数は行列 A がユニタリであると判定されれば true を返し、行列がユニタリでないと判定されれば false を返し、その他の場合は FAIL を返します。
|
•
|
この関数は LinearAlgebra パッケージの一部ですから、コマンド with(LinearAlgebra) を実行した後にのみ IsOrthogonal(..) の形で使うことができます。ただし、長い形の名前 LinearAlgebra[IsOrthogonal](..) を使えばいつでもアクセスすることができます。
|
|
|
例
|
|
>
|
with(LinearAlgebra):
G := map(simplify, GivensRotationMatrix( <cos(theta),sin(theta)>, 1, 2, 3 ));
|
| (2.1) |
>
|
Normalizer := x -> simplify(x,'trig'):
IsOrthogonal(G);
|
| (2.2) |
>
|
map(simplify, G . Transpose(G));
|
| (2.3) |
>
|
Q := <<sqrt(10)*3/10, -sqrt(10)/10>|<sqrt(10)*I/10, 3*sqrt(10)*I/10>>;
|
| (2.4) |
| (2.5) |
| (2.6) |
>
|
A := <<1,2>|<4,-3>>:
C := <<25/121,2/121>|<2/121,5/121>>:
A . C . Transpose(A);
|
| (2.7) |
| (2.8) |
|
|
Download Help Document
Was this information helpful?