Práctica de resolución de sistemas de ecuaciones lineales con ...

Práctica de resolución de sistemas de ecuaciones lineales con ... Práctica de resolución de sistemas de ecuaciones lineales con ...

aulanet.umb.edu.co
from aulanet.umb.edu.co More from this publisher
12.05.2013 Views

» spy(ans) » chol(ans) ans = 2 2 5 1 1 -1 1 3 2.2361 -0.44721 0.89443 0.44721 0 1.9494 1.2312 -0.41039 0 0 1.6384 0.67462 0 0 0 1.4753 como puede verse la matriz A no es simétrica y MATLAB sólo utiliza la parte triangular superior, por lo que obtiene un resultado incorrecto. Es por tanto necesario asegurarse de que la matriz sea simétrica. Si no estamos seguros de que la matriz A es simétrica podemos comprobarlo escribiendo all(all(A==A’)), si el resultado es 1 es simétrica, si es 0 no lo es. Por otra parte, si la matriz A no es definida positiva chol devuelve un mensaje de error. En general no es fácil comprobar si una matriz simétrica es definida positiva o no (una matriz simétrica definida positiva tiene todos los elementos de la diagonal principal positivos, por tanto si alguno de ellos es negativo o nulo no se trata de una matriz definida positiva, pero puede suceder que todos los elementos de la diagonal principal sean positivos y la matriz no sea definida positiva). Una de las formas de comprobar si una matriz simétrica es definida positiva es intentar calcular su factorización de Cholesky. Ejemplo 3 Dada la siguiente matriz (con elementos positivos en la diagonal principal) al intentar calcular su factorización de Cholesky se comprueba que no es definida positiva. >> A=[2 -1 1;-1 2 2;1 2 2] A = 2 -1 1 -1 2 2 1 2 2 10

R=chol(A) ??? Error using ==> chol Matrix must be positive definite. Como se ha visto chol calcula el factor triangular superior. Si se quiere utilizar el resultado para resolver el sistema (1) se puede utilizar el factor con la orden R\(R’\b) Ejemplo 4 » A=[ 10 -1 2 1; -1 8 2 -1; 2 2 10 1; 1 -1 1 6]; » b=[3 -1 2 4]’; » R=chol(A) R = 3.1623 -0.31623 0.63246 0.31623 0 2.8107 0.78272 -0.32021 0 0 2.9979 0.35046 0 0 0 2.3822 » sol=R\(R’\b) sol = 0.2132 -0.049392 0.10673 0.60511 » sol2=A\b sol2 = 0.2132 -0.049392 0.10673 0.60511 » sol==sol2 11

R=chol(A)<br />

??? Error using ==> chol<br />

Matrix must be positive <strong>de</strong>finite.<br />

Como se ha visto chol calcula el factor triangular superior. Si se quiere<br />

utilizar el resultado para resolver el sistema (1) se pue<strong>de</strong> utilizar el factor<br />

<strong>con</strong> la or<strong>de</strong>n R\(R’\b)<br />

Ejemplo 4<br />

» A=[ 10 -1 2 1; -1 8 2 -1; 2 2 10 1; 1 -1 1 6];<br />

» b=[3 -1 2 4]’;<br />

» R=chol(A)<br />

R =<br />

3.1623 -0.31623 0.63246 0.31623<br />

0 2.8107 0.78272 -0.32021<br />

0 0 2.9979 0.35046<br />

0 0 0 2.3822<br />

» sol=R\(R’\b)<br />

sol =<br />

0.2132<br />

-0.049392<br />

0.10673<br />

0.60511<br />

» sol2=A\b<br />

sol2 =<br />

0.2132<br />

-0.049392<br />

0.10673<br />

0.60511<br />

» sol==sol2<br />

11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!