Analisisnumericogaussypivotemaximo

Solo disponible en BuenasTareas
  • Páginas : 5 (1053 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de marzo de 2012
Leer documento completo
Vista previa del texto
Manual de Usuario

1. Se desplegará en la pantalla “MENU”
“Elija el método de resolución de ecuaciones:
1. Gauss-Jordan
2. Pivote Máximo
Opción:”
En la cual el usuario dará la opción que desee, solamente 1 ó 2, en caso de que el usuario escriba un numero diferente se repetirá el paso 1.

2. Se desplegara:
“Dimensiones de la matriz:
Filas:
Columnas:”
Si el usuario escribe Fila <0ó no cumple con la condición Fila(n) * Columna(n+1), donde n es el numero de elementos

3. Ahora se llenarán los elementos de las ecuaciones, siempre tomando en cuenta que la última columna pertenece a los resultados.
Se llenará de la siguiente manera:

Donde A [FILA] [ULTIMA COLUMNA] contiene el resultado de la ecuación

4. A continuación podemos ver las ecuaciones generadas, nótese quesolo se colocará el signo cuando el numero es negativo, sino se entenderá que es suma(positivo).

5. Podemos ver como es representado en forma de matriz

6. Y si la matriz se puede resolver por el método escogido, se mostrará:

Seguido de la impresión de los resultados de las x’s:

6.1 Si no se imprimirá lo siguiente

7. Al final aparecerá un menú:
"SUB-MENU
1. Desea repetir laoperación
2. Terminar"
Donde sí se escoge 1 se repetirá todo lo anterior, y cualquier número diferente de 1 hará que termine el programa

*Nota: No valida alfanumérico

CÓDIGO METODOS
public class metodosGaussPivote {

public void pivoteMax(float arreglo[][]){
float d = 0;//Tomara la posicion de los elementos de la diagonal principal
int j = 0;//bandera
floataux;
float r;
for(int i = 0; i < arreglo.length; i++){//FOR PRINCIPAL
d = arreglo[i][i];//posicion diagonal princ.
j = i;
for(int k = i+1; k < arreglo.length; k++)
{
if(Math.abs(arreglo[k][i]) > Math.abs(d))//1ER IF
{
j = k;
d = arreglo[k][i];}//CIERRA 1ER IF
}
if(j != i)
{//2DO IF
for(int k = 0; k<arreglo[i].length; k++)
{
aux = arreglo[i][k];
arreglo[i][k] = arreglo[j][k];
arreglo[j][k] = aux;
}
}//CIERRA 2DO IF
if(d == 0){System.out.printf("\n DET|ARREGLO| = 0");
}else{
//Rutina genera unos
for(j = 0; j< arreglo[i].length; j++)
arreglo[i][j] = (arreglo[i][j])/d;
//Rutina genera ceros
for(int k = 0; k<arreglo.length; k++){
if(k != i){
r = arreglo[k][i];for(j = 0; j < arreglo[i].length;j++)
arreglo[k][j] = arreglo[k][j] - r*arreglo[i][j];
}
}

}

}//CIERRA FOR PRINCIPAL
imprimirArray(arreglo);

}
////////////////////////////////////////////////////////
public float[][] intercambiaRenglones(float arreglo[][]){float d = 0;
int j = 0;//BANDERA
int k = 0;
float aux = 0;
float r = 0;

for(int i = 0; i<arreglo.length; i++){//Filas, ABRE FOR PRINCIPAL
d = arreglo[i][i];
if(d == 0){//IF PRINCIPAL
j = i;
for(k = i+1; k < arreglo.length; k++){//2DO FOR
if(Math.abs(arreglo[k][i]) > Math.abs(d)){//Valorabsoluto MATH.abs{
j = k;
d = arreglo[k][i];
}//CIERRA IF
}//CIERRA 2DO FOR
if (j == i)
System.out. printf("\nDETERMINANTE |ARREGLO| = 0\n");
else{
for(int k2 = 0; k2 < arreglo[i].length; k2++){//3ER FOR
aux = arreglo[i][k2];...
tracking img