miércoles, 1 de abril de 2009

Inversa

public class Matriz {
int numfilas;
int numcolum;
double [][] matriz;

public Matriz (){}
public Matriz(int nF, int nC){
numfilas= nF;
numcolum= nC;
matriz= new double[numfilas][numcolum];
for(int i=0; i for(int j=0; j matriz[i][j]= 0;
}

public String imprimir(){
String aux = "";
for(int i=0; i for(int j=0; j aux = aux + matriz[i][j] +" ";
}
aux= aux +"\n";
}
return aux;
}

public Matriz multiplicacion(Matriz B){
Matriz r = new Matriz(this.numfilas,B.numcolum);
int j;
int k;
for(int i=0; i for(j=0; j for(k=0; k r.matriz[i][j] += this.matriz[i][k]*B.matriz[k][j];
return r;
}

public Matriz inversa(){
Matriz result=new Matriz(this.numfilas,this.numcolum);
double tmp;
Matriz I=new Matriz(this.numfilas,this.numcolum*2);
for(int i=0;i for(int j=0;j I.matriz[i][j]=0.0;
for(int i=0;i for(int j=0;j I.matriz[i][j]=this.matriz[i][j];
if (i==j)
I.matriz[i][j+this.numfilas]=1.0;
}
}
for(int i=0;i tmp=I.matriz[i][i];
for(int j=0;j<(this.numcolum*2);j++)
I.matriz[i][j]/=tmp;
for(int k=0;k if(k!=i){
tmp=I.matriz[k][i];
for(int j=0;j<(this.numcolum*2);j++)
I.matriz[k][j]-=tmp*I.matriz[i][j];
}
}
}
for(int i=0;i for(int j=0;j result.matriz[i][j]=I.matriz[i][j+this.numcolum];
return result;
}


public static void main(String args []){
Matriz m=new Matriz(2,2);
m.matriz[0][0]=1;
m.matriz[0][1]=-1;
m.matriz[1][0]=2;
m.matriz[1][1]=1;
System.out.println(m.imprimir());

Matriz b=new Matriz(2,2);
b.matriz[0][0]=3;
b.matriz[1][0]=-4;
System.out.println(b.imprimir());

Matriz resultado;
resultado=m.inversa();
System.out.println(resultado.imprimir());

resultado=m.multiplicacion(b);
System.out.println(resultado.imprimir());

resultado=m.inversa().multiplicacion(b);
System.out.println(resultado.imprimir());
}
}

2 comentarios:

  1. que bien codigo... es por el metodo de gauss.. esta muy bien

    ResponderEliminar
  2. muy buen ejemplo... aunq me parece q deberias comentar lo q hae cada clase..

    ResponderEliminar