Algoritmul Levinson-Durbin

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Algoritmul Levinson-Durbin , în algebră liniară , este utilizat pentru a calcula, cu o metodă recursivă , soluția unei ecuații care implică o matrice Toeplitz . Algoritmul rulează pași, ceea ce reprezintă o îmbunătățire majoră față de metoda Gaussian Elimination , care necesită pași.

Algoritmul Levinson - Durbin a fost propus pentru prima dată de Norman Levinson , în 1947, și îmbunătățit de James Durbin în 1960; ulterior a fost îmbunătățit și mai mult, aducându-l din până la multiplicări, de la WF Trench și, respectiv, S. Zohar.

Alte metode de prelucrare a datelor includ descompunerea Schur și descompunerea Cholesky . În comparație cu acestea, recursiunea Levinson (în special recursivitatea Levinson divizată) tinde să fie mai rapidă din punct de vedere al calculului, dar mai sensibilă la inexactitățile de calcul, cum ar fi erorile de rotunjire .

Algoritmul Bareiss pentru matricile Toeplitz (nu trebuie confundat cu algoritmul general Bareiss) este la fel de rapid ca recursiunea Levinson-Durbin, dar folosește pași, în timp ce recurența Levinson - Durbin necesită numai pași. Totuși, algoritmul Bareiss este stabil din punct de vedere numeric , [1] [2] în timp ce recursiunea Levinson-Durbin, în cel mai bun caz, este doar slab stabilă (adică arată stabilitate numerică pentru sistemele liniare bine condiționate ). [3]

Algoritmi mai noi, numiți asimptotic rapid sau, în unele texte, algoritmi Toeplitz super- rapizi, pot rezolva problema în pentru diverse (ex. , [4] [5] [5] ). Recursiunea Levinson-Durbin rămâne populară din mai multe motive; în primul rând, este relativ ușor de înțeles; în plus, poate fi mai rapid decât un algoritm super rapid pentru bebeluși (obișnuit ). [6]

Derivare

Introducere

Ecuațiile matriciale au următoarea formă:

Algoritmul Levinson-Durbin poate fi utilizat pentru orice ecuație, atâta timp cât este o matrice Toeplitz cunoscută, cu diagonală principală diferită de zero; unde este este vectorul cunoscut, în timp ce este vectorul necunoscut al numerelor a fi determinat.

Considera un vector compus în întregime din zerouri, cu excepția celui de-al i- lea termen, care conține o valoare unitară. Lungimea acestuia va fi implicit determinată de context. Termenul Se referă la lățimea matricei având dimensiuni . În cele din urmă, indicii superiori se referă la un indice inductiv , în timp ce indicii indică indicii. De exemplu (și definiție) matricea este o matrice care copiază blocul sus în stânga , adică .

De aceea, de asemenea este o matrice Toeplitz; în sensul că poate fi scris în următoarea formă:

Etape introductive

Algoritmul continuă urmând doi pași. În primul pas, se stabilesc două grupuri de vectori, numiți vectori înainte și invers . Vectorii înainte sunt folosiți pentru a ajuta la obținerea setului de vectori înapoi; prin urmare, ele pot fi imediat aruncate. În schimb, sunt necesari vectori înapoi pentru al doilea pas, unde sunt utilizați pentru a crea soluția dorită.

Recursiunea Levinson-Durbin definește încă un „vector înainte”, numit , un vector de lungime n care satisface ecuația:

Încă un „vector înapoi”, numit este definit într-un mod similar; este vectorul de lungime n care satisface ecuația:

O simplificare importantă poate apărea atunci când este o matrice simetrică ; în acest caz cei doi vectori sunt corelați de , adică sunt inversări de linie una de alta. Acest lucru poate salva unele calcule în acest caz particular.

Recuperați transportatorii

Chiar dacă matricea nu este simetrică, încă un vector înainte și înapoi poate fi găsit din vectorii de lungime după cum urmează. În primul rând, vectorul din spate poate fi „extins” cu un zero pentru a obține:

Plecând de la la , coloana suplimentară adăugată la matrice nu deranjează soluția atunci când se utilizează un zero pentru a extinde vectorul înainte. Cu toate acestea, linia suplimentară adăugată la matrice a perturbat soluția; și a creat un termen de eroare nedorit ε f care apare în cele din urmă. Ecuația anterioară dă valoarea:

Această eroare va fi returnată în scurt timp și eliminată de noul vector forward; dar mai întâi, vectorul înapoi trebuie extins într-un mod similar (deși inversat). Pentru vectorul înapoi avem:

