MN Proyecto2
MN Proyecto2
1 Análisis
El comportamiento exponencial evidenciado en la gráfica 1, que representa el tiempo de ejecución de un algoritmo
basado en la regla de Cramer para resolver sistemas de ecuaciones, se origina en la naturaleza recursiva de la regla
de Laplace aplicada para calcular el determinante de una matriz.
Al emplear la regla de Laplace repetidamente, se requiere calcular el determinante n veces. Cada aplicación
de esta regla implica resolver determinantes de matrices de dimensiones más pequeñas. Por ejemplo, al calcular el
determinante de una matriz de tamaño n, se deben resolver n determinantes de tamaño n − 1. Luego, al resolver
cada uno de esos determinantes de tamaño n−1, se generan n−1 determinantes de tamaño n−2, y ası́ sucesivamente
hasta llegar a determinantes de tamaño 1.
Este proceso conlleva a una cascada de cálculos, donde se reducen progresivamente las dimensiones de las matrices
a evaluar. Sin embargo, la cantidad de cálculos necesarios crece exponencialmente a medida que se desciende a
matrices de menor tamaño. Por ende, el tiempo de ejecución del algoritmo se incrementa significativamente conforme
se resuelven determinantes de dimensiones más reducidas, lo que se refleja en la gráfica 1 con una tendencia
claramente exponencial.
120000
100000
80000
Tiempo de ejecución (s)
60000
40000
20000
-20000
1 2 3 4 5 6 7 8
Figure 1: Gráfica de el tiempo de ejecución en base al tamaño del sistema para el método de determinantes
1
2 Memoria de cálculo
Memoria de cálculo para un sistema de ecuaciones 8 × 8: Matriz original:
0 0 10 0 3 −10 −9 5 4
0
8 −4 9 6 −5 −1 −2 9
4 −5 3 8 2 5 −2 9 9
0 9 1 5 4 8 −6 −9 −8
7 10 −1 −10 2
(1)
−2 9 6 −9
9
2 10 −2 −5 −7 −9 8 −4
10 4 10 −3 0 5 −2 2 2
9 −4 −7 −6 −3 8 6 −9 9
2
Matriz reemplazando la columna 5 y su determinante:
0 0 10 0 4 −10 −9 5
0
8 −4 9 9 −5 −1 −2
4 −5 3 8 9 5 −2 9
0 9 1 5 −8 8 −6 −9
= 342463046
(6)
7 10
−1 −10 −9 −2 9 6
9
2 10 −2 −4 −7 −9 8
10 4 10 −3 2 5 −2 2
9 −4 −7 −6 9 8 6 −9
x1 = 1.21031
x2 = −1.33417
x3 = 0.978103
x4 = 1.37257
x5 = 0.876335
x6 = −1.04909
x7 = 1.48503
x8 = −1.10713
3
3 Código Octave para implementar el método de determinantes.
1 min = -10 % Se establece el minimo de los numeros random
2 max = 10 % Se establece el maximo de los numeros random
3
13 % Funcion que quita la primera fila y la columna " j " para crear otro
determinante
14 function resultado = reducirMatriz ( matriz , columnaEliminada )
15 % Se definen las nuevas dimensiones ( una columna y fila menos )
16 nuevasFilas = size ( matriz ) (1) -1;
17 nuevasColumnas = size ( matriz ) (2) -1;
18
4
52 % Caso base : Si la dimension de la matriz es 1 , solo se devuelve el unico
53 % valor de la matriz
54 if ( tam == 1)
55 resultado = matriz (1 ,1) ;
56 % Si no es asi , se calcula el determinante con la regla de Laplace
57 else
58 dete rminan teValo r = 0;
59 % Se recorren los elementos de la primera fila de la matriz para usarlos
60 % en la regla de Laplace
61 for j =1: ancho
62 % Se calcula el i - esimo sumando de la regla de Laplace
63 dete rminan teValo r = det ermina nteVal or +
(( -1) .^( j +1) ) * matriz (1 , j ) * determinante ( reducirMatriz ( matriz , j ) ) ;
64 % En cada iteracion , se vuelve a llamar a la funcion , y hace lo mismo
65 % pero con una matriz reducida por la funcion reducirMatriz () , asi hasta
66 % llegar a una matriz 1 x1 , de ahi se van calculando los determinantes
67 % hacia atras , es decir , recursivamente .
68 endfor
69 % Se regresa el valor del determinante
70 resultado = deter minant eValor ;
71 endif
72 endfunction
73
74 % Funcion que reemplaza una columna de la matriz con los valores de la matriz
75 % de terminos independientes
76 function resultado = reem plazar Column a ( matriz , matrizColumna , numColumna )
77 filas = size ( matriz ) (1) ;
78 columnas = size ( matriz ) (2) ;
79 matrizResultado = zeros ( filas , columnas ) ;
80 for j =1: columnas
81 for i =1: filas
82 if ( j != numColumna )
83 matrizResultado (i , j ) = matriz (i , j ) ;
84 else
85 matrizResultado (i , j ) = matrizColumna (i ,1) ;
86 endif
87 endfor
88 endfor
89 resultado = matrizResultado ;
90 endfunction
91
5
106 disp ( mensaje ) ;
107 endfor
108 endfunction
109
110 ca lc ul ar So lu ci on es ( matriz , 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 )