viernes, 20 de enero de 2012
Método de Gauss Jordan
//ALGORITMO DEL METODO DE GAUSS JORDAN
public class GaussJordan {
static void muestramatriz(float matriz[][], int var) {
for (int x = 0; x < var; x++) {
for (int y = 0; y < (var + 1); y++) {
System.out.print(" " + matriz[x][y] + " |");
}
System.out.println("");
}
}
static void pivote(float matriz[][], int piv, int var) {
float temp = 0;
temp = matriz[piv][piv];
for (int y = 0; y < (var + 1); y++) {
matriz[piv][y] = matriz[piv][y] / temp;
}
}
static void hacerceros(float matriz[][], int piv, int var) {
for (int x = 0; x < var; x++) {
if (x != piv) {
float c = matriz[x][piv];
for (int z = 0; z < (var + 1); z++) {
matriz[x][z] = ((-1 * c) * matriz[piv][z]) + matriz[x][z];
}
}
}
}
public static void main(String args[]) {
Scanner leer = new Scanner(System.in);
int var = 0, piv = 0;
float matriz[][];
System.out.println("\t ** Este programa nos muestra la solución de un sistema de ecuaciones \n\t\tlineales a través del método Gauss_Jordan **");
System.out.println("\n¿Cuantas variables tiene tu sistema?");
var = leer.nextInt();
matriz = new float[var][var + 1];
for (int x = 0; x < var; x++) {
for (int y = 0; y < (var + 1); y++) {
System.out.println("Ingresa la constante de la posicion: A[" + (x + 1) + "][" + (y + 1) + "]");
matriz[x][y] = leer.nextFloat();
}
}
for (int a = 0; a < var; a++) {
pivote(matriz, piv, var);
System.out.println("\tRenglon " + (a + 1) + " entre el pivote");
muestramatriz(matriz, var);
System.out.println("");
System.out.println("\tHaciendo ceros");
hacerceros(matriz, piv, var);
muestramatriz(matriz, var);
System.out.println("");
piv++;
}
for (int x = 0; x < var; x++) {
System.out.println("La variable X" + (x + 1) + " es: " + matriz[x][var]);
}
}
}
Suscribirse a:
Enviar comentarios (Atom)
Q bien...!!!
ResponderEliminarexcelente!! gracias
ResponderEliminarwooo.... bien! .... me sirve de mucho.... gracias!
ResponderEliminarporque no se puede hacer ecuaciones de 5 incògnitas en adelante ???????
ResponderEliminarbasándome en este código yo si pude resolver de 5 incógnitas. aquí están los métodos modificados como los necesitaba
Eliminarpublic static float[][] GaussJordan(float[][] mat){
int piv = 0;
int var = mat.length;
for (int i=0;i<var; i++) {
mat = pivote(mat, piv, var);
mat = ceros(mat, piv, var);
piv++;
}
return mat;
}
public static float[][] pivote(float mat[][], int piv, int var){
float temp = mat[piv][piv];
for (int y=0;y<(var+1);y++){
mat[piv][y] = mat[piv][y] / temp;
}
return mat;
}
public static float[][] ceros(float mat[][], int piv, int var){
for (int x=0;x<var;x++){
if (x != piv){
float c = mat[x][piv];
for (int z=0;z<(var+1);z++){
mat[x][z] = ((-c)*mat[piv][z])+mat[x][z];
}
}
}
return mat;
}
el metodo GaussJordan recibe float mat[][]={{4,12,6,8,1,6},{-8,-6,-9,6,2,-23},{6,5,-4,5,3,10},{-5,4,2,-1,4,3},{-10,5,3,6,3,-15}};
Hola, gran código. Tengo dudas en el uso y trabajo de las variables "var", "temp". Muchas gracias
ResponderEliminarGraciassss
ResponderEliminarDe nada! :)
EliminarExcelente!! Muy buen aporte. Muchas gracias :D
ResponderEliminarme salvastee graciassss
ResponderEliminarDisculpa espero lo veas pero es urgente, la parte que hace los calculos de la matriz, como puedo hacerlo metodo recursivo
ResponderEliminarExcelente aporte, gracias.
ResponderEliminar