/* AUTO-GENERATED */
package jsci.maths.matrices;
import jsci.maths.ArrayMath;
import jsci.maths.Complex;
import jsci.maths.ComplexMapping;
import jsci.maths.DimensionException;
import jsci.maths.LinearMath;
import jsci.maths.MaximumIterationsExceededException;
import jsci.maths.groups.AbelianGroup;
import jsci.maths.vectors.AbstractComplexVector;
import jsci.maths.vectors.ComplexVector;
/**
* The ComplexSquareMatrix class provides an object for encapsulating square matrices containing complex numbers.
* @version 2.2
* @author Mark Hale
*/
public class ComplexSquareMatrix extends AbstractComplexSquareMatrix {
/**
* Arrays containing the elements of the matrix.
*/
protected final double matrixRe[][],matrixIm[][];
/**
* Constructs a matrix by wrapping two arrays.
* @param arrayRe an array of real values
* @param arrayIm an array of imaginary values
* @exception MatrixDimensionException If the array is not square.
*/
public ComplexSquareMatrix(final double arrayRe[][],final double arrayIm[][]) {
super(arrayRe.length);
if(!ArrayMath.isSquare(arrayRe))
throw new MatrixDimensionException("Array is not square.");
if(!ArrayMath.isSquare(arrayIm))
throw new MatrixDimensionException("Array is not square.");
matrixRe=arrayRe;
matrixIm=arrayIm;
}
/**
* Constructs an empty matrix.
* @param size the number of rows/columns
*/
public ComplexSquareMatrix(final int size) {
this(new double[size][size], new double[size][size]);
}
/**
* Constructs a matrix from an array.
* @param array an assigned value
* @exception MatrixDimensionException If the array is not square.
*/
public ComplexSquareMatrix(final Complex array[][]) {
this(array.length);
for(int i=0;i=0 && i=0 && j=0 && i=0 && j=0 && i=0 && j=0 && i=0 && j=0 && i=0 && j
-norm.
* @author Taber Smith
*/
public double infNorm() {
double result=0.0,tmpResult;
for(int i=0;iresult)
result=tmpResult;
}
return result;
}
/**
* Returns the Frobenius or Hilbert-Schmidt (l2) norm.
* @jsci.planetmath FrobeniusMatrixNorm
* @author Taber Smith
*/
public double frobeniusNorm() {
double result=0.0;
for(int j,i=0;imax) {
max=tmp;
pivotrow=i;
}
}
// swap row j with pivotrow
if(pivotrow!=j) {
double[] tmprow = arrayURe[j];
arrayURe[j] = arrayURe[pivotrow];
arrayURe[pivotrow] = tmprow;
tmprow = arrayUIm[j];
arrayUIm[j] = arrayUIm[pivotrow];
arrayUIm[pivotrow] = tmprow;
int k=pivot[j];
pivot[j]=pivot[pivotrow];
pivot[pivotrow]=k;
// update parity
pivot[N]=-pivot[N];
}
// divide by pivot
double tmpRe=arrayURe[j][j];
double tmpIm=arrayUIm[j][j];
if(Math.abs(tmpRe)
Ads help maintain this website.