Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Análisis
Luego de llevar a cabo mediciones de tiempo de ejecución en un sistema con dimensiones n×n, donde n se encuentra
dentro del intervalo [1, 200], se ha identificado que el comportamiento del tiempo de ejecución en base al tamaño
del sistema del método utilizado es de tipo potencial, esto se puede ver en la gráfica 1. Este comportamiento está
directamente asociado con la naturaleza del proceso de convertir una matriz cuadrada en una matriz triangular
superior, esto debido a que se debe de iterar sobre los elementos de la matriz para normalizarla y transformarla. La
normalización por si sola ya requiere iterar sobre todos los elementos de la matriz, lo cual es ejecutar, aproximada-
mente, n2 instrucciones, lo que en sistemas grandes aporta mucho al tiempo de ejecución. El pivoteo y transformar
la matriz a su forma triangular superior también aportan bastante, ya que en el pivoteo es necesario recorrer toda
una columna para encontrar el valor máximo y, además, recorrer todo un renglón para intercambiar los renglones,
y por último recorrer todos los renglones debajo del pivote para que las entradas de la columna debajo del él sean
0.
Por ende, el comportamiento potencial en la implementación del método radica en la necesidad de realizar
múltiples operaciones sobre los elementos de la matriz, especialmente al iterar a lo largo de sus filas y columnas
para alcanzar la forma triangular superior deseada. Esta repetición de operaciones en los elementos de la matriz
conforme se ajustan para cumplir con las condiciones deseadas, resulta en un tiempo de ejecución prolongado
conforme aumenta el tamaño de la matriz.
60
Tiempo de ejecución (s)
50
40
30
20
10
1
2 Memoria de cálculo
La memoria de cálculo para un sistema de ecuaciones 10 × 10:
Matriz original:
−4 2 4 1 6 −1 −2 −2 −8 −8 −8
−8 −3 8 6 10 5 −10 10 −3 10 3
10
−5 5 3 9 2 −6 8 −6 −10 0
5
−10 9 −6 −4 −10 −2 −5 8 7 −7
9 −6 −3 7 6 5 −10 −10 −1 7 9
(1)
5
−3 −4 7 7 −4 1 −2 −10 −7 7
−10 −9 1 −5 −7 −3 6 −7 10 6 5
−9 1 8 −1 8 −9 1 2 −2 −7 7
0 2 −2 −4 −6 −9 −10 1 −2 1 2
−9 1 −10 −5 −2 −2 0 4 −7 3 −8
x1 = −0.584573
x2 = −0.14098
x3 = −1.4577
x4 = 2.06151
x5 = 0.660853
x6 = −0.991172
x7 = −0.799541
x8 = 0.371929
x9 = 2.4075
x10 = −0.895181
2
3 Código Octave para implementar el método de reducción Gaussiana.
1 minValores = -10; % Minimo valor para la generacion aleatoria
2 maxValores = 10; % Maximo valor para la generacion aleatoria
3
9 % Se define una funcion que llenara la matriz dada con entradas aleatorias
10 function [ matrizFinal , matrizTIFinal ] = ll e n a rC o n Al e a to r i os ( matriz , matrizTI ,
minValores , maxValores )
11 ancho = size ( matriz ) (1) ;
12 alto = size ( matriz ) (2) ;
13
48 matrizFinal = matriz ;
49 matrizTIFinal = matrizTI ;
50 endfunction
51
3
53 function [ matrizFinal , matrizTIFinal ] = i n t e r c a m b i a r R e n g l o n M a x i m o ( columna ,
matriz , matrizTI )
54 ancho = size ( matriz ) (1) ;
55 alto = size ( matriz ) (2) ;
56
77 matrizFinal = matriz ;
78 matrizTIFinal = matrizTI ;
79 endfunction
80
4
104 % restarle el valor de dicha entrada , pero para mantener la equivalencia
105 % se hara lo mismo en todo el renglon .
106 factor = matriz (i , columna ) ;
107 for j =1: size ( matriz ) (2)
108 % Se resta el factor multiplicado por la entrada del renglon del pivote
109 % con quien comparte columna el elemento actual .
110 matriz (i , j ) = matriz (i , j ) - factor * matriz ( columna , j ) ;
111 endfor
112 % Se hace lo mismo , pero para la entrada en la matriz de terminos
independientes
113 m a t r i z T e r m i n o s I n d e p e n d i e n t e s (i ,1) = m a t r i z T e r m i n o s I n d e p e n d i e n t e s (i ,1) -
factor * m a t r i z T e r m i n o s I n d e p e n d i e n t e s ( columna ,1) ;
114 endfor
115 endif
116 % Se devuelven las matrices
117 resultado1 = matriz ;
118 resultado2 = m a t r i z T e r m i n o s I n d e p e n d i e n t e s ;
119 endfunction
120
127 matriz = r1 ;
128 m a t r i z T e r m i n o s I n d e p e n d i e n t e s = r2 ;
129 endfor
130 % Devuelve las matrices resultantes del proceso
131 resultado1 = matriz ;
132 resultado2 = m a t r i z T e r m i n o s I n d e p e n d i e n t e s ;
133 endfunction
134
149
5
155 % Se recorre columna por columna
156 for j =0: columnas -1
157 % Cuando el numero de renglon sea igual al de columna ( un pivote ) se
158 % despejara el termino que lo acompana y pasara dividiendo
159 if ( ( renglones - i ) ==( columnas - j ) )
160 % Se despeja X
161 valorX = valorX /( matriz (( renglones - i ) ,( columnas - j ) ) ) ;
162 % Se guarda su valor
163 valoresX (1 , columnas - j ) = valorX ;
164 % Termina el ciclo
165 break ;
166 else
167 % Si eso no pasa , se van despejando los demas terminos pasandolos al
168 % otro lado restando , los valores de X anteriores al que se quiere
calcular
169 % ya deberian estar calculados , asi que se puee usar su valor .
170 valorX = valorX -
matriz (( renglones - i ) ,( columnas - j ) ) * valoresX (1 ,( columnas - j ) ) ;
171 endif
172 endfor
173 endfor
174 % Devuelve la matriz de resultados
175 resultado = valoresX ;
176 endfunction
177