Sunteți pe pagina 1din 31

Primera Edicin

Mtodos
Numricos
con MatLab

Francisco
Changotasi.
Introduccin

Para tener xito, tus deseos de triunfar deberan ser


ms grandes que tu miedo a fracasar.
Bill Cosby

Toda la informacin fue tomada del libro:


Mtodos Numricos con Matlab 3era edicin
del autor John h. Mathews , Kurtis D. Fink (pag
629-639)[1]

3 31
ndice general

ndice general 4

1 El mtodo de Jacobi 5
1.1. El mtodo de Jacobi . . . . . . . . . . . . . . 6
1.2. Rotaciones planas . . . . . . . . . . . . . . . 7
1.3. Semejanza de matrices y transformaciones or-
togonales . . . . . . . . . . . . . . . . . . . . 9
1.4. Sucesin de transformaciones de Jacobi . . . 12
1.5. El paso general . . . . . . . . . . . . . . . . . 14
1.6. Cmo hacer dpq y dqp iguales a cero . . . . . 18
1.7. Resumen del paso general . . . . . . . . . . . 21
1.8. Actualizacin de la matriz de autovectores . . 23
1.9. Estrategia para decidir qu apq se elimina . . 25

Bibliografa 31
Captulo 1

El mtodo de Jacobi

5 31
1.1. El mtodo de Jacobi
El mtodo de Jacobi es un algoritmo para calcular
todas las parejas autovalor-autovector de una matriz
simtrica que es muy facil de entender. Es un mto-
do fiable que proporciona respuestas uniformemente
precisas y que para matrices de orden menor o igual
que 10 es competitivo frente a otros mtodos ms
sofisticados; tambin es aceptable para matrices de
orden menor o igual que 20, si la velocidad de conver-
gencia no es una cuestrion muy relevante. El mtodo
de Jacobi funciona para todas las matrices simtricas
reales; esta limitacion no es muy segura ya que, en la
prctica, hay un gran nmero de problemas en la in-
geniera y en la matemtica aplicada que involucran
el clculo de los autovalores de una matriz simtrica.
Desde un punto de vista terico, el mtodo de Jacobi
incorpora algunas tcnicas que se utilizan en algo-
ritmos ms sofisticados por lo que merece la pena
estudiarlo con detalle.
Francisco Changotasi. Mtodos Numricos con MatLab

1.2. Rotaciones planas


Empezamos con una revisin geomtrica sobre
los cambios de coordenadas. Sea X un vector en el
espacio n-dimensional y consideremos la aplicacin
lineal Y = RX, donde R es la matriz de orden n x n
dada por:

1 0 0 0
.. .. .. ..
. . . .

0 cos sen 0

R = ... .. .. ..

. . .
0 sin cos 0

.. .. .. ..
. . . .
0 0 0 1

En esta expresin todos los trminos de R que estn


afuera de la diagonal son cero salvo los dos que valen
sen y todos los trminos de la diagonal son 1
excepto los dos que valen cos . El efecto de est
transformacin
Y = RX puede verse fcilmente:
7 31
yj = x j cuando j 6= p y j 6= q
yp = xp cos + xq sen ,
yp = xp sen + xq cos .

Tenemos entonces que esta aplicacin lineal es


una rotacin de ngulo en el plano coordenado
Xp OXq . Eligiendo adecuadamente el ngulo ,
podemos conseguir que yp = 0 en el vector imagen.
La transformacin inversa X = R1 Y es una rota-
cin de ngulo en el mismo plano coordenado
Xp OXq . Observemos tambin que R es una matriz
ortogonal, o sea,

R1 = R0 o bien R0 R = I
Francisco Changotasi. Mtodos Numricos con MatLab

1.3. Semejanza de matrices y


transformaciones ortogonales
Consideremos el problema de autovalores

AX = X (1.1)
Supongamos que K es una matriz invertible y defi-
namos B mediante

B = K 1 AK (1.2)
Multiplicando por K1 X a la derecha de la rela-
cion (1.2) obtenemos

