public class ImmutableVector extends Object implements Vector
Vector
instance. It keeps the reference to the
instance and delegates all operations to the instance except for
set(int, double) which will always result in an VectorAccessException
.
It may, however, still be modified indirectly via the reference of the
original vector. To ensure complete immutability, an independent copy is needed.
That is,
ImmutableVector immutable = new ImmutableVector(v.deepCopy());
Note that the returned values of all operations (e.g., add
) has
the same types as the original ones.Constructor and Description |
---|
ImmutableVector(Vector v)
Construct a read-only version of a vector.
|
Modifier and Type | Method and Description |
---|---|
Vector |
add(double scalar)
Add a constant to all entries in this vector.
|
Vector |
add(Vector that)
\(this + that\)
|
double |
angle(Vector that)
Measure the angle, \(\theta\), between
this and that . |
ImmutableVector |
deepCopy()
The implementation returns an instance created from
this by the copy
constructor of the class, or just this if the instance itself is
immutable. |
Vector |
divide(Vector that)
Divide
this by that , entry-by-entry. |
boolean |
equals(Object obj) |
double |
get(int index)
Get the value at position i.
|
int |
hashCode() |
double |
innerProduct(Vector that)
Inner product in the Euclidean space is the dot product.
|
Vector |
minus(double scalar)
Subtract a constant from all entries in this vector.
|
Vector |
minus(Vector that)
\(this - that\)
|
Vector |
multiply(Vector that)
Multiply
this by that , 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.
|
Vector |
opposite()
Get the opposite of this vector.
|
Vector |
pow(double scalar)
Take the exponentiation of all entries in this vector, entry-by-entry.
|
Vector |
scaled(double scalar)
Scale this vector by a constant, entry-by-entry.
|
Vector |
scaled(Real scalar)
Scale this vector by a constant, entry-by-entry.
|
void |
set(int i,
double value)
This method is overridden to always throw
VectorAccessException . |
int |
size()
Get the length of this vector.
|
double[] |
toArray()
Cast this vector into a 1D
double[] . |
String |
toString() |
Vector |
ZERO()
Get a 0-vector that has the same length as this vector.
|
public ImmutableVector(Vector v)
v
- a vectorpublic final void set(int i, double value)
VectorAccessException
.set
in interface Vector
i
- the index of the entry to change. The indices are counting from 1, NOT 0.value
- the value to change toVectorAccessException
- alwayspublic int size()
Vector
public double get(int index)
Vector
public Vector add(Vector that)
Vector
add
in interface Vector
add
in interface AbelianGroup<Vector>
that
- a vectorpublic Vector minus(Vector that)
Vector
minus
in interface Vector
minus
in interface AbelianGroup<Vector>
that
- a vectorpublic Vector multiply(Vector that)
Vector
this
by that
, entry-by-entry.public Vector divide(Vector that)
Vector
this
by that
, entry-by-entry.public Vector add(double scalar)
Vector
public Vector minus(double scalar)
Vector
public double innerProduct(Vector that)
Vector
innerProduct
in interface Vector
innerProduct
in interface HilbertSpace<Vector,Real>
that
- a vectorpublic Vector pow(double scalar)
Vector
public Vector scaled(double scalar)
Vector
vector.scaled(1. / vector.norm())
public Vector scaled(Real scalar)
Vector
vector.scaled(1. / vector.norm())
scaled
in interface Vector
scaled
in interface VectorSpace<Vector,Real>
scalar
- a constantpublic double norm()
Vector
norm
in interface Vector
norm
in interface BanachSpace<Vector,Real>
public double norm(double p)
Vector
Double.POSITIVE_INFINITY
), \(\|v\|_p =
\max|v_i|\).Double.NEGATIVE_INFINITY
), \(\|v\|_p =
\min|v_i|\).norm
in interface Vector
p
- p ≥ 1, or Double.POSITIVE_INFINITY
or
Double.NEGATIVE_INFINITY
public double angle(Vector that)
Vector
this
and that
.
That is,
\[
this \cdot that = \|this\| \times \|that\| \times \cos \theta
\]public Vector opposite()
Vector
opposite
in interface Vector
opposite
in interface AbelianGroup<Vector>
public Vector ZERO()
Vector
ZERO
in interface Vector
ZERO
in interface AbelianGroup<Vector>
public double[] toArray()
Vector
double[]
.public ImmutableVector deepCopy()
DeepCopyable
this
by the copy
constructor of the class, or just this
if the instance itself is
immutable.deepCopy
in interface Vector
deepCopy
in interface DeepCopyable
Copyright © 2010-2020 NM FinTech Ltd.. All Rights Reserved.