Está en la página 1de 17

Facultad de Ingeniería en Electrónica y Comunicaciones

Ingeniería en Tecnologías Computacionales

Métodos Numéricos

Tema: Métodos en SEALS

Métodos: Gauss Jordan, Matriz Inversa y Gauss Seidel

Integrantes del Equipo: Cesia Analí Cerón Santes

Poza Rica, Ver., a 28 de otubre de 2016


Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

Tema

Enunciado del problema:


En una juguera se combinaron 3 tipos de naranja para hacer 1 tonelada por cada camión de carga.
Una tonelada lleva 200klg de la primera clase de naranja (tardía), 100klg de la segunda clase
(Mónica) y 100 klg de la tercera clase (temprana). La segunda tonelada debe llevar 100klg de la
primera clase, 200klg de la segunda clase y 300klg de la tercera clase. La tercera tonelada debe llevar
100 klg de la primera clase, 300 de la segunda clase y 180 de la tercera clase.

Si la juguera tiene en existencia 900 klg de naranja tardía, 900 klg de naranja Mónica y 900 klg de
naranja temprana. ¿cuantos camiones se pueden llenar si se usan los 3 tipos de naranja disponibles?

Figura (Esquema, diagrama, imagen, etc.)

X= tardia Y=monica Z=temprana


Primera ton. 200 100 100 =900
Segunda ton. 100 200 300 =900
Tercera ton. 100 300 180 =900

Ecuaciones:

Gauss Jordan

1.- Solución manual:

Reescribimos el sistema de ecuaciones en forma de matrices y la resolvemos por el


método de eliminación de Gauss-Jordan

R1/200 R1 (dividimos la fila entre 200)

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 2 de 17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

R2-100 R1R2 (multiplicamos la fila 1 por 100 y restamos a la fila 2); R3-100 R1 R3
(multiplicamos la fila 1 por 100 y
Restamos a la fila 3)

R3 / -860/3 R3 (dividamos la fila por -860/3)

R1+

Y restamos a la fila 2

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 3 de 17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

3.- Código del Programa (C++):


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

int main()

{
int num_inc, i, j, k, x, y;
printf(" ** SISTEMAS DE ECUACIONES ALGEBRAICAS LINEALES SIMULTANEAS **.\n ");
printf("METODO DE GAUSS-JORDAN \n\n");
printf(" cuantas incognitas tienes: ");
scanf(" %d", &num_inc);
float matriz[num_inc][num_inc+1], recu[1][num_inc+1], incog[num_inc], aux0, aux1, aux2, ayuda;
printf("\n Introduce los valores de tu sistema de ecuaciones en la matriz:\n\n");
for(i=0;i<num_inc;i++)
{
for(j=0;j<num_inc+1;j++)
{
printf(" Fila %d, columna %d: ", i+1, j+1);
scanf(" %d", &k);
matriz[i][j] = k;
}
printf("\n");
}
printf("\n\n Tu sistema seria el siguiente: \n\n");
for(i=0;i<num_inc;i++)
{
for(j=0;j<num_inc+1;j++)
{
printf(" %.1f ", matriz[i][j]);
}
printf("\n");
}
for(i=0;i<num_inc-1;i++)
{
aux1 = matriz[i][i];
for(j=i+1;j<num_inc;j++)
{
aux2 = matriz[j][i];
for(k=i;k<num_inc+1;k++)
{
aux0 = matriz[i][k];
recu[0][k] = aux0;
aux0 = aux0*aux2*(-1);
matriz[i][k] = aux0;
aux0 = matriz[j][k];
aux0 = aux0*aux1*1;
matriz[j][k] = aux0;
}
for(y=0;y<num_inc+1;y++)
{
aux0 = matriz[i][y] + matriz[j][y];
matriz[j][y] = aux0;
}
for(x=i;x<num_inc+1;x++)
{
aux0 = recu[0][x];
matriz[i][x] = aux0;
}
}
}

printf("\n Tus incognitas son: ");


for(i=0;i<num_inc;i++)
{
printf("\n Incognita numero %d: %.2f", i+1, incog[num_inc-i-1]);
}
return 0;
}

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 4 de 17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

4.- Datos del programa: (Imprimir pantalla de la ejecución del programa).

5.- Resultados del programa: (Imprimir pantalla de la ejecución del programa).

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 5 de 17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 6 de 17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

Tema

Enunciado del problema:


Se desea hacer 3 tipos de gel antibacterial casero (3 marcas de gel diferente) teniendo en cuenta que se necesitan 3
ingredientes para formar uno solo. La propuesta para la primera marca de gel, es que debe contener 3.0 ml del
ingrediente 1 (x1), 0.1 mlmenos del ingrediente 2 (x2), y 0.2 ml menos del ingrediente 3 (x3).
Se propone que la segunda marca de gel contenga 0.1 ml del ingrediente 1, 7.0 ml del ingrediente 2 y 0.3 ml menos del
ingrediente 3 del total a utilizar.
Para la tercer marca de gel se deben utilizar 0.3 ml el ingrediente 1. 0.2 ml menos del ingrediente 2 y 10.0 mil menos
del ingrediente 3.
En total tenemos en existencia 7.85 ml del ingrediente 1, 19.30 ml menos del total del ingrediente 2 y 71.40 ml del
ingrediente 3.
¿Cuántas unidades de las tres marcas de gel se pueden hacer teniendo en cuenta los mil existentes?

Figura

Ecuaciones:

Gauss Seidel

1.- Solución manual:

SOLUCIÓN

Suponemos los valores ini ciales X2=0, X3=0 y calculamos X1