BK 1 X = K 1 AKK 1 X = K 1 X
(1.3)
= K 1 X = K 1 X.
Hacemos ahora el cambio de variable

Y = K 1 X o bien X = KY (1.4)

que, al sustituirlo en (1.3), produce el problema de


autovalores
9 31
BY = Y. (1.5)

Comparando los problemas (1.1) y (1.5), vemos que


la transformacin de semejanzas (1.2) conserva el au-
tovalor y que, aunque los autovectores son dife-
rentes, estn relacionados por el cambio de variable
(1.4).
Supongamos que la matriz R es ortogonal (o sea,
R1 = R0 y que C se define mediante

C = R0 AR. (1.6)

Multiplicando R0 X a la derecha de la relacion (1.6)


obtenemos

CR0 X = R0 ARR0 X = R0 AX = R0 X = R0 X.
(1.7)
hacemos ahora el cambio de variable

Y = R0 X o X = RY (1.8)
Francisco Changotasi. Mtodos Numricos con MatLab

que, al sustituirlo en (1.7), produce el problema de


autovalores
CY = Y (1.9)

Como antes, los autovalores de (1.1) y (1.9) son los


mismos. Sin ambargo, en el problema (1.9) el cambio
de variables (1.8) es ms fcil de deshacer ya que
R1 = R0 .
Si, adems, suponemos que la matriz A es simtrica
(es decir, A = A0 ), entonces tenemos

C 0 = (R0 AR)0 = R0 A(R0 )0 = R0 A(R0 )0 = R0 AR = C


(1.10)
As que C es tambin una matriz simtrica. En con-
secuencia, si A es una matriz simtrica y R es una
matriz ortogonal, entonces la transformacin de A
en C dada por (1.6) conserva la simetra y los autova-
lores y la relacin entre los autovectores viene dada
por el cambio de variable (1.8). (Estos comentarios
valen tambin para el mtodo QR que veremos en la
siguiente seccin.)
11 31
1.4. Sucesin de transformaciones de
Jacobi
Empezando con una matriz simtrica A, cons-
truimos una sucesin de matrices ortogonales:
R1 , R2 , ....,de la siguiente manera:

D0 = A
(1.11)
Dj = R0 J Dj1 Rj para j = 1, 2, ....

Vamos a mostrar cmo hay que construir la suce-


sin {Rj } de manera que

lm Dj = D = diag(1 , 2 , ..., n ) (1.12)


j

En la prctica el proceso se detiene cuando los


elementos que estn fuera de la diagonal son sufi-
cientemente pequeos, de manera que

Dk D1 (1.13)

Siendo

Dk = Rk0 R0 k1 R10 AR1 R2 Rk1 Rk (1.14)


Francisco Changotasi. Mtodos Numricos con MatLab

Si definimos

R = R1 R2 Rk1 Rk , (1.15)

entonces R1 AR = Dk , asi que

AR = RDk R diag(1 , 2 , ..., n ) (1.16)

Si expresamos las columnas de R como vectores


X1 , X2 , ..., Xn , entonces podemos expresar R como
un vector fila de vectores columna:

R = [X1 X2 ...Xn ] (1.17)


Esto nos permite escribir la relacion (1.16) columna
a columna:

[AX1 AX2 ...AXn ] [n X1 n X2 ... n Xn ]


(1.18)
De las relaciones (1.17) y (1.18) se deduce que Xj
que es la j-sima columna de R, es una aproximacin
del autovector correspondiente al autvalor j .
13 31
1.5. El paso general
El objetivo en cada paso del mtodo de Jacobi es
reducir a cero dos de los trminos simtricos que es-
tn fuera de la diagonal, digamos los que ocupan las
posiciones (p, q) y (q, p). Denotemos por R1 la pri-
mera matriz ortogonal que vamos a usar, de manera
que en la matriz

D1 = R10 AR1 (1.19)

los elementos dpq y dqp sean cero, y en donde R1


es de la forma


1 0 0 0
.. .. .. ..
. . . .

0
c s 0
R1 = ... .. .. ..

. . . (1.20)

0
s c 0
.. .. .. ..
. . . .
0 0 0 1
Francisco Changotasi. Mtodos Numricos con MatLab

Aqu todos los elementos de R1 que estn fuera de


la diagonal son cero excepto el que vale s, colocando
en la fila p, columna q, y el que vale s, colocado en
la fila q, columna p. Por otro lado, todos los elementos
diagonales valen 1 excepto los dos que valen c, en
las posiciones p-sima y q-sima de la diagonal. Esta
matriz es la matriz de una rotacin plana, en la que
hemos usado la notacion c = cos y s = sen .
Debemos verificar que la transformacion 1.19 slo
altera los elementos de las filas y las columndas p-
simas y q-simas. Consideremos la multiplicacin
de A por R1 , o sea, el producto B = AR1


a11 a1p a1q a1n
.. .. .. ..
. . . .

ap1
app apq apn
B0 = ... .. .. ..

. . .
aq1
aqp aqq aqn
.. .. .. ..
. . . .
an1 anq anq ann
15 31

1 0 0 0
.. .. .. ..
. . . .

0
c s 0
B1 = ... .. .. ..

. . .
0
s c 0
.. .. .. ..
. . . .
0 0 0 1

B = B0 x B1 (1.21)

Aplicando la regla de la multiplicacin de matrices,


filas de la primera por columnas de la segunda, obse-
vamos que no se producen cambios en las columnas
primeras a (p 1)-sima, (p + 1)-sima a (q 1)-
sima y (q + 1)-sima a n-sima slo se alteran las
columnas p-sima y q-sima:
Francisco Changotasi. Mtodos Numricos con MatLab

bjm = ajm cuando m 6= p y m 6= q,


bjp = cajp sajq para j = 1, 2, ..., n,
bjq = sajp + cajq para j = 1, 2, ..., n,
(1.22)

Un argumento parecido prueba que al multiplicar


R01 por A slo se alteran las filas p-sima y q-sima.
En consecuencia, la transformacion

D1 = R10 AR1 (1.23)

slo altera los elementos de las filas y las columnas


p-simas y q-simas. Los elementos djk de la matriz
D1 que no son iguales que los correspondientes de
A se calculan mediante las frmulas
17 31
djp = cajm sajq para j 6= p y j 6= q,
djq = sajp + cajq para j 6= p y j 6= q,
2 2
dpp = c app + s aqq 2csapq , (1.24)
2 2
dqq = s app + c aqq + 2csapq ,
dpq = (c2 s2 )apq + cs(app aqq )

1.6. Cmo hacer dpq y dqp iguales a


cero
El objetivo en cada paso del mtodo de Jacobi es
reducir a cero los elementos dpq y dqp que estn fuera
de la diagonal. La estrategia obvia es tomar

c = cos y s = sen , (1.25)

siendo el ngulo de rotacin que produce el efec-


to deseado. Sin embargo para calcular este ngulo hay
que realizar algunas manipulaciones ingeniosas con
las identidades trigonomtricas. Usando (1.25) para
calcular la cotangente del ngulo doble obtenemos
Francisco Changotasi. Mtodos Numricos con MatLab

c2 s2
= cot 2 = . (1.26)
2cs
Supongamos que apq 6= 0 y que deseamos obtener
dpq = 0. Entonces, usando la ltima ecuacin de
(1.24), obtenemos

0 = (c2 s2 )apq + cs(app aqq ). (1.27)

Ordenando un poco los trminos nos queda


(c2 s2 )/(cs) = (aqq app )/apq que junto con (1.26),
nos permite calcular :
aqq app
= (1.28)
2apq

Aunque podemos usar la frmula (1.28) junto con


las frmulas (1.25) y (1.26) para calcular c y s, puede
probarse que se propaga menos error de redondeo
si calculamos tan y usamos este valor en clculos
posteriores. Asi pues tomamos
s
t = tan = . (1.29)
c
19 31
Dividiendo el numerador y el denominador de (??)
entre c2 obtenemos

1s2 /c2 1t2


= 2s/c = 2t

que nos da la ecuacin


t2 + 2t 1 = 0 (1.30)
Puesto que t = tan , la menor de las reices de
la ecuacion (1.30) corresponde al menor ngulo de
rotacion que podemos tomar y que cumple || 4 .
La forma especial que tiene la ecuacin de segundo
grado nos permite trabajar con la siguiente frmula
para hallar la menor de sus races

sign()
t = + (2 + 1)1/2 = (1.31)
|| + (2 + 1)1/2
siendo sign()=1 cuando 0 y sign() = 1
cuando < 0. Una vez hallado t, los valores c y s se
calculan usando las frmulas
1
c= 2 y s = ct. (1.32)
(t + 1)1/2
Francisco Changotasi. Mtodos Numricos con MatLab

1.7. Resumen del paso general


Resumimos ahora los clculos que hay que realizar
para hacer cero el elemento dpq . En primer lugar hay
que elegir la fila p y la columna q de manera que
apq 6= 0. En segundo lugar se determinan los valores
preliminares

aqq app
=
2apq
sign()
t= (1.33)
|| + (2 + 1)1/2
1
c= 2
(t + 1)1/2
s = ct

En tercer lugar, para construir D = D1 , se to-


man(escribindolo como si fuera un programa hecho
con el paquete MATLAB)
21 31
dpq = 0;
dqp = 0;
dpp = c2 app + s2 aqq 2csapq ;
dqq = s2 app + c2 aqq + 2csapq ;

for j=q:n
if(j 6= p) y (j 6= q) (1.34)
djp = cajp sajq ;
dpj = djp ;
djq = cajq + sajp ;
dqj = djq ;
end
end
Francisco Changotasi. Mtodos Numricos con MatLab

1.8. Actualizacin de la matriz de


autovectores
Es necesario tambin ir calculando el producto
R1 R2 Rj . Cuando se detenga el algoritmo en la
k-sima interacin, entonces tendremos la matriz
ortogonal

Vk = R1 R2 Rk (1.35)

Para ir calculando estas matrices Vj , con j =


1, 2, ..., k, empezamos tomando como matriz inicial
V = I. Usando unas variables vectoriales P y Q pa-
ra almacenar las columnas p-sima y q-sima de V,
respectivamente, entonces en cada paso se realizan
las siguientes operaciones:
23 31
for j=1:n
Pj = vjp ;
Qj = vjq ;
end (1.36)
for j=1:n
vjp = cPj sQj ;
vjp = sPj + cQj ;
end
Francisco Changotasi. Mtodos Numricos con MatLab

1.9. Estrategia para decidir qu apq se


elimina
La velocidad de convergencia del mtodo de JAcobi
se estima mediante la suma de los cuadrados de los
cuadrados de los elementos que estn fuera de la
diagonal:
n
X
S1 = |aj k|2 k 6= j (1.37)
j,k=1
Xn
S2 = |dj k|2 k 6= j siendo D1 = R0 AR
j,k=1
(1.38)

Dejamos como ejercicio la demostraci, a partir de


las relaciones dadas en 1.34, de que

S2 = S1 2|apq |2 . (1.39)

Si en cada paso denotamos por Sj la suma de los


cuadrados de los elementos que estn fuera de la
diagonal de Dj , entonces la sucesion {Sj } decrece
25 31
montamente y est acotada inferiormente por cero.
En el algoritmo original de Jacobi, dado en 1846, el
elemento que hay que convertir en cero es, en cada
paso, el elemento de fuera de la diagonal que tiene
mayor valor absoluto, lo que involucra la necesida de
calcular el valor
max{A} = max{|apq | : p < q} (1.40)
Esta eleccin garantiza que {Sj } converge a cero
y, en consecuencia, que {Dj } converge a D y que
{Vj } converge a la matriz V de los autovectores
El procedimiento de seleccin propuesto por Jacobi
puede requerir mucho tiempo de clculo ya que hay
que realizar del orden de (n2 n)/2 comparaciones
en cada paso; lo que resulta prohibitivo para valores
grandes de n. Una estrategia algo mejor es el mtodo
de Jacobi cclico que consiste en ir eliminando los ele-
mentos por orden estricto de filas. Se elige un valor
para la tolerancia, se hace un barrido de toda la matriz
y se encuentra un elemento apq de mayor tamao que
, entonces se elimina. En cada barrido se empieza
por los elementos de la primera fila: a12 , a13 , ...., a1n ;
Francisco Changotasi. Mtodos Numricos con MatLab

luego los de la segunda: a23 , a24 , ...., a2n ; y as suce-


sivamente. Puede probarse que la convergencia de
ambos mtodos de Jacobi, el original y el cclico, es
cuadratica. Para utilizar el mtodo cclico hay que
tener en cuenta que la suma de los cuadrados de los
elementos de la diagonal se va incrementando en
cada interacion: es decir, si
n
X
T0 = |ajj |2 (1.41)
j=1

y
n
X
T0 = |djj |2
j=1

entonces:
T1 = T0 + 2|apq |2 .

En consecuencia , la sucesion {Dj } converge a la


matriz diagonal D. Hagamos notar tambin que el
tamao medio de un elemento de la diagonal puede
calcularse mediante la formula (T0 /n)1/2 y que los
27 31
tamaos de los elementos que estn afuera de la dia-
gonal deben compararse con (T0 /n)1/2 , siendo la
tolerancia fijada de antemano. Por tanto, eliminamos
apq si
 1/2
T0
|apq | > (1.42)
n

Otra variacin del mtodo , llamado el mtodo de


Jacobi con umbral, queda propuesto como tarea de
investigacin.
Ejemplo 1. Vamos a usar el mtodo de Jacobi
para transformar la siguiente matriz simtrica en
una matriz diagonal

8 1 3 1
1 6 2 0
3 2 9 1
1 0 1 7

Dejamos los detalles computacionales como ejerci-


cio. La primera rotacin, que servir para hacer cero
el elemento a13 = 3, es
Francisco Changotasi. Mtodos Numricos con MatLab


0,763020 0,000000 0,646375 0,000000
0,000000 1,000000 0,000000 0,000000
R1 = 0,646375 0,000000 0,763020 0,000000
0,000000 0,000000 0,000000 1,000000

Haciendo el clculo A2 = R1 A1 R1 , llegamos a



5,458619 2,055770 0,000000 1,409395
2055770 6,000000 0,879665 0,000000
A2 = 0,000000 0,879665 11,541381 0,116645
1,409395 0,000000 0,116645 7,000000

A continuacin hacemos cero el elemento


a12 = 2,055770, obteniendo

3,655795 0,000000 0,579997 1,059649
0,000000 7,802824 0,661373 0,929268
A3 = 0,579997 0,661373 11,541381 0,116645
1,059649 0,929267 0,116645 7,000000

Despus de 10 interaciones llegamos a



3,295870 0,002521 0,037859 0,000000
0,002521 8,405219 0,004957 0,06675
A1 0 = 0,037859 0,004957 11,704123 0,001430
0,000000 0,066758 0,001430 6,594797
29 31
Hacen falta seis interaciones ms para que los ele-
mentos de la diagonal se acerquen a los autovalores

D = diag(3,295699, 8,407662, 11,704301, 6,592338)

Sin embargo, en este paso los elementos que estn


afuera de la diagonal no son an lo bastante pequeos
y harn falta tres interaciones ms para que sean de
tamao menor a 106 . En ese paso, las aproximacio-
nes a los autovectores son las columnas de la mariz
V = R1 R2 R18 , dada por


0,528779 0,573042 0,582298 0,230097
0,591967 0,472301 0,175776 0,628975
V = 0,536039 0,282050 0,792487 0,071235
0,287454 0,607455 0,044680 0,739169
Bibliografa

[1] Mathews, Mtodos Numricos con Matlab, Ter-


cera Edicin

31 31

S-ar putea să vă placă și