Está en la página 1de 15

ALGORITMOS CUANTITATIVOS

PLANEACIÓN
Basándonos desde el concepto de metodología cuantitativa que es el procedimiento
de decisión usando magnitudes numéricas que pueden ser tratadas mediante
herramientas del campo de la estadística. Por eso la metodología cuantitativa se
produce por la causa y efecto de las cosas.
Para que exista metodología cuantitativa se requiere que entre los elementos del
problema de investigación exista una relación cuya naturaleza sea representable
por algún modelo numérico ya sea lineal, exponencial o similar.
OBJETIVO:
Un algoritmo cuantitativo es aquel que utiliza la lógica matemática para para dar
solución a los problemas para los que fueron diseñados.
CARACTERÍSTICAS:

 Necesita que haya una relación numérica entre las variables del problema de
investigación.
 Los datos analizados siempre deben ser cuantificables.
 Es descriptivo.
 Analiza y predice el comportamiento de las personas.

Un ejemplo sencillo de este proceso seria:


1.-Descubrir los pasos para sumar dos números
 Solicitar los números a sumar.
 Tomar el primer número y a este sumarle el segundo.
 Dar el resultado de la operación anterior.
2.-Otra representación seria la siguiente
 Inicio
 Declarar (a, b,c)
 Ingresar (a, b)
 c=a+b
 Mostrar (c)
 Fin

1
Martínez González Emilio
Computación 8CM11
En este caso para el desarrollo de este tema utilizare el método de eliminación de
gauss-jordan para analizar un algoritmo cuantitativo.
ELIMINACIÓN DE GAUSS-JORDAN
En matemáticas, la eliminación de Gauss Jordan, llamada así en honor de Carl
Friedrich Gauss y Wilhelm Jordan es un algoritmo del álgebra lineal que se usa para
determinar las soluciones de un sistema de ecuaciones lineales, para encontrar
matrices e inversas. Un sistema de ecuaciones se resuelve por el método de Gauss
cuando se obtienen sus soluciones mediante la reducción del sistema dado a otro
equivalente en el que cada ecuación tiene una incógnita menos que la anterior. El
método de Gauss transforma la matriz de coeficientes en una matriz triangular
superior. El método de Gauss-Jordan continúa el proceso de transformación hasta
obtener una matriz diagonal.
ALGORITMO DE ELIMINACIÓN DE GAUSS-JORDAN
1. Ir a la primera columna no cero de izquierda a derecha.
2. Si la primera fila tiene un cero en esta columna, intercambiarlo con otra que
no lo tenga.
3. Luego, obtener ceros debajo de este elemento delantero, sumando múltiplos
adecuados del renglón superior a los renglones debajo de él.
4. Cubrir el renglón superior y repetir el proceso anterior con la sub-matriz
restante. Repetir con el resto de los renglones (en este punto la matriz se
encuentra en forma escalonada).
5. Comenzando con el último renglón no cero, avanzar hacia arriba: para cada
renglón obtener 1 delantero e introducir ceros arriba de este sumando
múltiplos correspondientes a los renglones correspondientes.

2
Martínez González Emilio
Computación 8CM11
ANÁLISIS
ALGORITMO MATEMÁTICO.
Supongamos que es necesario encontrar los números "x", "y", "z", que satisfacen
simultáneamente estas ecuaciones:

Esto es llamado un sistema lineal de ecuaciones. El objetivo es reducir el sistema a


otro equivalente, que tenga las mismas soluciones.
En nuestro ejemplo, eliminamos x de la segunda ecuación sumando 3/2 veces la
primera ecuación a la segunda y después sumamos la primera ecuación a la tercera.
El resultado es:

Ahora eliminamos y de la primera ecuación sumando -2 veces la segunda ecuación


a la primera, y sumamos -4 veces la segunda ecuación a la tercera para eliminar y.

Finalmente eliminamos z de la primera ecuación sumando -2 veces la tercera


ecuación a la primera, y sumando 1/2 veces la tercera ecuación a la segunda para
eliminar z.

Despejando, podemos ver las soluciones:

