martes, 9 de mayo de 2017

Método de Cramer

Post original: https://metodosnumericosgera.wordpress.com/2017/03/08/el-metodo-de-cramer/

El método de Cramer o regla de Cramer, es un método que sirve para resolver sistemas de ecuaciones lineales mediante el cálculo de determinante de matrices. Un determinante es un número real que corresponde a una matriz de n x n.
Para funcionar, primeramente, se necesita un sistema de ecuaciones, después, se toman los coeficientes que están antes de la igualación para formar una matriz, y los que están después de la igualación para forma una matriz de una columna (o vector), por ejemplo: dada la ecuación
formula1
Se crean las siguientes matrices:
formula2
Después, se calcula el determinante de la primera matriz; luego, la primera columna se reemplaza con la columna del vector b y se calcula su determinante detX. Se toma de nuevo la matriz original A y se reemplaza la segunda columna o columna de y por el vector para sacar su determinante; se repite el proceso para todas las columnas. Finalmente, para sacar los valores de las incógnitas, se toma el determinante detX y se divide por el determinante de la matriz A, esto calcula el valor de x; y para las demás se repite el proceso, pero con su respectiva determinante.
Este método falla cuando el determinante de la matriz original es cero, ya que, al evaluar las incógnitas mediante la división de determinantes se indeterminará. Esto puede significar que el sistema no tiene solución o muchas soluciones, y por lo tanto se debe utilizar otro método.

Diagrama de flujo

Cramer
Para un código en scilab, a lo más, el número de iteraciones es igual al tamaño de la matriz, como usa una matriz cuadrada se puede utilizar ya sea el tamaño de columnas o renglones para iterar. Incluso, las determinantes y las incógnitas se pueden calcular en una línea mediante la expresión A \ b, donde A es la matriz y b es el vector.

Código Fuente en SciLab


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
//Declara la matriz cuadrada de coeficientes como A
//Declara el vector columna de constantes como b

// Direct Solution A \ b

//Step to step Solution
Ap = A
[rX cX] = size(A)
//rX toma el size en renglones de la matriz
//cX toma el size en columnas de la matriz
D = det(A)

//Dado que rX y cX son iguales, por ser de una matriz cuadrada,
//se puede usar cualquiera de los dos para el ciclo
for i=1:1:rX
    Ap(:,i) = b         //Cambiar columna x1 al vector b
    DX = det(Ap)
    disp (DX/D)
    Ap(:,i) = A(:,i)    //Revertir cambio del primer paso
end

Pruebas con 2 incógnitas

formula3

Pruebas con 3 incógnitas

formula5

Conclusiones

El método de Cramer es muy sencillo de implementar, en especial en scilab, y funciona en la gran mayoría de los casos. Sin embargo, el proceso para evaluar los determinantes incrementa exponencialmente dependiendo del tamaño de la matriz, lo que lo hace ineficiente, en términos de procesamiento. Por lo tanto, solamente se recomienda para sistemas de ecuaciones de tres incognitas o menos.

Bibliografía:

Gilberto, E. (2001). Matrices and Linear Algebra with SCILAB.

No hay comentarios:

Publicar un comentario