public class DenseMatrix extends Matrix
Matrix with no restrictions on element values.| Modifier | Constructor and Description |
|---|---|
protected |
DenseMatrix(DenseMatrix existingInstance,
CopyContext context)
Initializes a new instance as a copy of an existing instance.
|
|
DenseMatrix(double[][] array)
Initializes a new instance from a two-dimensional array of values.
|
|
DenseMatrix(double[][] array,
int rowDimension,
int columnDimension)
Construct a matrix without copying the given array.
|
|
DenseMatrix(double[] elements,
int rowDimension)
Initializes a new instance from a one-dimensional packed array.
|
|
DenseMatrix(int rowDimension,
int columnDimension)
Initializes a new instance with the specified row and column dimensions.
|
|
DenseMatrix(int rowDimension,
int columnDimension,
double elementValue)
Initializes a new instance with the specified row and column dimensions.
|
|
DenseMatrix(Matrix matrix)
Initializes a new
DenseMatrix from an existing Matrix. |
|
DenseMatrix(Matrix3By3 matrix)
Initializes a new instance from an existing
Matrix3By3. |
|
DenseMatrix(Matrix6By6 matrix)
Initializes a new instance from an existing
Matrix6By6. |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
checkForSameDefinition(DenseMatrix other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
protected boolean |
checkForSameDefinition(Matrix other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
void |
clear()
Sets the value of every value in the matrix to zero.
|
Object |
clone(CopyContext context)
Clones this object using the specified context.
|
protected int |
computeCurrentDefinitionHashCode()
Computes a hash code based on the current properties of this object.
|
boolean |
equals(Object obj)
Indicates whether another object is exactly equal to this instance.
|
double |
get(int rowIndex,
int columnIndex)
Gets the value at the specified location in the matrix.
|
int |
hashCode()
Returns a hash code for this instance, which is suitable for use in hashing algorithms and data structures like a hash table.
|
static DenseMatrix |
identity(int rowDimension,
int columnDimension)
Generates an identity matrix.
|
static double[] |
multiply(DenseMatrix matrix,
double[] vector)
Returns the result of the multiplication of a matrix and a vector.
|
Matrix |
multiply(double factor)
Creates a new
Matrix which has the value of the current matrix multiplied by the given factor. |
double[] |
multiply(double[] vector)
Returns the result of the multiplication of this matrix and a vector.
|
DenseMatrix |
multiplyAssign(double s)
Multiply a matrix by a scalar in place, A = s*A
|
void |
set(int rowIndex,
int columnIndex,
double value)
Sets the value at the specified location in the matrix.
|
double[] |
solve(double[] vectorB)
Solve A*X = B
|
Matrix |
transpose()
Creates a new
Matrix which is the transpose of the current matrix. |
add, add, add, add, add, addAssign, checkForSameDefinition, elementDivide, elementDivide, elementDivide, elementDivide, elementDivide, elementDivideAssign, elementMultiply, elementMultiply, elementMultiply, elementMultiply, elementMultiply, elementMultiplyAssign, equals, equalsEpsilon, getColumnDimension, getFrozenCopy, getMatrix, getMatrix, getMatrix, getMatrix, getMatrix, getMatrix, getMatrix, getMatrix, getRowDimension, multiply, multiply, multiply, multiply, multiply, multiply, multiply, multiplyAssign, setMatrix, setMatrix, setMatrix, setMatrix, setMatrix, subtract, subtract, subtract, subtract, subtract, subtractAssign, toStringareSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, dictionaryItemsAreSameDefinition, enumerateDependencies, freeze, freezeAggregatedObjects, getCollectionHashCode, getCollectionHashCode, getCollectionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDictionaryHashCode, getIsFrozen, isSameDefinition, throwIfFrozenpublic DenseMatrix(int rowDimension,
int columnDimension)
rowDimension - The number of rows in the matrix.columnDimension - The number of columns in the matrix.ArgumentOutOfRangeException - Thrown when rowDimension or columnDimension are less than zero.public DenseMatrix(int rowDimension,
int columnDimension,
double elementValue)
rowDimension - The number of rows in the matrix.columnDimension - The number of columns in the matrix.elementValue - The value that all elements in the matrix will be set to.ArgumentOutOfRangeException - Thrown when rowDimension or columnDimension are less than zero.public DenseMatrix(@Nonnull double[][] array)
array - A two-dimensional array of doubles.IllegalStateException - Thrown when all rows are not the same length.ArgumentNullException - Thrown when array is null.public DenseMatrix(@Nonnull double[][] array, int rowDimension, int columnDimension)
array - Rectangular two-dimensional array of doubles.rowDimension - Number of rows, this must match the first dimension of the given array.columnDimension - Number of columns, this must match the second dimensions of the given array.ArgumentNullException - Thrown when array is null.ArgumentOutOfRangeException - Thrown when rowDimension or columnDimension are less than zero.public DenseMatrix(@Nonnull double[] elements, int rowDimension)
elements - A one-dimensional array of doubles containing the values of all of the elements.rowDimension - The number of rows in the matrix.ArgumentOutOfRangeException - Thrown when rowDimension is less than zero.ArgumentException - Thrown when the length of elements is not a multiple of the column dimension.ArgumentNullException - Thrown when elements is null.public DenseMatrix(@Nonnull Matrix3By3 matrix)
Matrix3By3.matrix - The existing Matrix3By3 to copy.public DenseMatrix(@Nonnull Matrix6By6 matrix)
Matrix6By6.matrix - The existing Matrix6By6 to copy.ArgumentNullException - Thrown when matrix is null.public DenseMatrix(@Nonnull Matrix matrix)
DenseMatrix from an existing Matrix.matrix - The existing Matrix to copy.ArgumentNullException - Thrown when matrix is null.protected DenseMatrix(@Nonnull DenseMatrix existingInstance, @Nonnull CopyContext context)
See ICloneWithContext.clone(CopyContext) for more information about how to implement this constructor
in a derived class.
existingInstance - The existing instance to copy.context - A CopyContext that controls the depth of the copy.ArgumentNullException - Thrown when existingInstance or context is null.public Object clone(CopyContext context)
This method should be implemented to call a copy constructor on the class of the
object being cloned. The copy constructor should take the CopyContext as a parameter
in addition to the existing instance to copy. The copy constructor should first call
CopyContext.addObjectMapping(T, T) to identify the newly constructed instance
as a copy of the existing instance. It should then copy all fields, using
CopyContext.updateReference(T) to copy any reference fields.
A typical implementation of ICloneWithContext:
public static class MyClass implements ICloneWithContext {
public MyClass(MyClass existingInstance, CopyContext context) {
context.addObjectMapping(existingInstance, this);
someReference = context.updateReference(existingInstance.someReference);
}
@Override
public final Object clone(CopyContext context) {
return new MyClass(this, context);
}
private Object someReference;
}
In general, all fields that are reference types should be copied with a call to
CopyContext.updateReference(T). There are a couple of exceptions:
If one of these exceptions applies, the CopyContext should be given an opportunity
to update the reference before the reference is copied explicitly. Use
CopyContext.updateReference(T) to update the reference. If CopyContext.updateReference(T) returns
the original object, indicating that the context does not have a replacement registered,
then copy the object manually by invoking a Clone method, a copy constructor, or by manually
constructing a new instance and copying the values.
alwaysCopy = context.updateReference(existingInstance.alwaysCopy);
if (existingInstance.alwaysCopy != null && alwaysCopy == existingInstance.alwaysCopy) {
alwaysCopy = (AlwaysCopy) existingInstance.alwaysCopy.clone(context);
}
If you are implementing an evaluator (a class that implements IEvaluator), the
IEvaluator.updateEvaluatorReferences(agi.foundation.infrastructure.CopyContext) method shares some responsibilities with the
copy context constructor. Code duplication can be avoided by doing the following:
CopyContext.updateReference(T). You should still call CopyContext.updateReference(T) on any references to
non-evaluators.
IEvaluator.updateEvaluatorReferences(agi.foundation.infrastructure.CopyContext) as the last line in the constructor and pass it the
same CopyContext passed to the constructor.
IEvaluator.updateEvaluatorReferences(agi.foundation.infrastructure.CopyContext) as normal. See the reference documentation for
IEvaluator.updateEvaluatorReferences(agi.foundation.infrastructure.CopyContext) for more information on implementing that method.
public MyClass(MyClass existingInstance, CopyContext context) {
super(existingInstance, context);
someReference = context.updateReference(existingInstance.someReference);
evaluatorReference = existingInstance.evaluatorReference;
updateEvaluatorReferences(context);
}
@Override
public void updateEvaluatorReferences(CopyContext context) {
evaluatorReference = context.updateReference(evaluatorReference);
}
@Override
public Object clone(CopyContext context) {
return new MyClass(this, context);
}
private Object someReference;
private IEvaluator evaluatorReference;clone in interface ICloneWithContextclone in class DefinitionalObjectcontext - The context to use to perform the copy.protected final boolean checkForSameDefinition(Matrix other)
true if it does. Derived classes MUST override this method and check
all new fields introduced by the derived class for definitional equivalence. It is NOT necessary
to check base class fields because the base class will already have done that. When overriding this method,
you should NOT call the base implementation because it will return false for all derived-class instances.
Derived classes should check the type of other to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object).checkForSameDefinition in class Matrixother - The other instance to compare to this one.true if the two objects are defined equivalently; otherwise false.protected boolean checkForSameDefinition(DenseMatrix other)
true if it does. Derived classes MUST override this method and check
all new fields introduced by the derived class for definitional equivalence. It is NOT necessary
to check base class fields because the base class will already have done that. When overriding this method,
you should NOT call the base implementation because it will return false for all derived-class instances.
Derived classes should check the type of other to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object).other - The other instance to compare to this one.true if the two objects are defined equivalently; otherwise false.protected int computeCurrentDefinitionHashCode()
DenseMatrix.checkForSameDefinition(agi.foundation.coordinates.Matrix) method.computeCurrentDefinitionHashCode in class Matrixpublic double get(int rowIndex,
int columnIndex)
get in class MatrixrowIndex - The row index of the element being queried.columnIndex - The column index of the element being queried.IndexOutOfBoundsException - Thrown when rowIndex is greater than RowDimension (get),
or when columnIndex is greater than ColumnDimension (get),
or when either are less than zero.public void set(int rowIndex,
int columnIndex,
double value)
set in class MatrixrowIndex - The row index of the element being queried.columnIndex - The column index of the element being queried.IndexOutOfBoundsException - Thrown when rowIndex is greater than RowDimension (get),
or when columnIndex is greater than ColumnDimension (get),
or when either are less than zero.public boolean equals(Object obj)
equals in class Objectobj - The object to compare to this instance.true if obj is an instance of this type and represents the same value as this instance; otherwise false.Object.hashCode(),
HashMappublic int hashCode()
hashCode in class ObjectObject.equals(java.lang.Object),
System.identityHashCode(java.lang.Object)public final void clear()
public Matrix multiply(double factor)
Matrix which has the value of the current matrix multiplied by the given factor.@Nonnull public final DenseMatrix multiplyAssign(double s)
s - The scalar.@Nonnull public final double[] multiply(@Nonnull double[] vector)
vector - The vector to be multiplied.public static double[] multiply(DenseMatrix matrix, double[] vector)
matrix - The matrix to multiply by the vector.vector - The vector being multiplied.public final double[] solve(double[] vectorB)
vectorB - right hand side@Nonnull public static DenseMatrix identity(int rowDimension, int columnDimension)
rowDimension - Number of rows.columnDimension - Number of columns.