La fel ca înainte, coloana suplimentară la matrice nu deranjează acest nou vector înapoi; dar linia suplimentară o face. Iată o altă eroare nedorită egal cu:

Acești doi termeni de eroare pot fi folosiți pentru a forma vectori de ordine superioară înainte și înapoi descriși după cum urmează. Folosind liniaritatea matricilor, identitatea următoare este valabilă pentru toți :

De sine Și sunt aleși dreptaci sau , atunci cantitatea dintre paranteze va fi egală cu definiția celui de-al n-lea vector înainte sau înapoi, respectiv. Cu alegerea termenilor Și , suma vectorilor din paranteze este simplă și produce rezultatul dorit.

Pentru a găsi acești coeficienți, , trebuie să fie astfel încât:

și, respectiv, , sunt astfel încât:

Înmulțind și împărțind ecuațiile de mai sus cu obținem următoarea ecuație:

Acum, toate zerourile celor doi vectori de mai sus sunt ignorate, rămâne doar următoarea ecuație:

Cu aceste soluții (folosind formula inversă a matricei Cramer ), noii vectori înainte și invers sunt:

Execuția acestor însumări vectoriale, prin urmare, dă al n-lea vector înainte și înapoi începând cu cele anterioare. Rămâne doar să găsim primul dintre acești vectori, apoi cu sume rapide și multiplicări rapide obținem termenii rămași. Primii vectori înainte și înapoi sunt pur și simplu:

Folosind vectori înapoi

Pașii anteriori dau N vectori înapoi pentru . De acolo, o ecuație mai arbitrară este:

Soluția poate fi construită în același mod recursiv în care au fost construiți vectorii înapoi. În consecință, trebuie generalizată la o succesiune de intermediar, astfel încât .

Soluția este apoi construită recursiv observând că, dacă

apoi, inserând din nou un zero la sfârșitul vectorului și definind o constantă de eroare acolo unde este necesar, avem:

Putem folosi apoi al n-lea vector înapoi pentru a elimina eroarea și a o înlocui cu formula dorită după cum urmează:

Extinderea acestei metode până la produce soluția dorită .

În practică, acești pași sunt adesea realizați concomitent cu restul procedurii, formând o unitate coerentă și merită să fie tratați individual.

Algoritmul Levinson-Durbin

De sine nu o matrice Toeplitz în sens strict, ci o matrice bloc Toeplitz, recursiunea Levinson poate fi derivată în același mod având în vedere submatricea Toeplitz (Musicus 1988).

Tablourile cu blocuri Toeplitz apar în mod natural în algoritmi de procesare a semnalului atunci când se tratează mai multe fluxuri de semnal (de exemplu în sistemele MIMO) sau semnale ciclostationare.

Aplicarea practică a algoritmului Levinson-Durbin

Algoritmul Levinson-Durbin este utilizat pe scară largă pentru rezoluția modelelor autoregresive de ordine (utilizat în protocolul GSM ), care sunt prezentate sub următoarea ecuație a diferenței :

unde este este eșantionul actual al sistemului estimat de model , sunt parametrii modelului, care se aplică la mostre anterioare sau - în mod similar - definesc memoria modelului (în acest caz de comandă ). La sfarsit este reziduul de predicție al probei pe care doriți să o minimizați, adică: componenta imprevizibilă a sistemului.

Aceste ecuații sunt prezentate sub formă de matrice Toeplitz, prin urmare algoritmul Levinson-Durbin este utilizat pentru soluția lor.

Pseudocod pentru recursiunea Levinson-Durbin

Algoritmul se bazează pe calculul coeficienților autoregresivi ai matricilor de ordin crescător. Este împărțit în două faze: o primă inițializare pentru calcularea parametrului sau - care este același - pentru cazul elementar al matricei . Ulterior, vom continua cu calculul iterativ al parametrilor pentru matricile de ordine via, crescând treptat , , ..., .

Folosind notația MATLAB / Octave , pseudocodul pentru calcularea recursiunii Levinson-Durbin este următorul [7] :

 k = M ( 2 ) / M ( 1 );                                    % Estimați primul element
X = k ;
ȘI = ( 1 - k2 ) * M ( 1 );                                % Calculează eroarea pătrată medie
pentru the = 2 : p
    k = ( M ( i + 1 ) - X * M ( 2 : i )) / Și ;                % Coeficienți de reflecție
    X = [ k , X - k * x ( i - 1 : - 1 : 1 )];                   % Estimați următoarele elemente
    ȘI = ( 1 - k2 ) * Și ;                               % Actualizează eroarea pătrată medie
