Class DenseVector
- java.lang.Object
-
- dev.nm.algebra.linear.vector.doubles.dense.DenseVector
-
- All Implemented Interfaces:
Vector
,AbelianGroup<Vector>
,BanachSpace<Vector,Real>
,HilbertSpace<Vector,Real>
,VectorSpace<Vector,Real>
,DeepCopyable
public class DenseVector extends Object implements Vector
This class implements the standard, dense,double
based vector representation.- See Also:
- Wikipedia: Euclidean vector
-
-
Constructor Summary
Constructors Constructor Description DenseVector(double... data)
Constructs a vector, initialized by adouble[]
.DenseVector(int length)
Constructs a vector.DenseVector(int[] data)
Constructs a vector, initialized by aint[]
.DenseVector(int length, double value)
Constructs a vector, initialized by repeating a value.DenseVector(Matrix A)
Constructs a vector from a column or row matrix.DenseVector(DenseVector vector)
Copy constructor.DenseVector(Vector v)
Casts any vector to aDenseVector
.DenseVector(Double[] data)
Constructs a vector, initialized by aDouble[]
.DenseVector(Collection<? extends Number> data)
Constructs a vector, initialized by a collection, with order defined by its iterator.DenseVector(List<Double> data)
Constructs a vector, initialized by aList<Double>
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DenseVector
add(double scalar)
Add a constant to all entries in this vector.DenseVector
add(DenseVector that)
Vector
add(Vector that)
\(this + that\)double
angle(Vector that)
Measure the angle, \(\theta\), betweenthis
andthat
.DenseVector
deepCopy()
The implementation returns an instance created fromthis
by the copy constructor of the class, or justthis
if the instance itself is immutable.DenseVector
divide(DenseVector that)
Vector
divide(Vector that)
Dividethis
bythat
, entry-by-entry.boolean
equals(Object obj)
double
get(int i)
Get the value at position i.int
hashCode()
double
innerProduct(DenseVector that)
double
innerProduct(Vector that)
Inner product in the Euclidean space is the dot product.DenseVector
minus(double scalar)
Subtract a constant from all entries in this vector.DenseVector
minus(DenseVector that)
Vector
minus(Vector that)
\(this - that\)DenseVector
multiply(DenseVector that)
Vector
multiply(Vector that)
Multiplythis
bythat
, entry-by-entry.double
norm()
Compute the length or magnitude or Euclidean norm of a vector, namely, \(\|v\|\).double
norm(double p)
Gets the \(L^p\)-norm \(\|v\|_p\) of this vector.DenseVector
opposite()
Get the opposite of this vector.DenseVector
pow(double scalar)
Take the exponentiation of all entries in this vector, entry-by-entry.DenseVector
scaled(double c)
Scale this vector by a constant, entry-by-entry.DenseVector
scaled(Real c)
Scale this vector by a constant, entry-by-entry.void
set(int i, double value)
Change the value of an entry in this vector.void
set(int from, DenseVector replacement)
Replaces a sub-vectorv[from : replacement.length]
by a replacement starting at positionfrom
.int
size()
Get the length of this vector.double[]
toArray()
Cast this vector into a 1Ddouble[]
.String
toString()
DenseVector
ZERO()
Get a 0-vector that has the same length as this vector.
-
-
-
Constructor Detail
-
DenseVector
public DenseVector(int length)
Constructs a vector.- Parameters:
length
- the length of this vector
-
DenseVector
public DenseVector(int length, double value)
Constructs a vector, initialized by repeating a value.- Parameters:
length
- the length of this vectorvalue
- the initial value
-
DenseVector
public DenseVector(double... data)
Constructs a vector, initialized by adouble[]
.- Parameters:
data
- an 1D array
-
DenseVector
public DenseVector(Double[] data)
Constructs a vector, initialized by aDouble[]
.- Parameters:
data
- an 1D array
-
DenseVector
public DenseVector(List<Double> data)
Constructs a vector, initialized by aList<Double>
.- Parameters:
data
- an 1D array
-
DenseVector
public DenseVector(Collection<? extends Number> data)
Constructs a vector, initialized by a collection, with order defined by its iterator. Only the real/double part is used, by calling Number.doubleValue().- Parameters:
data
- a collection of Number
-
DenseVector
public DenseVector(int[] data)
Constructs a vector, initialized by aint[]
.- Parameters:
data
- an 1D array
-
DenseVector
public DenseVector(Matrix A)
Constructs a vector from a column or row matrix.- Parameters:
A
- a column or row matrix
-
DenseVector
public DenseVector(Vector v)
Casts any vector to aDenseVector
.- Parameters:
v
- a vector
-
DenseVector
public DenseVector(DenseVector vector)
Copy constructor.- Parameters:
vector
- a vector
-
-
Method Detail
-
size
public int size()
Description copied from interface:Vector
Get the length of this vector.
-
set
public void set(int i, double value)
Description copied from interface:Vector
Change the value of an entry in this vector. This is the only method that may change the entries of a vector.
-
set
public void set(int from, DenseVector replacement)
Replaces a sub-vectorv[from : replacement.length]
by a replacement starting at positionfrom
.- Parameters:
from
- the starting position of the replacementreplacement
- a vector for substitution- Throws:
IllegalArgumentException
- if the replacement length exceeds the end of this vector
-
get
public double get(int i)
Description copied from interface:Vector
Get the value at position i.
-
add
public Vector add(Vector that)
Description copied from interface:Vector
\(this + that\)- Specified by:
add
in interfaceAbelianGroup<Vector>
- Specified by:
add
in interfaceVector
- Parameters:
that
- a vector- Returns:
- \(this + that\)
-
add
public DenseVector add(DenseVector that)
-
minus
public Vector minus(Vector that)
Description copied from interface:Vector
\(this - that\)- Specified by:
minus
in interfaceAbelianGroup<Vector>
- Specified by:
minus
in interfaceVector
- Parameters:
that
- a vector- Returns:
- \(this - that\)
-
minus
public DenseVector minus(DenseVector that)
-
scaled
public DenseVector scaled(double c)
Description copied from interface:Vector
Scale this vector by a constant, entry-by-entry. Here is a way to get a unit version of the vector:vector.scaled(1. / vector.norm())
-
scaled
public DenseVector scaled(Real c)
Description copied from interface:Vector
Scale this vector by a constant, entry-by-entry. Here is a way to get a unit version of the vector:vector.scaled(1. / vector.norm())
- Specified by:
scaled
in interfaceVector
- Specified by:
scaled
in interfaceVectorSpace<Vector,Real>
- Parameters:
c
- a constant- Returns:
- \(c \times this\)
- See Also:
- Wikipedia: Scalar multiplication
-
opposite
public DenseVector opposite()
Description copied from interface:Vector
Get the opposite of this vector.- Specified by:
opposite
in interfaceAbelianGroup<Vector>
- Specified by:
opposite
in interfaceVector
- Returns:
- -v
- See Also:
- Wikipedia: Additive inverse
-
multiply
public Vector multiply(Vector that)
Description copied from interface:Vector
Multiplythis
bythat
, entry-by-entry.
-
multiply
public DenseVector multiply(DenseVector that)
-
divide
public Vector divide(Vector that)
Description copied from interface:Vector
Dividethis
bythat
, entry-by-entry.
-
divide
public DenseVector divide(DenseVector that)
-
add
public DenseVector add(double scalar)
Description copied from interface:Vector
Add a constant to all entries in this vector.
-
minus
public DenseVector minus(double scalar)
Description copied from interface:Vector
Subtract a constant from all entries in this vector.
-
pow
public DenseVector pow(double scalar)
Description copied from interface:Vector
Take the exponentiation of all entries in this vector, entry-by-entry.
-
norm
public double norm(double p)
Description copied from interface:Vector
Gets the \(L^p\)-norm \(\|v\|_p\) of this vector.- When p is finite, \(\|v\|_p = \sum_{i}|v_i^p|^\frac{1}{p}\).
- When p is \(+\infty\) (
Double.POSITIVE_INFINITY
), \(\|v\|_p = \max|v_i|\). - When p is \(-\infty\) (
Double.NEGATIVE_INFINITY
), \(\|v\|_p = \min|v_i|\).
- Specified by:
norm
in interfaceVector
- Parameters:
p
- p ≥ 1, orDouble.POSITIVE_INFINITY
orDouble.NEGATIVE_INFINITY
- Returns:
- \(\|v\|_p\)
- See Also:
- Wikipedia: Norm (mathematics)
-
norm
public double norm()
Description copied from interface:Vector
Compute the length or magnitude or Euclidean norm of a vector, namely, \(\|v\|\).- Specified by:
norm
in interfaceBanachSpace<Vector,Real>
- Specified by:
norm
in interfaceVector
- Returns:
- the Euclidean norm
- See Also:
- Wikipedia: Norm (mathematics)
-
angle
public double angle(Vector that)
Description copied from interface:Vector
Measure the angle, \(\theta\), betweenthis
andthat
. That is, \[ this \cdot that = \|this\| \times \|that\| \times \cos \theta \]
-
innerProduct
public double innerProduct(Vector that)
Description copied from interface:Vector
Inner product in the Euclidean space is the dot product.- Specified by:
innerProduct
in interfaceHilbertSpace<Vector,Real>
- Specified by:
innerProduct
in interfaceVector
- Parameters:
that
- a vector- Returns:
- \(this \cdot that\)
- See Also:
- Wikipedia: Dot product
-
innerProduct
public double innerProduct(DenseVector that)
-
ZERO
public DenseVector ZERO()
Description copied from interface:Vector
Get a 0-vector that has the same length as this vector.- Specified by:
ZERO
in interfaceAbelianGroup<Vector>
- Specified by:
ZERO
in interfaceVector
- Returns:
- the 0-vector
-
toArray
public double[] toArray()
Description copied from interface:Vector
Cast this vector into a 1Ddouble[]
.
-
deepCopy
public DenseVector deepCopy()
Description copied from interface:DeepCopyable
The implementation returns an instance created fromthis
by the copy constructor of the class, or justthis
if the instance itself is immutable.- Specified by:
deepCopy
in interfaceDeepCopyable
- Specified by:
deepCopy
in interfaceVector
- Returns:
- an independent (deep) copy of the instance
-
-