Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > matrixライブラリ > Matrixクラス

class Matrix

クラスの継承リスト: Matrix < Enumerable < Object < Kernel < BasicObject

要約

Numericを要素とする行列を扱うクラスです。

行列

m * n 個の数a(i,j)を

[ a(0,0) a(0,1) a(0,2)  a(0,3) ... a(0,n-1)   ]
[ a(1,0) a(1,1) a(1,2)  a(1,3) ... a(1,n-1)   ]
[ a(2,0) a(2,1) a(2,2)  a(2,3) ... a(2,n-1)   ]
[                                             ]
[ a(m-1,0)                         a(m-1,n-1) ]

のように、縦横の表にあらわしたものを(m,n)型の行列といいます。 m=nの行列をm次の正方行列(square matrix)といいます。 インデックスは 0 から始まることに注意してください。

上からi番目の横の数の並びを第i行(the i-th row)、 左からj番目の縦の数の並びを第j列(the j-th column)といいます。

(m,n)型行列は、 大きさnの行(横)ベクトルをm個縦に並べたものとみなすこともできますし、 大きさmの列(縦)ベクトルをn個横に並べたものとみなすこともできます。

第i行、第j列にある数a(i,j)を(i,j)要素(the (i,j)-th element)といいます。

i=jの要素a(i,j)を対角要素(diagonal element)、 それ以外の要素を非対角要素(nondiagonal element)といいます。

Complex クラスとの併用

require 'complex'することによって、 Matrixオブジェクトの要素はComplexクラスに拡張されます。 多くのメソッドは、この拡張されたMatrixクラスでも、期待通りに動作します。

次の例は、各要素を共役複素数に置換するメソッド Matrix#conjugate です。



require 'matrix'
require 'complex'

class Matrix
  def conjugate
    collect{|e| e.conjugate }
  end
end

特異メソッド

定義 説明
identity(n) -> Matrix
unit(n) -> Matrix
I(n) -> Matrix

n次の単位行列を生成します。

self[*rows] -> Matrix

rows[i] を第 i 行とする行列を生成します。

build(row_size, column_size = row_size) {|row, col| ... } -> Matrix
build(row_size, column_size = row_size) -> Enumerable

row_size×column_sizeの行列をブロックの返り値から生成します。

column_vector(column) -> Matrix

要素がcolumnの(n,1)型の行列(列ベクトル)を生成します。

columns(columns) -> Matrix

引数 columns を列ベクトルの集合とする行列を生成します。

diagonal(*values) -> Matrix

対角要素がvaluesで、非対角要素が全て0であるような 正方行列を生成します。

empty(row_size=0, column_size=0) -> Matrix

要素を持たない行列を返します。

row_vector(row) -> Matrix

要素がrowの(1,n)型の行列(行ベクトル)を生成します。

rows(rows, copy = true) -> Matrix

引数 rows を行ベクトルの列とする行列を生成します。

scalar(n, value) -> Matrix

対角要素が全てvalue(数)で、非対角要素が全て0であるようなn次の正方行列を生成します。

zero(n) -> Matrix

n × n の零行列(要素が全て 0 の行列)を生成して返します。

インスタンスメソッド

定義 説明
self * m -> Matrix | Vector

self に行列またはベクトル m を右から乗じた行列を返します。

self * other -> Matrix

self の各成分に数 other を掛けた行列を返します。

self ** n -> Matrix

self の n 乗を返します。

self + m -> Matrix

self に行列 m を加算した行列を返します。 self の column_size が 1 なら Vector オブジェクトも指定出来ます。

self - m -> Matrix

self から行列mを減算した行列を返します。 self の column_size が 1 なら Vector オブジェクトも指定出来ます。

self / m -> Matrix

self に行列 m の逆行列を右から乗じた行列を返します。

self / other -> Matrix

self の各成分を数 other で割った行列を返します。

self == other -> bool
eql?(other) -> bool

自分自身と other を比較し、同値であれば真(true)を返します。

self[i, j] -> ()
element(i, j) -> ()
component(i, j) -> ()

(i,j)要素を返します。 行列の範囲外の値を指定した場合には nil を返します。

clone -> Matrix

自分自身のコピーを返します。

coerce(other) -> Array

他の数値オブジェクトとの変換を行います。

collect {|x| ... } -> Matrix
map {|x| ... } -> Matrix

行列の各要素に対してブロックの適用を繰り返した結果を、要素として持つ行列を生成します。

column(j) -> Vector | nil
column(j) {|x| ... } -> self

j 番目の列を Vector オブジェクトで返します。 j 番目の列が存在しない場合は nil を返します。 ブロックが与えられた場合はその列の各要素についてブロックを繰り返します。

column_size -> Integer
column_count -> Integer

行列の列数を返します。

column_vectors -> [Vector]

自分自身を列ベクトルの配列として返します。

conjugate -> Matrix
conj -> Matrix

複素共役を取った行列を返します。

determinant -> Rational | Float
det -> Rational | Float

行列式 (determinant) の値を返します。

determinant_e -> Rational | Float
det_e -> Rational | Float

