=begin [(())] = Algebra::JordanForm ((*(ジョルダン行列クラス)*)) ジョルダン行列を表現するクラスです。 == ファイル名: * ((|jordan-form.rb|)) == スーパークラス: * ((|Object|)) == インクルードしているモジュール: なし == 関連する関数: --- Algebra::MatrixAlgebra#jordan_form ((|self|))のジョルダン標準形を返します。 --- Algebra::MatrixAlgebra#jordan_form_info (())(self) と同じです。 == クラスメソッド: --- ::new(array) (()) オブジェクトを返します。((|array|)) は、 (({[対角成分, サイズ]})) を要素とする配列です。行列を得るには メソッド (()) を施すことにより、(上三角)ジョルダン 行列が得られます。下三角にするには(())を用います。 例: j = Algebra::JordanForm.new([[2, 3], [-1, 2]]) j.to_matrix.display #=> # 2, 1, 0, 0, 0 # 0, 2, 1, 0, 0 # 0, 0, 2, 0, 0 # 0, 0, 0, -1, 1 # 0, 0, 0, 0, -1 --- ::construct(elem_divs, facts, field, pfield) 略。 --- ::decompose(m) 行列 ((|m|)) のジョルダン行列を ((|jm|))、((|m|)) を ((|jm|)) に 変形するために必要な左変形を ((|tL|))、右変形を ((|sR|))、ジョルダン 分解をするのに必要な最小分解体を ((|field|)) 、最小分解体まで基礎体 を拡大するのに必要な方程式の配列を ((|modulus|)) とするとき、 [jm, tL, sR, field, modulus] を返します。((({tL * sR == 単位行列})) です。) 例: m = Algebra.SquareMatrix(Rational, a.size)[ [-1, 1, 2, -1], [-5, 3, 4, -2], [3, -1, 0, 1], [5, -2, -2, 0] ] jf, p, q, field, modulus = Algebra::JordanForm.decompose(m) jf.display; puts #=> # 2, 0, 0, 0 # 0, a, 0, 0 # 0, 0, b, 0 # 0, 0, 0, -b - a p modulus #=> [a^3 + 3a - 1, b^2 + ab + a^2 + 3] print "P =\n"; p.display; puts print "P^-1 =\n"; q.display; puts m = m.convert_to(field) p jf == p * m * q #=> true == メソッド: --- to_matrix(ring) ((|ring|)) 上のジョルダン行列(上三角)を返します。 例: j = Algebra::JordanForm.new([[2, 3], [-1, 2]]) j.to_matrix(Integer).display #=> # 2, 1, 0, 0, 0 # 0, 2, 1, 0, 0 # 0, 0, 2, 0, 0 # 0, 0, 0, -1, 1 # 0, 0, 0, 0, -1 --- to_matrix_r(ring) (()) と同じ。 --- to_matrix_l(ring) ジョルダン行列(下三角)を返します。 =end