ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ Mühendislik Mimrlık Fkültesi İnşt Mühendisliği Bölümü E-Post: ogu.hmet.topcu@gmil.com Web: http://mmf2.ogu.edu.tr/topcu Bilgisyr Destekli Nümerik Anliz Ders notlrı 204 Ahmet TOPÇU A x=λx 30 PROGRAMLAR: Özdeğer ve özvektör hesbı Tüm özdeğerler ve özvektörler - Jcobi
30. PROGRAMLAR: Tüm özdeğer ve özvektörlerin hesbı - Jcobi 229 30. PROGRAMLAR: Tüm özdeğer ve özvektörlerin hesbı - Jcobi Jcobi lt progrmı Ax = λ x stndrt özdeğer probleminin tüm özdeğerini ve bunlr it normlleştirilmiş özvektörlerini Jcobi rotsyon yöntemi ile hesplr. A nxn simetrik olmk zorunddır. A nın lt üçgen kısmının stırlrı tek boyutlu A((n+). n/2) lnınd, çğırn progrmd şğıdki gibi depolnmış olmlıdır: A =. 2 3 n 22 32 n2 33 n3 simetrik... nn.stır [...... ] 2.stır 3.stır n.stır 2 22 3 3 33 n n2 n3 nn Özvektörler için x(n. n) tek boyutlu lnı çğırn progrmd boyutlndırılmış olmlıdır. Hesp sonrsı özdeğerler A lnı, özvektörler x lnınd depolnır. A().özdeğer, (n+). 2. özdeğer, (2n+). 3. özdeğer, v.s. dir. x lnının ilk n elemnı. özvektör, sonrki n elemnı 2. özvektör, v.s dir. Mxrot izin verilen mksimum rotsyon syısı, Eps özdeğerler için ulşılmk istenen hsssiyettir. ivect prmetresi=0 verilirse sdece özdeğerler, ivect 0 verilirse özdeğer ve özvektörler hesplnır. Jcobi her özvektörü uzunluğu olck şekilde normlleştirir. Özvektörün en büyük elemnı olck şekilde normlleştirilmesi istenirse JNormlize lt progrmının Jcobi lt progrmının hemen rksındn çğrılmsı gerekir. Örnek: 9 2 A = 7 3 4 0 4 2 7 5 simetrik 8 3 9 6 Bellekte depolnışı [ 2 0 7 4 7 3 5 8 4 2 3 6] Jcobi lt progrmının sonucu Özdeğerler En büyük elemnı olck şekilde normlleştirilmiş özvektörler 2.5209 Λ = 8.7049.0020 5.4483, 5.3278 0.6682 X = 0.9620 0.7492 0.5506 0.264 0.027 0452 0.26 0.723 0.2903 0.4665 0.5530 0.8608 0.2620 0.4752 0.749 0.4246 0.0276 0.534 0.5947 Teori ve örnekler için bk: bölüm 25 Ahmet TOPÇU, Bilgisyr Destekli Nümerik Anliz, Eskişehir Osmngzi Üniversitesi, 204, http://mmf2.ogu.edu.tr/topcu/ 229
30. PROGRAMLAR: Tüm özdeğer ve özvektörlerin hesbı - Jcobi 230 ' --------------------An progrm Jcobi--------------------------- ' Ahmet TOPÇU, Eskişehir Osmngzi Üniversitesi, 995 ' A(n,n) simetrik mtrisinin tüm özdeğer ve özvektörlerinin hesbı ' A nın lt üçgen kısmı okunur ve tek boyutlu lnd depolnır ' Çğrıln lt progrm: Jcobi '------------------------------------------------------------------ A nın boyutu DATA 5 ' A mtrisi: DATA 9 A nın lt üçgeninin stırlrı DATA 2, 0 DATA 7, 4, 7 DATA 3,, 5, 8 DATA 4, 2,, 3, 6 i, j, k, l, m, n ile bşlyn değişkenler tm syı değişkeni olck (2 byte) An progrm DEFINT I-N DEFDBL A-H, O-Z DECLARE SUB Jcobi ((), n, Eps, maxrot, ivect, x()) DECLARE SUB JNormlize (n, x(), norml) READ n DIM ((n + ) * n \ 2), x(n * n) CLS ' A: yı oku: ii = 0 FOR i = TO n i2 = 0 FOR j = TO i READ (ii + j): i2 = i2 + ii = ii + i2 maxrot = 200 Eps = E-2 Özvektörler de hesplnck ivect = CALL Jcobi((), n, Eps, maxrot, ivect, x()) CALL JNormlize(n, x(), ) "Özdeğerler ve özvektörler(jcobi):" FOR i = TO n "Lmd"; i; "="; ((i + ) * i \ 2) j = (i - ) * n + je = i * n FOR j = j TO je x(j); "Rotsyon syısı"; maxrot; END 'Jcobi n Bu hrf rlığındki hrf ile bşlyn değişkenler çift hsssiyetli ondlık syı değişkeni olck (8 byte) A nın boyutu okunuyor A nın kolonlrı okunuyor İzin verilen mksimum rotsyon syısı A mtrisi ve x özvektörleri için bellekte yer yrılıyor Özdeğerler için istenen hsssiyet Jcobi lt progrmı çğrılıyor Normlleştirmek için Jnormlize lt progrmı çğrılıyor. (Özvektörün en büyük elemnı olck) Sonuçlr yzdırılıyor Çğrılck lt progrmlr n progrm tnıtılıyor Ahmet TOPÇU, Bilgisyr Destekli Nümerik Anliz, Eskişehir Osmngzi Üniversitesi, 204, http://mmf2.ogu.edu.tr/topcu/ 230
30. PROGRAMLAR: Tüm özdeğer ve özvektörlerin hesbı - Jcobi 23 SUB Jcobi ((), n, Eps, maxrot, ivect, x()) '---------------------------------------------------------------------------- ' Özdeğer ve özvektör hesbı (Jcobi) ' A(n,n) simetrik mtrisinin tüm özdeğer ve özvektörleri hesplnır. ' A nın sdece lt üçgenindeki stırlrı verilmelidir. ' A lt üçgeni tek boyutlu ve (n+)*n /2 uzunluğundki A((n+)*n /2) ' lnınd çğırn progrm trfındn depolnmış olmlıdır. ' Hesplnn özdeğerler A lnı üzerinde şğıdki şekilde depolnır: ' A(). özdeğer ' A(n+) 2. özdeğer ' A(2*n+) 3. özdeğer '... ' ivect<>0 verilirse tüm özvektörler hesplnır. Özvektörler uzunluğu ' olck şekilde normlleştirilmiştir. ' Hesplnn Özvektörler x(n*n) tek boyutlu mtrisinde depolnır. ' x in ilk n elemnı.özvektör, sonrki n elemn 2.özvektör, v.s. ' ivect=0 verilirse sdece özdeğerler hesplnır, özvektörler hesplnmz. ' Bu durumd x vektörü uyumluluk için tek elemnlı, x() olrk tnımlnbilir. ' Mxrot : mksimum rotsyon syısıdır. ' Eps : öngörülen hsssiyettir. ' Bu progrmın FORTRAN kodu "DANKERT, J. Numerische Methoden ' der Mechnik, Springer, 977" den lınmıştır. '---------------------------------------------------------------------------- ' JACOBI Rottions Nrot = 0 indi = 0 '----------------------------- A okunuyor j = je = n idi = FOR i = TO n FOR j = j TO je x(j) = 0 j = j + n je = je + n x(idi) = idi = j + i '------------------------ 7 s = 0 j = 2 je = 0 FOR i = 2 TO n je = je + i FOR j = j TO je s = s + (j) ^ 2 j = j + i s = SQR(2 * s) IF indi = THEN EXIT SUB 80 s = s / n 90 j = 2 je = 0 ind = 0 FOR i = 2 TO n je = je + i jj = FOR j = j TO je pq = (j) IF ABS(pq) < s GOTO 0 Nrot = Nrot + ind = ipp = (jj + ) * jj / 2 pp = (ipp): qq = (je + ) tht = (qq - pp) *.5 / pq IF tht = 0 THEN T = ELSE T = / (SQR( + tht * tht) * SGN(tht) + tht): ' Sign co = / SQR(T * T + ) si = co * T ii = ipp - jj + ke = j - IF ke >= j THEN FOR k = j TO ke ip = (ii) iq = (k) (ii) = ip * co - iq * si Sonrki syfd devm (k) = ip * si + iq * co ii = ii + ediyor Jcobi lt progrmı Ahmet TOPÇU, Bilgisyr Destekli Nümerik Anliz, Eskişehir Osmngzi Üniversitesi, 204, http://mmf2.ogu.edu.tr/topcu/ 23
30. PROGRAMLAR: Tüm özdeğer ve özvektörlerin hesbı - Jcobi 232 ke = j + IF je >= ke THEN Jcobi devmı ii = ipp ierh = jj FOR k = ke TO je ii = ii + ierh ip = (ii) iq = (k) (ii) = ip * co - iq * si (k) = ip * si + iq * co ierh = ierh + IF i <= n THEN kk = je + ii = j ierh = i ke = i + FOR k = ke TO n kk = kk + ierh ii = ii + ierh ip = (ii) iq = (kk) (ii) = ip * co - iq * si (kk) = ip * si + iq * co ierh = ierh + '--------------------------------- ' Eigenvectors ii = (i - ) * n + k = (jj - ) * n ke = k + n k = k + FOR k = k TO ke ip = x(k) iq = x(ii) x(k) = ip * co - iq * si x(ii) = ip * si + iq * co ii = ii + '--------------------------------- T = (j) * si * co * 2 co = co * co si = si * si ip = (ipp) iq = (je + ) (ipp) = ip * co + iq * si - T (je + ) = ip * si + iq * co + T (j) = 0 0 jj = jj + j = j + i IF ind = GOTO 90 IF s * n < Eps THEN maxrot = Nrot: indi = : GOTO 7 IF Nrot < maxrot GOTO 80 maxrot = -Nrot indi = GOTO 7 END SUB ' Jcobi SUB JNormlize (n, x(), norml) ' X(n*n) lnınd depolnmış özvektörler normlleştirilir. ' Norml<>0: özvektürün en büyük elemn olck şekilde normlleştir. ' Norml=0: hiç bir şey ypm, çık IF norml = 0 THEN EXIT SUB FOR i = TO n j = (i - ) * n + je = i * n Dmxx = 0 FOR j = j TO je IF ABS(x(j)) > ABS(Dmxx) THEN Dmxx = x(j) Dmxx = / Dmxx FOR j = j TO je x(j) = x(j) * Dmxx JNormlize Alt progrmı END SUB ' jnormlize Ahmet TOPÇU, Bilgisyr Destekli Nümerik Anliz, Eskişehir Osmngzi Üniversitesi, 204, http://mmf2.ogu.edu.tr/topcu/ 232