orgposada.nummethpos.matrixsolution
Class EigenJacobiSolver

java.lang.Object
  |
  +--orgposada.nummethpos.matrixsolution.MatrixSolver
        |
        +--orgposada.nummethpos.matrixsolution.IterativeMatrixSolver
              |
              +--orgposada.nummethpos.matrixsolution.EigenJacobiSolver

public class EigenJacobiSolver
extends IterativeMatrixSolver

Busca los Eigen valores y Eigen vectores (propios o caracteristicos) de una matriz cuadrada simetrica por el metodo de Jacobi. Solo se puede usar un objeto en todo el programa. Se necesitaria cambiar todos las demas clases.

Version:
1.1, 02/12/2001 getEigenVectorsAsColumns, getEigenVectorsAsRows
Author:
Omar Posada Villarreal
See Also:
"Burden, Richard. Analisis Numerico. Pag. 528. Ejercicio9."

Field Summary
private  double[] eigenValues
          Valores propios.
private  double[][] eigVectCol
          Vectores propios, cada columna es un Eigen vector.
private  double[][] eigVectRow
          Vectores propios, cada columna es un Eigen vector.
private  double SIN_PI_4
          Constante: sin(PI/4) = squareRoot(2)/2
private  boolean solverFoundedSolution
          Comunicacion entre el Solver y find().
 
Fields inherited from class orgposada.nummethpos.matrixsolution.MatrixSolver
found
 
Constructor Summary
EigenJacobiSolver()
          Vacio.
 
Method Summary
 double[] find(SquaredMatrix matrixA, double[] vectorX, double tolerance, int iterations)
          Busca los Eigen valores y Eigen vectores (propios o caracteristicos) de una matriz cuadrada simetrica por el metodo de Jacobi.
 double[] getEigenVector(int i)
          Regresa un vector propio.
 double[][] getEigenVectorsAsColumns()
          Regresa los Eigen vectores como una matriz, cada columna es un Eigen vector.
 double[][] getEigenVectorsAsRows()
          Regresa los Eigen vectores como una matriz, cada columna es un Eigen vector.
 double[] solve(MatrixDouble A, double[] b, double tolerance, int iterations)
          Llama al metodo "find" para asegurar una matriz cuadrada.
 boolean wasFound()
          Checa el exito del metodo.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

SIN_PI_4

private final double SIN_PI_4
Constante: sin(PI/4) = squareRoot(2)/2

eigVectCol

private double[][] eigVectCol
Vectores propios, cada columna es un Eigen vector.

eigVectRow

private double[][] eigVectRow
Vectores propios, cada columna es un Eigen vector.

eigenValues

private double[] eigenValues
Valores propios.

solverFoundedSolution

private boolean solverFoundedSolution
Comunicacion entre el Solver y find().
Constructor Detail

EigenJacobiSolver

public EigenJacobiSolver()
Vacio.
Method Detail

wasFound

public boolean wasFound()
Checa el exito del metodo.
Overrides:
wasFound in class MatrixSolver

getEigenVector

public double[] getEigenVector(int i)
                        throws java.lang.IndexOutOfBoundsException
Regresa un vector propio.
Returns:
Un eigen vector. null si no se pudo encontrar por el metodo.
Throws:
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).

getEigenVectorsAsColumns

public double[][] getEigenVectorsAsColumns()
Regresa los Eigen vectores como una matriz, cada columna es un Eigen vector.
Returns:
Matriz con Eigen vectores.

getEigenVectorsAsRows

public double[][] getEigenVectorsAsRows()
Regresa los Eigen vectores como una matriz, cada columna es un Eigen vector.
Returns:
Matriz con Eigen vectores.

solve

public double[] solve(MatrixDouble A,
                      double[] b,
                      double tolerance,
                      int iterations)
Llama al metodo "find" para asegurar una matriz cuadrada. El vector "b" no se usa. Cualquier excepcion indica que no se pudo encontrar solucion.
Overrides:
solve in class IterativeMatrixSolver
See Also:
find(orgposada.nummethpos.abstractmatrix.matrixdouble.SquaredMatrix, double[], double, int)

find

public double[] find(SquaredMatrix matrixA,
                     double[] vectorX,
                     double tolerance,
                     int iterations)
              throws java.lang.RuntimeException,
                     java.lang.ArithmeticException
Busca los Eigen valores y Eigen vectores (propios o caracteristicos) de una matriz cuadrada simetrica por el metodo de Jacobi.
Parameters:
A - Matriz cuadrada (n x n).
x - No se usa. Conservar firmas uniformes.
tolerance - Precision aceptable del error (ejemplo: 0.01).
iterations - Numero maximo de veces a ejecutar.
Returns:
eigenValues[] Arreglo con los Eigen valores encontrados.
Throws:
java.lang.RuntimeException - Se excedio el maximo numero de iteraciones. No se encontro los Eigen valores y vectores.
See Also:
Checar metodo "wasFound()" para verificar el exito del metodo: false, no se encontro algun EigenVector; true, se encontraron todos., Checar metodo "getEigenVectors()" para obtener los eigen vectores.