Sfârșit

X = [ 1 , - x ( N : - 1 : 1 )];                               % Returnează vectorul necunoscut

Trebuie subliniat faptul că MATLAB funcționează cu vectori și matrici, prin urmare - dacă doriți să traduceți codul în limbi precum C ++ sau Java , veți obține două imbricate pentru bucle.

Notă

  1. ^ Adam W. Bojanczyk, Brent, RP, De Hoog, FR, & Sweet, DR, Despre stabilitatea Bareiss și algoritmi de factorizare Toeplitz înrudiți , în SIAM Journal on Matrix Analysis and Applications , vol. 16, n. 1, 1995, pp. 40-57.
  2. ^ Brent, Richard P., Stabilitatea algoritmilor rapide pentru sisteme liniare structurate , în Algoritmi fiabili rapid pentru matrici cu structură , Society for Industrial and Applied Mathematics, 1999, pp. 103-116.
  3. ^ Hari Krishna, Yunbiao Wang, Algoritmul Levinson divizat este slab stabil , în jurnalul SIAM privind analiza numerică , vol. 30, n. 5, 1993, pp. 1498-1508.
  4. ^ Bojanczyk, Adam W., Richard P. Brent și Frank R. De Hoog, Un algoritm slab stabil pentru sistemele generale Toeplitz , în Algoritmi numerici , vol. 1, arXiv: 1005.0503, 2010, pp. 225-244.
  5. ^ a b Stewart, Michael, Un solver Toeplitz super rapid cu stabilitate numerică îmbunătățită , în jurnalul SIAM privind analiza matricei și aplicații , vol. 25, nr. 3, 2003, pp. 669-693.
  6. ^ Ammar, Gregory S. și William B. Gragg, Soluție super rapidă a sistemelor Toeplitz definite pozitive reale , în SIAM Journal on Matrix Analysis and Applications , vol. 9, nr. 1, 1988, pp. 61-76.
  7. ^ Giacomo Alessandroni, Analiză și modele pentru monitorizarea suprafeței drumurilor ( PDF ), 2016, p. 42, DOI : 10.13140 / RG.2.1.2935.5283 . Adus la 11 octombrie 2019 .

Bibliografie

Surse pentru definiții

  • Levinson, N. (1947). "Criteriul de eroare Wiener RMS în proiectarea și predicția filtrelor." J. Math. Fizic. , v. 25, pp. 261-278.
  • Durbin, J. (1960). „Montarea modelelor de serie cronologică”. Rev. Inst. Int. Stat. , v. 28, pp. 233–243.
  • Trench, WF (1964). „Un algoritm pentru inversiunea matricilor Toeplitz finite.” J. Soc. Indust. Aplic. Matematica. , v. 12, pp. 515-522.
  • Musicus, BR (1988). „Algoritmi Levinson și Fast Choleski pentru matricele Toeplitz și Almost Toeplitz”. RLE TR nr. 538, MIT. [1]
  • Delsarte, P. și Genin, YV (1986). „Algoritmul Levinson divizat”. Tranzacții IEEE privind acustica, vorbirea și procesarea semnalului , v. ASSP-34 (3), pp. 470–478.

Lucrări viitoare

Sinteză

  • Bäckström, T. (2004). "2.2. Levinson - Recurență Durbin." Modelarea predictivă liniară a vorbirii - constrângeri și descompunerea perechii de spectru de linie. Teză de doctorat. Raportul nr. 71 / Universitatea de Tehnologie din Helsinki, Laboratorul de acustică și procesare a semnalului audio. Espoo, Finlanda. [3]
  • Claerbout, Jon F. (1976). "Capitolul 7 - Aplicații ale formelor de undă ale celor mai mici pătrate." Bazele procesării datelor geofizice. Palo Alto: Blackwell Scientific Publications. [4]
  • WH Press, SA Teukolsky, WT Vetterling și BP Flannery, secțiunea 2.8.2. Matrici Toeplitz , în Rețete Numerice: Arta Computării Științifice , 3rd, New York, Cambridge University Press, 2007, ISBN 978-0-521-88068-8 .
  • Golub, GH și Loan, CF Van (1996). "Secțiunea 4.7: Toeplitz și sisteme conexe" Calcule matriciale , Johns Hopkins University Press

Elemente conexe

Matematica Portalul de matematică : accesați intrările Wikipedia care se ocupă de matematică