Este valor junto con el de X3 se puede utilizar para obtener X 2

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 7 de 17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

La primera iteración se completa sustituyendo los valores de X 1 y X2 calculados obteniendo:

En la segunda itera ción, se repite el mismo procedimiento:

Comprobando los valores calculados entre la primera y la segunda iteración

Como podemos observar, no se cumple con la condición

Entones tomamos los valores calculados en la última iteración y se toman como supuestos para la siguiente
iteración. Se repite entones el proceso:

Comparando de nuevo los valores obtenidos

Como se observa todavía no se cumple la condición

Así que hacemos otra iteración

Comparando los valores obtenidos

Dado que se cumple la condición, el resultado es:

X1= 3.0
X2= -2.5
X3= 7.0

3.- Código del Programa (C++):


______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 8 de 17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

#include <stdio.h>
#include <math.h>
#include <conio.h>
#define L 10
#define A L
main()
{
float M[L][A],X[L],CX[L],C[L];
float a, b, c, d, e, f;
int it,ini,n,x,y,z;
printf("Solucion de ecuaciones simultaneas por el metodo de Gauss-Seidel");
printf("Cuantas incognitas tendra el sistema: ");
scanf("%d",&n);

for(x=0;x<n;x++)
{
CX[x]=0;
X[x]=0;
}

for(y=0;y<n;y++)
{
for(x=0;x<n;x++)
{
printf("A[%d][%d] = ",y,x);
scanf("%f",&e);
M[y][x]=e;
}
printf("Y la constante C[%d] = ",y);
scanf("%f",&f);
C[y]=f;
}

for(it=0;it<20;it++)
{
for(y=0;y<n;y++)
{
for(x=0;x<n;x++)
CX[y]-=(M[y][x]*X[x])/M[y][y];
CX[y]+=(C[y]/M[y][y]);
X[y]=CX[y];
}
}
printf("El resultado es ");
for(x=0;x<n;x++)
printf("nX[%d]=%f",x+1,X[x]);
getch();
}

4.- Datos del programa: (Imprimir pantalla de la ejecución del programa).

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 9 de 17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

5.- Resultados del programa: (Imprimir pantalla de la ejecución del programa).

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 10 de
17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 11 de
17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

Tema

Enunciado del problema:

Para la elaboración de dos galletas se necesitan 2 "ingredientes secretos" para que tengan mejor
sabor.
La primera galleta debe llevar 2 gr del ingrediente 1 (x), 3 gr del ingrediente 2. La segunda galleta
debe de llevar 3gr del ingrediente 1 y 5gr del ingrediente 2.
Si contamos únicamente con 24gr del ingrediente 1 y 37 gr del ingrediente 2. ¿Cuántas galletas se
pueden producir si se usan los dos tipos de ingredientes disponibles?

Figura (Esquema, diagrama, imagen, etc.)

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 12 de
17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

Ecuaciones:

2x1-3x2=8
3x1+5x2=9

MATRIZ INVERSA

1.- Solución manual:

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 13 de
17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

3.- Código del Programa (C++):


______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 14 de
17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

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

int main()

{
int num_inc, i, j, k, x, y;
printf(" ** SISTEMAS DE ECUACIONES ALGEBRAICAS LINEALES SIMULTANEAS **.\n ");
printf("METODO DE GAUSS-JORDAN \n\n");
printf(" cuantas incognitas tienes: ");
scanf(" %d", &num_inc);
float matriz[num_inc][num_inc+1], recu[1][num_inc+1], incog[num_inc], aux0, aux1, aux2;
printf("\n Introduce los valores de tu sistema de ecuaciones en la matriz:\n\n");
for(i=0;i<num_inc;i++)
{
for(j=0;j<num_inc+1;j++)
{
printf(" Fila %d, columna %d: ", i+1, j+1);
scanf(" %d", &k);
matriz[i][j] = k;
}
printf("\n");
}
printf("\n\n Tu sistema seria el siguiente: \n\n");
for(i=0;i<num_inc;i++)
{
for(j=0;j<num_inc+1;j++)
{
printf(" %.1f ", matriz[i][j]);
}
printf("\n");
}
for(i=0;i<num_inc-1;i++)
{
aux1 = matriz[i][i];
for(j=i+1;j<num_inc;j++)
{
aux2 = matriz[j][i];
for(k=i;k<num_inc+1;k++)
{
aux0 = matriz[i][k];
recu[0][k] = aux0;
aux0 = aux0*aux2*(-1);
matriz[i][k] = aux0;
aux0 = matriz[j][k];
aux0 = aux0*aux1*1;
matriz[j][k] = aux0;
}
for(y=0;y<num_inc+1;y++)
{
aux0 = matriz[i][y] + matriz[j][y];
matriz[j][y] = aux0;
}
for(x=i;x<num_inc+1;x++)
{
aux0 = recu[0][x];
matriz[i][x] = aux0;
}

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 15 de
17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

}
}

printf("\n Tus incognitas son: ");


for(i=0;i<num_inc;i++)
{
printf("\n Incognita numero %d: %.2f", i+1, incog[num_inc-i-1]);
}
return 0;
}

4.- Datos del programa: (Imprimir pantalla de la ejecución del programa).

5.- Resultados del programa: (Imprimir pantalla de la ejecución del programa).

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 16 de
17
Fac. de Ingeniería en Electrónica y Comunicaciones, U.V. Métodos Numéricos
Dr. Silverio Pérez Cáceres

______________________________________________________________________________________________________________
Feb’10 – Ago’10 Equipo N° ## 17 de
17

También podría gustarte