org.jscience.mathematics.vector
Class Vector<F extends Field<F>>

Object
  extended by Vector<F>
All Implemented Interfaces:
Immutable, Realtime, ValueType, GroupAdditive<Vector<F>>, Structure<Vector<F>>, VectorSpace<Vector<F>,F>
Direct Known Subclasses:
DenseVector, SparseVector

public abstract class Vector<F extends Field<F>>
extends Object
implements VectorSpace<Vector<F>,F>, ValueType, Realtime

This class represents an immutable element of a vector space.

Instances of this class are usually created from static factory methods.

        // Creates a vector of 64 bits floating points numbers.
        Vector<Float64> V0 = Vector.valueOf(1.1, 1.2, 1.3);

        // Creates a dense vector of rational numbers.
        DenseVector<Rational> V1 = DenseVector.valueOf(Rational.valueOf(23, 45), Rational.valueOf(33, 75));

        // Creates the sparse vector { 0, 0, 0, 3.3, 0, 0, 0, -3.7 } of decimal numbers.
        SparseVector<Decimal> V2 =
            SparseVector.valueOf(3, Decimal.valueOf("3.3"), 8).plus(
            SparseVector.valueOf(7, Decimal.valueOf("-3.7"), 8));
     

Version:
5.0, December 12, 2009
Author:
Jean-Marie Dautelle
See Also:
Wikipedia: Vector Space

Field Summary
protected static TextFormat<Vector> TEXT_FORMAT
          Holds the default text format for vectors (formatting only).
 
Constructor Summary
protected Vector()
          Default constructor (for sub-classes).
 
Method Summary
abstract  Vector<F> copy()
          Returns a copy of this vector allocated by the calling thread (possibly on the stack).
 Vector<F> cross(Vector<F> that)
          Returns the cross product of two 3-dimensional vectors.
 boolean equals(Object that)
          Indicates if this vector is equal to the object specified.
 boolean equals(Vector<F> that, Comparator<F> cmp)
          Indicates if this vector can be considered equals to the one specified using the specified comparator when testing for element equality.
abstract  F get(int i)
          Returns a single element from this vector.
abstract  int getDimension()
          Returns the number of elements held by this vector.
abstract  Vector<F> getSubVector(List<Index> indices)
          Returns the sub-vector formed by the elements having the specified indices.
 int hashCode()
          Returns a hash code value for this vector.
 Vector<F> minus(Vector<F> that)
          Returns the difference between this vector and the one specified.
abstract  Vector<F> opposite()
          Returns the negation of this vector.
abstract  Vector<F> plus(Vector<F> that)
          Returns the sum of this vector with the one specified.
abstract  Vector<F> times(F k)
          Returns the product of this vector with the specified coefficient.
abstract  F times(Vector<F> that)
          Returns the dot product of this vector with the one specified.
 String toString()
          Returns the text representation of this vector as a java.lang.String.
 Text toText()
          Returns the textual representation of this vector.
static Vector<Float64> valueOf(double... values)
          Returns a vector holding the specified double values (convenience method).
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TEXT_FORMAT

protected static final TextFormat<Vector> TEXT_FORMAT
Holds the default text format for vectors (formatting only). This format is based upon the default text format of the vector elements, e.g. "{30/23, 12/7}" for rational vector, "(2.3 + 4.6i), (1.3 - 2.7i)" for complex numbers. This format may be overriden by specialized vectors to provide parsing capabilities.

The default text format for any class can be retrieved using the TextFormat.getDefault(java.lang.Class) static method.

Constructor Detail

Vector

protected Vector()
Default constructor (for sub-classes).

Method Detail

valueOf

public static Vector<Float64> valueOf(double... values)
Returns a vector holding the specified double values (convenience method).

Parameters:
values - the vector values.
Returns:
the vector having the specified values.

getDimension

public abstract int getDimension()
Returns the number of elements held by this vector.

Returns:
this vector dimension.

get

public abstract F get(int i)
Returns a single element from this vector.

Parameters:
i - the element index (range [0..n[).
Returns:
the element at i.
Throws:
IndexOutOfBoundsException - (i < 0) || (i >= getDimension())

getSubVector

public abstract Vector<F> getSubVector(List<Index> indices)
Returns the sub-vector formed by the elements having the specified indices. The indices do not have to be ordered, for example getSubVector(Index.valuesOf(1, 0)) returns the subvector holding the first two elements of this vector exchanged.

Throws:
IndexOutOfBoundsException - if any of the indices is greater than this vector dimension.

opposite

public abstract Vector<F> opposite()
Returns the negation of this vector.

Specified by:
opposite in interface GroupAdditive<Vector<F extends Field<F>>>
Returns:
-this.

plus

public abstract Vector<F> plus(Vector<F> that)
Returns the sum of this vector with the one specified.

Specified by:
plus in interface GroupAdditive<Vector<F extends Field<F>>>
Parameters:
that - the vector to be added.
Returns:
this + that.
Throws:
DimensionException - is vectors dimensions are different.

minus

public Vector<F> minus(Vector<F> that)
Returns the difference between this vector and the one specified.

Parameters:
that - the vector to be subtracted.
Returns:
this - that.

times

public abstract Vector<F> times(F k)
Returns the product of this vector with the specified coefficient.

Specified by:
times in interface VectorSpace<Vector<F extends Field<F>>,F extends Field<F>>
Parameters:
k - the coefficient multiplier.
Returns:
this · k

times

public abstract F times(Vector<F> that)
Returns the dot product of this vector with the one specified.

Parameters:
that - the vector multiplier.
Returns:
this · that
Throws:
DimensionException - if this.dimension() != that.dimension()
See Also:
Wikipedia: Dot Product

cross

public Vector<F> cross(Vector<F> that)
Returns the cross product of two 3-dimensional vectors.

Parameters:
that - the vector multiplier.
Returns:
this x that
Throws:
DimensionException - if (this.getDimension() != 3) && (that.getDimension() != 3)

toText

public Text toText()
Returns the textual representation of this vector. The default implementation uses the current TextFormat for this vector.

Specified by:
toText in interface Realtime
Returns:
TextFormat.getInstance(this.getClass()).format(this)

toString

public final String toString()
Returns the text representation of this vector as a java.lang.String.

Overrides:
toString in class Object
Returns:
toText().toString()

equals

public boolean equals(Vector<F> that,
                      Comparator<F> cmp)
Indicates if this vector can be considered equals to the one specified using the specified comparator when testing for element equality. The specified comparator may allow for some tolerance in the difference between the vector elements.

Parameters:
that - the vector to compare for equality.
cmp - the comparator to use when testing for element equality.
Returns:
true if this vector and the specified matrix are both vector with equal elements according to the specified comparator; false otherwise.

equals

public boolean equals(Object that)
Indicates if this vector is equal to the object specified.

Overrides:
equals in class Object
Parameters:
that - the object to compare for equality.
Returns:
true if this vector and the specified object are both vectors with equal elements; false otherwise.

hashCode

public int hashCode()
Returns a hash code value for this vector. Equals objects have equal hash codes.

Overrides:
hashCode in class Object
Returns:
this vector hash code value.
See Also:
equals(org.jscience.mathematics.vector.Vector, java.util.Comparator)

copy

public abstract Vector<F> copy()
Returns a copy of this vector allocated by the calling thread (possibly on the stack).

Specified by:
copy in interface ValueType
Returns:
an identical and independant copy of this matrix.


Copyright © 2005-2010 JScience. All Rights Reserved.