class Vector

Attributes

components[R]

Public Class Methods

new(components) click to toggle source
# File lib/vector.rb, line 4
def initialize(components)
  @components = components
end

Public Instance Methods

*(scalar) click to toggle source
# File lib/vector.rb, line 24
def *(scalar)
  Vector.new(components.map{|c| scalar*c })
end
+(vector) click to toggle source
# File lib/vector.rb, line 12
def +(vector)
  if vector.dimension != dimension
    raise Newtonian::DimensionError
  end

  Vector.new(components.zip(vector.components).map {|(vi,wi)| vi+wi })
end
-(vector) click to toggle source
# File lib/vector.rb, line 20
def -(vector)
  self + (vector * -1)
end
==(vector) click to toggle source
# File lib/vector.rb, line 28
def ==(vector)
  return false if vector.dimension != dimension

  components == vector.components
end
dimension() click to toggle source
# File lib/vector.rb, line 8
def dimension
  @components.length
end
dot(vector) click to toggle source
# File lib/vector.rb, line 38
def dot(vector)
  if vector.dimension != dimension
    raise Newtonian::DimensionError
  end

  components.zip(vector.components).map {|(vi,wi)| vi*wi }.inject(&:+)
end
norm() click to toggle source
# File lib/vector.rb, line 34
def norm
  Math.sqrt(dot(self))
end