Métodos Numéricos 2011 Práctica 2 1 Normas vectoriales y matriciales Consideremos el problema de resolución de un sistema lineal Ax = b donde A ∈ R mxn b ∈ R m Recordemos que { Im( A) = y ∈ R m : ∃x ∈ R n Ax = y } El problema tiene solución sii b ∈ Im( A) Tiene solución única sii Nu ( A) = { x : Ax = 0 } = {0 } Ejercicios: usar las funciones Matlab rank, null para evaluar de antemano a existencia o no de solución (resp. de solución única ) Demostrar que el determinante de una matriz cuadrada triangular superior es el producto de los elementos diagonales. En la realidad de los problemas prácticos tenemos datos A, b inexactos y por otra parte la computadora trabaja con aritmética finita de punto flotante. Esto nos lleva a preguntarnos lo siguiente: a)Como afecta a la solución x si A, b son perturbados por una pequeña cantidad. b)Que significa que A sea casi de rango deficiente, o sea A tiene casi menos de m vectores columna linealmente independientes. c) Si b ∉ Im( A) como puede determinarse x tal que Ax sea cercano a b ? Todas estas son cuestiones cuantitativas en las estamos empleando un lenguaje poco preciso: pequeña perturbación, casi de rango deficiente, cercano etc. Para precisar estas nociones es que se introducen normas de vectores y matrices. Una norma definida en un espacio vectorial es una función ϕ : R n → R que verifica ϕ ( x) ≥ 0 ϕ ( x) = 0 ⇔ x = 0 ϕ ( x + y ) ≤ ϕ ( x) + ϕ ( y )∀x, y ∈ R n ϕ (α x) = α ϕ ( x)∀α ∈ R, x ∈ R n Notación ϕ ( x ) = x Ejemplos: x p p p 1 = ( x1 + ... + xn ) x 1 = ( x1 + ... + xn ) 2 2 1 x 2 = ( x1 + ... + xn ) 2 p p ≥1 x ∞ = max k xk = Ejercicios Calcular normas en Matlab con norm . Graficar curvas de nivel y superficie en 3d para n=2 Verificar la desigualdad de Holder haciendo un experimento repetido un cierto número de veces xt y ≤ x p y 1 1 + = 1 para vectores columna x, y de componentes al p q q azar mxn Dado que R se puede identificar con R normas vectoriales que sobre vectores. mn ,sobre matrices se pueden definir las mismas En particular la norma de Frobenius es la norma 2 de la matriz pensada como vector (1.1) A F = ∑∑ Aij 2 i j 1 2 Matlab norm(A, ‘fro’) Otra norma importante es la definida así : (1.2) Ax A = max x ≠ 0 = max x =1 Ax } x mxn Se denomina norma espectral de la matriz A ∈ R { Suponemos que la norma vectorial asociada es la norma 2 Observación por argumentos de continuidad sobre un compacto resulta que ∃x* ∈ { x : x = 1 } tal que el anterior máximo se alcanza A = Ax* Ejercicios: mostrar que se verifican las propiedades de una norma. AB ≤ A B κ ( A) = A A−1 ≥ 1 Este número se llama número de condicionamiento Supongamos que A es ortogonal, entonces como AAt = I es A = A−1 = 1 una tal matriz es el caso ideal de buen condicionamiento. Cual es la norma espectral de una matriz diagonal ¿ Descomposición en valores singulares SVD σ ∈ R y vectores u ∈ R m , v ∈ R n se dicen valor singular y vectores singulares Un escalar de una matriz (1.3) A ∈ R mxn si se verifican: Av = σ u u tA =σ v t (1.4) Toda matriz (1.5) donde A ∈ R mxn se puede expresar en la forma A = USV t U = [u1 , u2 ,..., um ] y V = [v1 , v2 ,..., vn ] son matrices ortogonales mxm y nxn y la matriz S = diag (σ 1 ,σ 2 ,...,σ n ) σ 1 ≥ σ 2 ≥ ... ≥ σ n es diagonal S ∈ R mxn con elementos nonegativos Es decir: m>n m=n σ 1 0 0 σ 2 0 0 S =0 0 0 0 0 0 0 0 0 0 σn 0 0 σ 1 0 0 0 σ 0 2 m<n S = 0 0 0 0 0 0 σm 0 0 0 0 0 0 0 0 σ 1 0 0 0 σ 0 2 S= 0 0 0 0 σm En forma de desarrollo en suma de matrices de rango 1: p A = USV t = ∑ σ k uk vk t donde p ≤ min {m, n} 1 σ 1 ≥ σ 2 ≥ ... ≥ σ p > σ p +1 = σ p+2 ... = σ n = 0 t t Cada matriz Ek = uk vk = U (:, k )V (:, k ) es de rango 1 y podría despreciarse de la suma siempre que su correspondiente valor singular fuese despreciable. Ejercicio de aplicación a compresión de imágenes. Considerar una matriz rectangular con imagen mxn Aplicar SVD y estudiar aproximaciones de distinto rango de la imagen original Sensibilidad de sistemas inversibles Supongamos p = m = n y que A es inversible. En tal caso usando la SVD n (1.6) A−1 = ∑ σ j −1v j u j t j =1 * El vector x ∈ R Notemos que n σn n n j =1 j =1 x* = A−1b = ∑ σ j −1v j u j t b = ∑ σ j −1u j t bv j verifica Ax* = b el mínimo valor singular de la matriz, puede ser tan pequeño, que el coeficiente correspondiente un t b σn de la anterior expansión sea muy grande para pequeñas perturbaciones de b o de A . Ejercicio Consideremos la matriz A= [ 93.477 1.963 26.821 23.2134 10.202 32.816 36.816 -86.3925 -28.832 62.414 57.234 44.693 ; ; ; ] b= [ 34.7177 ; 70.9241 ; 82.9271 ; -26.2222 ] A1=A(1:3, :) b1=b(1:3) bt=[ 34.7; 70.9 ; 82.9 ] Usando svd(A1) estudiar la sensibilidad del sistema A1 x = b1 frente a perturbaciones bt Calcular el número de condición cond(A) y ver que coincide con σ1 σn Descomposición LU Toda matriz A ∈ R nxn se puede expresar en la forma: A = LU donde L, U son matrices triangulares inferior y superior respectivamente O bien existe una matriz de permutación P tal que PA = LU Veamos un algoritmo para encontrar las matrices Caso LU sin pivoteo En el primer caso consideremos la matriz M k L, U , P k=1 se anulan los elementos debajo de la diagonal de la matriz A M1 = I − a21 a11 E21 − Donde las matrices a31 a11 E31 − ... − an1 a11 En1 Eij son las matrices canónicas con 1 en el lugar i,j y ceros en los restantes lugares.Este paso supone que el pivote es no nulo. En el caso general habrá que permutar ecuaciones hasta encontrar un pivote no nulo. Es asi como aparece la matriz de permutaciones P . En general en el paso k-esimo se anulan los elementos debajo de la diagonal en la columna k de la matriz A multiplicando por la matriz Mk = I − ak +1,k akk Ek +1,k − ak + 2,k akk Ek + 2,k − ... − ank akk Enk M k es triangular inferior inversible a a a M k −1 = I + k +1,k E + k + 2,k E + ... + nk E akk k +1,k akk k + 2,k akk nk Notemos que cada matriz En el último paso queda triangulada la matriz original, es decir, se obtiene una matriz triangular inferior U producto de premultiplicar sucesivamente por las matrices M k M n −1M n −2 ...M 2 M 1 A = U Con lo cual la matriz L = M 1−1M 2 −1...M n −1−1 es una matriz triangular inferior con unos en la diagonal Ejercicio Verificar en Matlab todos los anteriores pasos de la descomposición. Ejemplo A=[1 2 3 4 5 6 7 8 0 ]; Para ver la descomposición LU se llama la función Matlab lu [L1,U] = lu(A) L1 = 0.1429 1.0000 0 0.5714 0.5000 1.0000 1.0000 0 0 U= 7.0000 8.0000 0 0.8571 0 0 0 3.0000 4.5000 Notar que L1 es una permutación de una matriz triangular También podemos llamar con 3 argumentos de salida [L2,U,P] = lu(A) para explicitar la matriz de permutación. Para verificar la factorizacion hacemos L1*U Y comparamos con A La inversa de la matriz original A B= inv(A), se calcula a partir de los factores triangulares B = inv(U)*inv(L1) Si usamos 3 argumentos [L2,U,P] = lu(A) Tenemos L2 = 1.0000 0 0 0.1429 1.0000 0 0.5714 0.5000 1.0000 U= 7.0000 8.0000 0 0.8571 0 0 0 3.0000 4.5000 P= 0 0 1 1 0 0 0 1 0 Vemos que L2 = P*L1. Para ver que L2*U es una permutación de A hacemos P*A - L2*U El determinante d = det(A) Se calcula a partir de los determinantes de los factores triangulares d = det(L)*det(U) La solución de Ax = b se obtiene por división a izquierda x = A\b Usando la descomposición se calcula efectivamente mediante dos divisiones a izquierda sucesivas y = L\b x = U\y La programación de cada de división L\b U\y es muy sencilla. Programarlo en Matlab: escribir funciones [y,error]=forw( L,b) y [x,error]=back(U,y) que efectuan ese cálculo. Comparar resultados con el uso del operador \ Descomposición QR ortogonal-triangular La descomposición QR de una matriz rectangular A ∈ R mxn la expresa en la forma A = QR o bien AP = QR donde Q, R, P son respectivamente una matriz ortogonal una matriz triangular superior mxn y una matriz de permutaciones nxn mxm Notemos que en caso de aparecer la matriz P de permutaciones es porque se desea que los elementos diagonales de la matriz R sean decrecientes en valor absoluto.En tal caso el algoritmo permuta columnas de la matriz A para lograr tal fin. Ejemplo Consideremos A= [1 2 3 4 5 6 7 8 9 10 11 12 ] Calcular su rango Descomponemos QR [Q,R] = qr(A) Q= -0.0776 -0.8331 0.5444 0.0605 -0.3105 -0.4512 -0.7709 0.3251 -0.5433 -0.0694 -0.0913 -0.8317 -0.7762 0.3124 0.3178 0.4461 R= -12.8841 -14.5916 0 -1.0413 -16.2992 -2.0826 0 0 0.0000 0 0 0 R tiene ceros debajo de la diagonal El cero en R(3,3) implica que R, y por consecuencia A, no tiene rango completo. Porque ? Ejemplo Sea A como en el ejemplo anterior. La factorización QR se usa para resolver sistemas lineales sobredeterminados o sea con más ecuaciones que incógnitas. b = [1;3;5;7] El sistema Ax = b tiene 4 ecuaciones y tres incógnitas. Geométricamente se trata de encontrar una combinación lineal de columnas de la matriz A que sea igual al vector b. Esta combinación lineal existe si b ∈ Im( A) En el ejemplo usar la función rank para decir en que caso estamos Si b ∉ Im( A) entonces podemos plantear encontrar x como una solución del problema de mínimo min x Ax − b 2 Esta solución en el sentido de cuadrados mínimos se puede calcular en Matlab ( también Octave,Scilab) mediante el operador de división a izquierda x = A\b la cual produce Warning: Rank deficient, rank = 2, tol = 1.4594E-014 x= 0.5000 0 0.1667 La solución x se calcula en dos pasos a partir de la factorización y = Q'*b; x = R\y La cantidad tol es una tolerancia que se usa para decidir cuando un elemento diagonal de R es despreciable Si se calcula con [Q,R,E] = qr(A) donde E es una matriz de permutación entonces tol = max(size(A))*eps*abs(R(1,1)) Verificar la solución haciendo Ax Comparar con b . Es consistente el sistema lineal ? Ejercicio: Repetir todo el anterior análisis y cálculo para A= [ 93.477 10.202 1.963 32.816 26.821 36.816 23.2134 -86.3925 b= [ 34.7177 ; 70.9241 ; 82.9271 ; -26.2222 ] -28.832 62.414 57.234 44.693 ] bt= [ 34.7177 ; 70.9241 ; 82.9271 ; -26.2220 ] Problemas 1 Aplicación de cuadrados mínimos al ajuste de funciones sobre datos experimentales Se mide una magnitud y para ciertos valores del tiempo t obteniéndose la siguiente tabla t y 0.0 0.82 0.3 0.72 0.8 0.63 1.1 0.60 1.6 0.55 2.3 0.50 Se postula la siguiente función para modelar el fenómeno y (t ) = c1 + c 2e−t Aplicar la técnica anteriormente expuesta para resolver el sistema sobredeterminado por el método de cuadrados mínimos. Plotear la función obtenida junto con los datos experimentales. Idem para modelar la tabla t = [0 0.3 0.8 1.1 1.6 2.3]'; y = [0.6 0.67 1.01 1.35 1.47 1.25]'; con las funciones y (t ) = a1 + a2e −t + a3te −t y (t ) = b1 + b2t + b3t 2 Plotear las funciones obtenidas junto con los datos experimentales. Descomposición de Cholesky La factorización de Cholesky expresa una matriz simétrica como producto de una matriz triangular inferior y su traspuesta A = Rt R Para tal matriz xt Rt R x = R x 2 2 ≥ 0∀x ∈ R n lo cual nos dice que A es definida positiva suponiendo que sea inversible. En Matlab invocando la funcion pascal(n) nos fabrica una matriz definida positiva nxn A = pascal(6) A= 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252 R = chol(A) R= 1 1 1 1 1 1 0 1 2 3 4 5 0 0 1 3 6 10 0 0 0 1 4 10 0 0 0 0 1 5 0 0 0 0 0 1 Una tal factorización permite resolver el sistema Ax = b reemplazándolo por el sistema RR t x = b lo cual se puede resolver rápidamente con x= R’\R\b Autovalores y autovectores Un autovalor y el autovector asociado de una matriz cuadrada son un escalar vector u que satisfacen la ecuación λ Au = λ u Cada autovalor es un cero del polinomio característico p (λ ) = det( A − λ I ) El polinomio característico tiene n ceros en el plano complejo contados con su multiplicidad. Si ubicamos a todos los posibles autovalores de la matriz en una matriz diagonal λ1 Λ= 0 0 0 se tiene la expresión matricial AV = V Λ 0 0 λ2 0 0 0 λn El polinomio característico tiene n ceros en el plano complejo contados con su multiplicidad. y un En forma equivalente A = V ΛV −1 siempre que V sea inversible Ejemplo de cálculo A =[ 0 -6 -1 6 2 -16 -5 20 -10 ] Haciendo lambda=eig(A) se tiene un vector con los autovalores [V,D]= eig(A) produce autovectores y autovalores. Los autovectores aparecen normalizados. Otro ejemplo A= [6 12 19 -9 -20 -33 4 9 15 ] Que pasa con la matriz de autovectores en este caso ? Sugerencia: analizar la matriz usando svd o qr para decidir si la matriz es numéricamente no-inversible y en tal caso no-diagonalizable Potencias y funciones analíticas de una matriz. m Sea p ( z ) = ∑ ak z k un polinomio de grado m Si A ∈ K nxn donde K = R o K = C k =0 0 n +1 n tiene sentido calcular p ( A) : A = I , A = AA Esto se puede generalizar a funciones analíticas por ejemplo ∞ exp( z ) = ∑ z k / k ! que converge absolutamente en todo 0 el plano complejo. Es decir las sumas parciales matriciales I + A+ A2 A3 An convergen a una matriz que llamaremos + + ... + 2! 3! n! exp( A) En Matlab la función expm ( A) calcula la exponencial de una matriz cuadrada. Notemos que si la matriz es diagonalizable entonces A = V ΛV exp( A) = exp(V ΛV −1 ) = V exp(Λ )V −1 eλ1 0 exp(Λ ) = 0 0 eλ2 0 0 0 eλn −1 Aplicación de la exponencial de una matriz Consideremos la ecuación diferencial ordinaria de segundo orden con coeficientes constantes de un oscilador Recordemos que a esta relacionado con el rozamiento y b con la frecuencia fundamental del oscilador. y ''+ ay '+ by = 0 Haciendo el cambio de variables y1 = y, y2 = y1' se tiene y2 '+ ay2 + by1 = 0 Que en forma matricial se expresa 0 1 y1 y1' = o sea como un sistema de primer orden ' −b − a y 2 y2 y1 y2 u ' = Au donde el vector u = La solución es una generalización del caso escalar u (t ) = exp(tA)u0 Para ver que efectivamente se satisface la ecuación consideremos la función φ (t ) = exp(tz ) derivando respecto de la variable t dφ = z exp(tz ) = zφ reemplazando z por la matriz A dt d exp(tA) du = A exp(tA) con lo cual = A exp(tA)uo = Au dt dt Notemos que además u (0) = exp(0 A)u0 = Iu0 = u0 Observación: el polinomio característico de la ecuación diferencial es idéntico al de la matriz del sistema diferencial. El comportamiento de la solución dependerá de los autovalores de la matriz. Ejercicio Resolver en Matlab el anterior sistema para distintos valores de los coeficientes a,b y del vector de condiciones iniciales u0 . Graficar la solución y(t)=y1(t) y su derivada y’(t)=y2(t) para t ∈ [ 0, 20] y además graficar las órbitas en el espacio de las fases y1,y2 Cada orbita es la curva { (y1(t),y2(t)) , t ∈ [ 0, 20] } Ejercicio Resolver en Matlab: Hallar x (t ) ∈ R 3 0 ≤ t ≤ 1 que satisface el sistema x = Ax con la condición inicial x(0) = x0 . Graficar la solución en 3D usando plot3 A= 0 6 -5 x0 = 1 1 1 -6 -1 2 -16 20 -10