不正な値を返します。 Matrix#determinant を代わりに使ってください。

diagonal? -> bool

行列が対角行列ならば真を返します。

each(which = :all) {|e| ... } -> self
each(which = :all) -> Enumerator

行列の各要素を引数としてブロックを呼び出します。

each_with_index(which = :all) {|e, row, col| ... } -> self
each_with_index(which = :all) -> Enumerator

行列の各要素をその位置とともに引数としてブロックを呼び出します。

eigen -> Matrix::EigenvalueDecomposition
eigensystem -> Matrix::EigenvalueDecomposition

行列の固有値と左右の固有ベクトルを保持したオブジェクトを返します。

elements_to_f -> Matrix

各要素を浮動小数点数 Float に変換した行列を返します。

elements_to_i -> Matrix

各要素を整数 Integer に変換した行列を返します。

elements_to_r -> Matrix

各要素を有理数 Rational に変換した行列を返します。

empty? -> bool

行列が要素を持たないならば真を返します。

index(value, selector = :all) -> [Integer, Integer] | nil
index(selector = :all) {|e| ... } -> [Integer, Integer] | nil
index(selector = :all) -> Enumerator
find_index(value, selector = :all) -> [Integer, Integer] | nil
find_index(selector = :all) {|e| ... } -> [Integer, Integer] | nil
find_index(selector = :all) -> Enumerator

指定した値と一致する要素の位置を [row, column] という配列で返します。 ブロックを与えた場合は各要素を引数としてブロックを呼び出し、 返り値が真であった要素の位置を返します。

hash -> Integer

行列のHash値を返します。

hermitian? -> bool

行列がエルミートならば真を返します。

imaginary -> Matrix
imag -> Matrix

行列の虚部を返します。

inspect -> String

自分自身を見やすい形式に文字列化し、その文字列を返します。

inverse -> Matrix
inv -> Matrix

逆行列を返します。

lower_triangular? -> bool

行列が下三角行列ならば真を返します。

lup -> Matrix::LUPDecomposition
lup_decomposition -> Matrix::LUPDecomposition

行列の LUP 分解を保持したオブジェクトを返します。

minor(from_row, row_size, from_col, col_size) -> Matrix
minor(from_row..to_row, from_col..to_col) -> Matrix

selfの部分行列を返します。

normal? -> bool

行列が正規行列ならば真を返します。

orthogonal? -> bool

行列が直交行列ならば真を返します。

permutation? -> bool

行列が置換行列ならば真を返します。

rank -> Integer

階数 (rank) を返します。

rank_e -> Integer

階数 (rank) を返します。

real -> Matrix

行列の実部を返します。

real? -> bool

行列の全要素が実(Numeric#real?)であれば真を返します。

rectangular -> [Matrix, Matrix]
rect -> [Matrix, Matrix]

行列を実部と虚部に分解したものを返します。

regular? -> bool

行列が正方で正則なら真を、特異なら偽を返します。

round(ndigits = 0) -> Matrix

行列の各要素を指定した桁数で丸めた行列を返します。

row(i) -> Vector | nil
row(i) {|x| ... } -> self

i 番目の行を Vector オブジェクトで返します。 i 番目の行が存在しない場合は nil を返します。 ブロックが与えられた場合はその行の各要素についてブロックを繰り返します。

row_size -> Integer
row_count -> Integer

行列の行数を返します。

row_vectors -> [Vector]

自分自身を行ベクトルの配列として返します。

singular? -> bool

行列が正方で特異なら真を/正則なら偽を返します。

square? -> bool

正方行列であるなら、真を返します。

symmetric? -> bool

行列が対称ならば真を返します。

transpose -> Matrix
t -> Matrix

転置行列 (transpose matrix) を返します。

to_a -> Array

自分自身をArrayに変換したものを返します。

to_s -> String

行列を文字列化し、その文字列を返します。

trace -> Integer | Float | Rational
tr -> Integer | Float | Rational

トレース (trace) を返します。

unitary? -> bool

行列がユニタリならば真を返します。

upper_triangular? -> bool

行列が上三角行列ならば真を返します。

zero? -> bool

行列が零行列ならば真を返します。

継承したメソッド

! != __id__ instance_eval instance_exec singleton_method_added singleton_method_removed singleton_method_undefined all? any? chunk collect_concat count cycle detect drop drop_while each_cons each_entry each_slice each_with_object entries find_all first grep group_by include? inject lazy max max_by min min_by minmax minmax_by none? one? partition reject reverse_each slice_before sort sort_by take take_while to_h to_set zip !~ <=> === =~ __send__ _dump class clone define_singleton_method display enum_for equal? extend freeze frozen? initialize initialize_copy instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? marshal_dump marshal_load method method_missing methods must_be must_be_close_to must_be_empty must_be_instance_of must_be_kind_of must_be_nil must_be_same_as must_be_within_epsilon must_equal must_include must_match must_raise must_respond_to must_send must_throw nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? singleton_class singleton_method singleton_methods taint tainted? tap to_ary to_hash to_int to_io to_proc to_regexp to_str trust untaint untrust untrusted? .new .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE