sublinear sayı n'inci fibonacci zaman
Alt doğrusal zamanda n'inci fibonacci sayısını hesaplamak için bir algoritma var mı?
CEVAP
Pillsy aşağıdaki matris üs alma, matris için böyle bir referans yok
M = [1 1] [1 0]
fib(n) = Mn1,2
Güçler tekrarlanan çarpma kullanarak matris yetiştirmek çok verimli değil.
Matris üs için iki yaklaşım böl ve fethet verirMn. ben^>Ç( . ben^>n lnsabit), ama hataları sınırlı kayan nokta hassas. nedeniyle tanıtabilir hangi adımları, ya da n-boyutlu ayrışma
Eğer tam bir kayan nokta değeri uygulamanız hassasiyetle daha büyük isterseniz, (ln n ) yaklaşımı bu ilişkinin temelinde kullanmak zorunda:
Mn = (Mn/2)2 if n even = M.Mn-1 if n is odd
Öz deÄŸeri az parçalanmaMbulur iki matrisiUveΛbu . böyle ^b>Λçapraz ve
M = U Λ U-1 Mn = ( U Λ U-1) n = U Λ U-1 U Λ U-1 U Λ U-1 ... n times = U Λ Λ Λ ... U-1 = U Λ n U-1Köşegen bir matris yetiÅŸtirmekΛiçin . ben^>nth güç her elemanı yetiÅŸtirme basit bir mesele deÄŸildirΛiçin . ben^>ninci, bu yetiÅŸtirme(1) O bir yöntem verirMiçin . ben^>ninci güç. Ancak, deÄŸerleriΛtamsayılar olmak deÄŸil, büyük olasılıkla bazı hatalar ortaya çıkar.
TanımlamaΛ2x2 matrisi için
Λ = [ λ1 0 ] = [ 0 λ2 ]
Her bulmak içinλbiz çözmek
|M - λI| = 0hangi verir
|M - λI| = -λ ( 1 - λ ) - 1 λ² - λ - 1 = 0
kuadratik formül kullanarak
λ = ( -b ± √ ( b² - 4ac ) ) / 2a = ( 1 ± √5 ) / 2 { λ1, λ2 } = { Φ, 1-Φ } where Φ = ( 1 √5 ) / 2
Eğer Jason cevabı okuduysanız eğer, bunun nereye gittiğini nerede olduğunu görebilirsiniz.
Bu öz vektörleri için çözmeX
if X1 = [ X1,1, X1,2 ] M.X1 1 = λ1X1 X1,1 X1,2 = λ1 X1,1 X1,1 = λ1 X1,2 => X1 = [ Φ, 1 ] X2 = [ 1-Φ, 1 ]
Bu vektörler verinU:
U = [ X1,1, X2,2 ] [ X1,1, X2,2 ] = [ Φ, 1-Φ ] [ 1, 1 ]
Tersine çevirmeUkullanarak
A = [ a b ] [ c d ] => A-1 = ( 1 / |A| ) [ d -b ] [ -c a ]
bu yüzdenU-1tarafından . verilir
U-1 = ( 1 / ( Φ - ( 1 - Φ ) ) [ 1 Φ-1 ] [ -1 Φ ] U-1 = ( √5 )-1 [ 1 Φ-1 ] [ -1 Φ ]
Akıl sağlığını kontrol edin:
UΛU-1 = ( √5 )-1 [ Φ 1-Φ ] . [ Φ 0 ] . [ 1 Φ-1 ] [ 1 1 ] [ 0 1-Φ ] [ -1 Φ ] let Ψ = 1-Φ, the other eigenvalue as Φ is a root of λ²-λ-1=0 so -ΨΦ = Φ²-Φ = 1 and Ψ Φ = 1 UΛU-1 = ( √5 )-1 [ Φ Ψ ] . [ Φ 0 ] . [ 1 -Ψ ] [ 1 1 ] [ 0 Ψ ] [ -1 Φ ] = ( √5 )-1 [ Φ Ψ ] . [ Φ -ΨΦ ] [ 1 1 ] [ -Ψ ΨΦ ] = ( √5 )-1 [ Φ Ψ ] . [ Φ 1 ] [ 1 1 ] [ -Ψ -1 ] = ( √5 )-1 [ Φ²-Ψ² Φ-Ψ ] [ Φ-Ψ 0 ] = [ Φ Ψ 1 ] [ 1 0 ] = [ 1 1 ] [ 1 0 ] = M
Akıl sağlığını kontrol tutar.
Şimdi hesaplamak için ihtiyacımız olan her şey varM. ben^>n
Mn = UΛnU-1 = ( √5 )-1 [ Φ Ψ ] . [ Φn 0 ] . [ 1 -Ψ ] [ 1 1 ] [ 0 Ψn ] [ -1 Φ ] = ( √5 )-1 [ Φ Ψ ] . [ Φn -ΨΦn ] [ 1 1 ] [ -Ψn ΨnΦ ] = ( √5 )-1 [ Φ Ψ ] . [ Φn Φn-1 ] [ 1 1 ] [ -Ψn -Ψn-1 ] as ΨΦ = -1 = ( √5 )-1 [ Φn 1-Ψn 1 Φn-Ψn ] [ Φn-Ψn Φn-1-Ψn-1 ]
bu yüzden
fib(n) = Mn1,2 = ( Φn - (1-Φ)n ) / √5
Formülü başka bir yerde verilen katılıyor.
Sen ortaklıkları ondan tekrarın ilişki, ama mühendislik hesaplama ve simülasyon hesaplama özdeğerler ve öz büyük matrislerin önemli bir aktivite olarak verir istikrar ve harmonikler sistemleri denklemleri yanı sıra, izin yetiştirme matrisleri için yüksek güçler etkili.