domingo, 5 de abril de 2009

Sistema de Ecuaciones

public class Matriz {
int numeroFilas;
int numeroColumnas;
double [][] matriz;

public Matriz(){}

public Matriz(int nF, int nC){
numeroFilas = nF;
numeroColumnas = nC;
matriz = new double[numeroFilas][numeroColumnas];

for(int i = 0; i < numeroFilas; i++)
for(int j = 0; j < numeroColumnas; j++)
matriz[i][j] = 0;
}

public String imprimir1(){
String aux ="";

for(int i = 0; i < numeroFilas; i++){
for(int j = 0; j < numeroColumnas; j++){
aux = aux + matriz[i][j] +" ";
}
aux = aux + "\n";
}

return aux;
}

public String imprimir2(){
String aux ="";
aux=aux+"x1="+ matriz[0][0];
aux=aux+"\n";
aux=aux+"x2="+matriz[1][0];
return aux;
}


public Matriz multiplicacion(Matriz B){
if(this.numeroFilas==B.numeroColumnas){
Matriz r =new Matriz(this.numeroFilas,this.numeroColumnas);
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;
}
else{
Matriz r=new Matriz(1,1);
System.out.println("No esta definida la multiplicacion de estas matrices");
return r;
}
}
}

public Matriz inversa(){
Matriz result=new Matriz(this.numeroFilas,this.numeroColumnas);
double tmp;//variable temporal
Matriz I=new Matriz(this.numeroFilas,this.numeroColumnas*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.numeroFilas]=1.0;
}
}
for(int i=0;i
tmp=I.matriz[i][i];
for(int j=0;j<(this.numeroColumnas*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.numeroColumnas*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.numeroColumnas];
return result;
}

public static void main(String args[]){

Matriz a=new Matriz(2,2);
a.matriz[0][0]=1;a.matriz[0][1]=1;
a.matriz[1][0]=-1;a.matriz[1][1]=2;
System.out.println("la matriz a es:");
System.out.println(a.imprimir1());

Matriz b=new Matriz(2,2);
b.matriz[0][0]=1;
b.matriz[1][0]=0;
System.out.println("la matriz b es:");
System.out.println(b.imprimir1());


Matriz resultado;

resultado=a.inversa();
System.out.println("la matriz inversa de a es:");
System.out.println(resultado.imprimir1());

resultado=a.inversa().multiplicacion(b);
System.out.println("las soluciones del sistema:");
System.out.println(" X1+ X2=1");
System.out.println("-X1+2X2=0");
System.out.println("son:");
System.out.println(resultado.imprimir2());
}

}

4 comentarios:

  1. muy buen trabajo.. el codigo esta muy bien..

    ResponderEliminar
  2. Es un buen codigo, aunque porque no haces un metodo que haga las asignaciones en lugar de asignar manualmente los valores

    ResponderEliminar
  3. Es un programa sencillo que muestra claramente la manera de calcular un sistema de ecuaciones aunque se podría implementar un for para el segundo imprimir

    ResponderEliminar
  4. muy buuen trabajo lo veo algo resumido (no esta extenso)... gracias...

    ResponderEliminar