You are on page 1of 11

Mtodo 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 solucin de un sistema de ecuaciones
\n\t\tlineales a travs del mtodo Gauss_Jordan **");
System.out.println("\nCuantas 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]);
}

}
}

Gauss Jordan
Actualizado en:marzo 26, 2014

Es una variante del mtodo de gauss, en lugar de obtener una matriz triangular obtendremos una
matriz identidad, por consiguiente no ser necesario hacer sustitucin hacia atrs para obtener
nuestra solucin.

Ejemplo

Normalizar la primera fila hacer 1 el primer elemento dividiendo toda la fila entre 3

Hacer ceros la primera columna


Fila pivote = primera fila
k = 0.1 * 1, la segunda fila ser = segunda fila (k * fila pivote)
k = 0.3 * 1, la tercera fila ser = tercera fila (k * fila pivote)

Se repite el mismo proceso para la segunda columna (fila pivote = segunda fila) y la tercera
(fila pivote = tercera fila) para obtener la solucin siguiente:

Algoritmo escrito en C# para la solucin de un sistema de ecuaciones por el mtodo de gauss-


jordan

private void GJ(ref double[,] matrix, int filas, int columnas)


{
for (int fpivot = 0; fpivot < filas; fpivot++)
{

double nor = matrix[fpivot, fpivot];

for (int i = 0; i < columnas; i++)


{
matrix[fpivot, i] = matrix[fpivot, i] / nor;
}

int f = fpivot + 1;
if (f == filas) f = 0;

for (int fila = 0; fila < filas - 1; fila++)


{
double k = matrix[f, fpivot];
for (int c = fpivot; c < columnas; c++)
{
matrix[f, c] = matrix[f, c] - (k * matrix[fpivot, c]);
}

if (f == filas - 1) f = 0;
else f++;
}
}
}
void GaussJordan()
{
int i=0;
for(i=1;i<=n;i++)
Pivot(i);
Sustitucion();
}
void Pivot(int i)
{
int j,k;
double tmp,cte;
for(j=i+1;j<=n;j++)//
if(Math.abs(a[i][i])< Math.abs(a[j][i]))
{
for(k=i;k<=n+1;k++) //
{
tmp= a[i][k];
a[i][k]=a[j][k];
a[j][k]=tmp;
}
}
for(k=i;k<=n+1;k++)
{
cte=(1/(a[i][i]));
a[i][k]=((a[i][k])*cte);
}
/*eliminacion*/
for(k=i+1;k<=n;k++)
for(j=i;j<=n;j++)//
a[k][j]=a[k][j] + (a[j][j] * (-a[k][i]));//
}
void Sustitucion()
{
int k,j;
double suma=0;
x[n]=a[n][n+1];
for(k=n-1;k>=1;k--)
{
suma=0;
for(j=k+1;j<=n;j++)
suma+= a[k][j] * x[j];
x[k]=a[k][n+1] - suma;
}
}

Algoritmo para calcular el area y perimetro de un circulo

Formulas que se ocuparan para encontrar area y perimetro de un circulo

AREA =pi * radio *radio

PERIMETRO= 2*pi * radio

Variables de entrada = Radio

Variables de salida =Perimetro

Leer la variable de entrada Radio

Aplicar las formulas

Area= pi *radio* radio

Perimetro = 2 * n *radio

Mostrar las variables de salida AREA Y PERIMETRO

DIAGRAMA DE FLUJO
L rea de un circulo es igual al valor de su radio elevado al cuadrado multiplicado por (pi)

Hacer un algoritmo para un programa que calcule el rea de crculo y longitud de circunferencia.
Utilizar procedimientos.

Algoritmo
Inicio
Declare r;
Declare circulo(m)
Leer r
circulo(r)
Fin

Procedimiento circulo(m)
Inicio
Declare pi
Pi 3.1416
Imprimir pi*m*m
Imprimir 2*pi*m
Fin

Variables
r : valor ingresado
Circulo : funcion
m : toma el valor de r
pi : guarda el valor 3.1416

Programa
#include<stdio.h>
int r;
void circulo(int m);
main(void)
{
printf(" INGRESE EL VALOR DEL RADIO.. ");
scanf("%d",&r);
circulo(r); // llamada a un procedimiento
}

void circulo(int m) // procedimiento


{float pi;
pi=3.1416;
printf("AREA: %f \n",pi*m*m);
printf("LONGITUD: %f",2*pi*m);
}

Algoritmo para calcular reas:

Tringulo:

1) Solicitar datos: base (b) y altura (h).


2) Hacer operaciones correspondientes: A = (a*b)/2
3) Sacar resultados.

Crculo:

1) Solicitar datos: pi () y radio (r).


2) Hacer operaciones correspondientes: A = *r^2
3) Sacar resultados.

Cuadrado:

1) Solicitar datos: lado (l)


2) Hacer operaciones correspondientes: A = l^2
3) Sacar resultados.

Ejemplos de Algoritmos para sacar el rea de un tringulo, un crculo y un cuadrado, con su


respectivo orden:
Anuncios

Me gusta:

Ejemplo de lenguaje C - rea de una circunferencia

Teniendo en cuenta que la frmula para calcular el rea de una circunferencia es: rea de una
circunferencia = * radio2

Si en lenguaje C se quiere escribir un programa que:

1) Pida por teclado el radio (dato real) de una circunferencia.

2) Calcule el rea de la circunferencia.

3) Muestre por pantalla el resultado (dato real).

Mostrndose en pantalla, por ejemplo:


Solucin 1: utilizando dos variables

En C se puede escribir:

/* Programa: rea de una circunferencia (Solucin 1) */

#include <conio.h>
#include <stdio.h>

int main()
{
float area, radio;

printf( "\n Introduzca radio: " );


scanf( "%f", &radio );

area = 3.141592 * radio * radio;

printf( "\n El %crea de la circunferencia es: %.2f", 160, area );

printf( "\n\n Pulse una tecla para salir..." );


getch(); /* Pausa */

return 0;
}
float area, radio sirve para declarar las variables area y radio con el fin de almacenar dos
nmeros reales (float).
scanf( "%f", &radio ) permite que el usuario del programa introduzca por teclado el valor
del radio y, puesto que la variable radio es de tipo float (nmero real), se tiene que escribir
el especificador de formato asociado a la entrada de un nmero real (%f). Por otra parte, el
carcter ampersand (&) sirve para indicar la direccin de memoria de la variable radio, es
decir, la direccin de memoria donde se va a almacenar el dato introducido por el usuario.

Al escribir area = 3.141592 * radio * radio se asigna a la variable area el resultado de


aplicar la frmula del rea de la circunferencia.

Para mostrar por pantalla la letra () con tilde de la palabra (rea), en la funcin printf hay
que especificar el lugar donde se quiere mostrar escribiendo %c, e indicar el nmero
decimal que corresponde al carcter () en ASCII, es decir 160.

%.2f indica que ah se debe mostrar un nmero real (float) con dos decimales. En
concreto, se mostrar el valor de la variable area.

Solucin 2: utilizando dos variables y una constante

A continuacin, se muestra una segunda solucin en la que se hace uso de una constante:

/* Programa: rea de una circunferencia (Solucin 2) */

#include <conio.h>
#include <math.h>
#include <stdio.h>

#define PI 3.141592

int main()
{
float area, radio;

printf( "\n Introduzca radio: " );


scanf( "%f", &radio );

area = PI * pow( radio, 2 );

printf( "\n El %crea de la circunferencia es: %.2f", 160, area );

printf( "\n\n Pulse una tecla para salir..." );


getch(); /* Pausa */

return 0;
}
En lenguaje C, la directiva #define permite representar constantes simblicas. Por tanto,
con #define PI 3.141592 se declara la constante PI, indicando al preprocesador que debe
sustituir, en el cdigo fuente del programa, todas las ocurrencias de PI por la secuencia de
caracteres 3.141592, antes de la compilacin.
La funcin pow devuelve, sobre el propio identificador de la funcin, el resultado que se
obtiene de elevar el operando nmero base al operando exponente, en este caso devuelve
el resultado de elevar el valor de radio a 2. Para poder hacer uso de dicha funcin, hay
que escribir #include <math.h>. El valor de retorno de la funcin pow es de tipo double,
con independencia de que los operandos sean reales o enteros.

En C existen dos tipos de datos para expresar el tipo de dato real (float y double), la
diferencia principal entre ambos est en el hecho de que un dato de tipo double puede
tomar por valor un nmero perteneciente a un subconjunto de R mayor que un dato de tipo
float.

Solucin 3: utilizando una variable y una constante

Otra posible solucin es:

/* Programa: rea de una circunferencia (Solucin 3) */

#include <conio.h>
#include <math.h>
#include <stdio.h>

#define PI 3.141592

int main()
{
float radio;

printf( "\n Introduzca radio: " );


scanf( "%f", &radio );

printf( "\n El %crea de la circunferencia es: %.2f", 160, PI * pow( radio, 2 ) );

printf( "\n\n Pulse una tecla para salir..." );


getch(); /* Pausa */

return 0;
}

You might also like