3
Martínez González Emilio
Computación 8CM11
Para clarificar los pasos, se trabaja con la matriz aumentada. Podemos ver los 3
pasos en su notación matricial:
Primero:

Después,

Por último.

Si el sistema fuera incompatible, entonces nos encontraríamos con una fila como
esta:

4
Martínez González Emilio
Computación 8CM11
DISEÑO

Figura 1
Diagrama de
flujo Se
representa
método de
Gauss-Jordan

5
Martínez González Emilio
Computación 8CM11
*Uso de
pivote para
simplificar
el método

6
Martínez González Emilio
Computación 8CM11
IMPLEMENTACIÓN Y PROCESAMIENTO
Para esta aplicación el código será desarrollado en lenguaje c# en el IDE Microsoft
Visual Studio 2017.
La forma de desarrollo de este proyecto fue Windows form.
Código.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GaussJordan
{
public partial class Form1 : Form
{
double[,] matriz = new double[3, 4];
public Form1()
{
InitializeComponent();
}
private void btnResolver_Click(object sender, EventArgs e)
{
//verificamos informacion de matriz
if (verificarInfo())
{
//leemos informacion de textbox y generamos la matriz.
7
Martínez González Emilio
Computación 8CM11
if (obtenerMatriz())
{
//Verificar si existe algun pivote en las filas que se pueda intercambiar
buscarPivoteIntercambiar(matriz);
//comenzamos a checar matriz para ir determinando matriz invertida
algoritmoGauss(matriz);
//dibujar matriz final y valores de las incognitas
dibujarResultado(matriz);
}
}
else { MessageBox.Show("Favor de rellenar informacion de matriz."); }
}
private Boolean verificarInfo()
{
//Verificamos que contenga informacion en todos los datos de matriz
foreach (Control txt in tlpMatriz.Controls)
{
if (txt is TextBox)
{
if (txt.Text == "")
{
return false;
}
}
}
return true;
}

8
Martínez González Emilio
Computación 8CM11
private Boolean obtenerMatriz()
{
try
{
rchTeOperaciones.Text = "* Obteniendo Matriz ..." +
Environment.NewLine;
foreach (Control txt in tlpMatriz.Controls)
{
if (txt is TextBox)
{
//obtenemos nombre de textbox
string nom = txt.Name;
int posX = Convert.ToInt32(nom.Substring(1, 1));
int posY = Convert.ToInt32(nom.Substring(2, 1));
matriz[posX, posY] = Convert.ToDouble(txt.Text);
}
}
//dibujamos matriz en textbox
int tamMatrizX = matriz.GetUpperBound(1);
int tamMatrizY = matriz.GetUpperBound(0);

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


{
for (int j = 0; j <= tamMatrizX; j++)
{
rchTeOperaciones.Text += "" + Environment.NewLine + "Elemento ["
+ i + "," + j + "]" + " : " + matriz[i, j];
}
}
9
Martínez González Emilio
Computación 8CM11
rchTeOperaciones.Text += "" + Environment.NewLine +
Environment.NewLine;
rchTeOperaciones.Text += "* La matriz aumentada es : " +
Environment.NewLine + Environment.NewLine;
for (int i = 0; i <= tamMatrizY; i++)
{
for (int j = 0; j <= tamMatrizX; j++)
{
rchTeOperaciones.Text += " " + matriz[i, j] + " ";
}
rchTeOperaciones.Text += Environment.NewLine;
}
return true;
}
catch (Exception)
{
return false;
}
}
private void buscarPivoteIntercambiar(Double[,] matriz)
{
//obtenemos el tamaño de la matriz
int tamMatriz = matriz.GetUpperBound(1);
int pivote = 0;
rchTeOperaciones.Text += " " + Environment.NewLine +
Environment.NewLine;

10
Martínez González Emilio
Computación 8CM11
for (int i = 0; i < tamMatriz; i++)
{
rchTeOperaciones.Text += "* Buscando elementos que sirvan de pivote ,
Columna : " + i + Environment.NewLine;
//verificamos si elemento pivote ya contiene un 1
if (matriz[pivote, pivote] != 1)
{
for (int r = 0; r < tamMatriz; r++)
{
if (Convert.ToString(matriz[r, i]) == "1" && ((r + i) != (pivote + pivote)))
{
rchTeOperaciones.Text += "* Se localizo un pivote en la columna
:" + i + Environment.NewLine;
for (int j = 0; j < tamMatriz + 1; j++)
{
Double temp = matriz[pivote, j];
matriz[pivote, j] = matriz[r, j];
matriz[r, j] = temp;
}
rchTeOperaciones.Text += "* Se cambia renglon : " + i + " por
renglon :" + r + Environment.NewLine;
rchTeOperaciones.Text += "" + Environment.NewLine +
Environment.NewLine;
rchTeOperaciones.Text += "* La nueva matriz aumentada es : " +
Environment.NewLine + Environment.NewLine;
for (int re = 0; re <= 2; re++)
{
for (int j = 0; j <= 3; j++)
{

11
Martínez González Emilio
Computación 8CM11
rchTeOperaciones.Text += Environment.NewLine;
}
buscarPivoteIntercambiar(matriz);
}
}
}
pivote++;
}
}
private void dibujarResultado(Double[,] matriz)
{
int tamMatriz = matriz.GetUpperBound(1);
rchTeOperaciones.Text += Environment.NewLine;
rchTeOperaciones.Text += "* Resultados Finales : " +
Environment.NewLine;
for (int i = 0; i <= tamMatriz - 1; i++)
{
rchTeOperaciones.Text += "Valor x" + i + " : " + matriz[i, tamMatriz] +
Environment.NewLine;
}
rchTeOperaciones.Text += "Proceso terminado" + Environment.NewLine;
}
private void algoritmoGauss(Double[,] matriz)
{
int tamMatriz = matriz.GetUpperBound(1);
int pivote = 0;
for (int i = 0; i <= tamMatriz - 1; i++)
{

12
Martínez González Emilio
Computación 8CM11
if (matriz[i, i] == 0)
{
rchTeOperaciones.Text += "Error: " + "no es posible resolver ecuacion";
}
else
{
if (matriz[i, i] != 1)
{
Double divisorPiv = matriz[i, i];
for (int col = 0; col <= tamMatriz; col++)
{
matriz[i, col] = matriz[i, col] / divisorPiv;
}
}
for (int ren = 0; ren < tamMatriz; ren++)
{
if (ren != pivote)
{
Double val0 = -Convert.ToDouble(matriz[ren, i]);
for (int col = 0; col <= tamMatriz; col++)
{
matriz[ren, col] = matriz[i, col] * val0 + matriz[ren, col];
}
}
}
}
pivote++;

13
Martínez González Emilio
Computación 8CM11
CAPTURAS DE LA INTERFAZ GRÁFICA.

Fig 2 Se despliega el resultado del método aplicado al sistema de


ecuaciones previamente analizado en el modelo matemático.

14
Martínez González Emilio
Computación 8CM11
MANTENIMIENTO
ANÁLISIS DE RESULTADOS
El desarrollo de este algoritmo se realizó de una manera metodológica ya que hace
uso de la lógica matemática y específicamente de un método matemático, el cual
requiere de ciertos pasos que siguen una secuencia.
Atendiendo los resultados obtenidos se concluye que el método de Gauss-Jordán
tiene un nivel de precisión y exactitud adecuados en cuanto a solución de sistemas
de cualquier orden, Por lo tanto, es recomendable utilizar cualquier modelo pues se
llega al resultando.
ANÁLISIS DE SU COMPLEJIDAD
La complejidad computacional de la eliminación gaussiana es de aproximadamente
n3. Esto es, el número de operaciones requeridas es del orden de n3 si el tamaño
de la matriz es n × n.
Esto quiere decir que el problema a resolver con este algoritmo tiene una forma
polinómica y entonces se dice que dicho problema se puede resolver en un tiempo
polinómico.
De esta manera yo podría clasificar este problema en la clasificación de TIPO P.

15
Martínez González Emilio
Computación 8CM11

También podría gustarte