Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > matrixライブラリ > Vectorクラス > r
r -> Float
[permalink][rdoc]ベクトルの大きさ(ノルム)を返します。
ただし、要素の自乗和の平方根(Math.sqrt)を計算しているので、 複素ベクトルの場合は一般に正しい値(要素の絶対値自乗の和の平方根) を返しません。
Vector[3, 4].r # => 5.0 Vector[Complex(0, 1), 0].r # => Complex(0.0, 1.0) 正しくは 1.0
要素が複素数の場合にも対応したメソッドは以下のように定義できます。
class Vector def norm Math.sqrt @elements.inject(0){|sum, z| sum+(z*z).abs} end end Vector[Complex(0, 1), 0].norm # => 1.0