|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--matrixsolution.MatrixSolver | +--matrixsolution.IterativeMatrixSolver | +--matrixsolution.EigenInverseIterationSolver
Busca los Eigen valores y Eigen vectores (propios o caracteristicos) de una matriz cuadrada por el metodo de Iteracion Inversa (o de Potencia Inverso). Solo se puede usar un objeto en todo el programa. Se necesitaria cambiar todos las demas clases.
Field Summary | |
private double[] |
eigenValues
Valores propios. |
private double[][] |
eigenVectors
Vectores propios. |
private int |
indexMaxAbs
Indice del primer maximo valor absoluto. |
private SquaredMatrix |
matrIden
Matriz identidad solo inicializarla una vez. |
private int |
n
Dimension de la matriz. |
private boolean |
solverFoundedSolution
Comunicacion entre el Solver y find(). |
Fields inherited from class matrixsolution.MatrixSolver |
found |
Constructor Summary | |
EigenInverseIterationSolver()
Vacio. |
Method Summary | |
private double |
calculateAprEigVal(SquaredMatrix A,
double[] x)
Calcula el aproximado iterativo del Eigen valor. |
double[] |
find(SquaredMatrix A,
double[] x,
double tolerance,
int iterations)
Busca los Eigen valores y Eigen vectores (propios o caracteristicos) de una matriz cuadrada simetrica por el metodo de Iteracion Inversa (o de Potencia Inverso). |
double |
findOneEigen(double[] eigX,
double aprEigVal,
int iEig,
int indexMaxAbs,
SquaredMatrix A,
double[] x,
double tolerance,
int iterations)
Encuentra un Eigen valor y Eigen vector. |
double[] |
getEigenVector(int i)
Regresa un vector propio. |
private double[] |
quitEigenContribution(double[] eigX,
int iEig)
Reduce las contribuciones de los Eigen vectores para reducir el error de redondeo numerico. |
double[] |
solve(MatrixDouble A,
double[] b,
double tolerance,
int iterations)
Llama al metodo "find" para asegurar una matriz cuadrada. |
private double[] |
solveVectorY(SquaredMatrix A,
double[] eigX,
double aprEigVal)
Resolver (A - qI) y = x. |
boolean |
wasFound()
Checa el exito del metodo. |
Methods inherited from class java.lang.Object |
|
Field Detail |
private double[][] eigenVectors
private double[] eigenValues
private int n
private int indexMaxAbs
private SquaredMatrix matrIden
private boolean solverFoundedSolution
Constructor Detail |
public EigenInverseIterationSolver()
Method Detail |
private double[] solveVectorY(SquaredMatrix A, double[] eigX, double aprEigVal)
private double[] quitEigenContribution(double[] eigX, int iEig)
private double calculateAprEigVal(SquaredMatrix A, double[] x) throws java.lang.ArithmeticException
public double findOneEigen(double[] eigX, double aprEigVal, int iEig, int indexMaxAbs, SquaredMatrix A, double[] x, double tolerance, int iterations) throws java.lang.ArithmeticException, java.lang.RuntimeException
public boolean wasFound()
wasFound
in class MatrixSolver
public double[] getEigenVector(int i) throws java.lang.IndexOutOfBoundsException
java.lang.IndexOutOfBoundsException
- Se se trata de acceder un Eigen
que no puede existir (menor que 0, o mayor que el orden de la matriz).public double[] solve(MatrixDouble A, double[] b, double tolerance, int iterations)
solve
in class IterativeMatrixSolver
find(abstractmatrix.matrixdouble.SquaredMatrix, double[], double, int)
public double[] find(SquaredMatrix A, double[] x, double tolerance, int iterations)
A
- Matriz cuadrada (n x n).x
- Vector columna (n x 1) inicial (no debe ser cero y
de preferencia de norma 1).tolerance
- Precision aceptable del error (ejemplo: 0.01)iterations
- Numero maximo de veces a ejecutar
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |