METODE NUMERICE: Laborator #4 Eliminare gaussiană cu pivotare totală şi scalare. Algoritmul Thomas pentru rezolvarea sistemului 3-diagonal

Similar documents
1.3. OPERAŢII CU NUMERE NEZECIMALE

Sisteme cu logica fuzzy

O V E R V I E W. This study suggests grouping of numbers that do not divide the number

UNITATEA DE ÎNVĂȚARE 3 Analiza algoritmilor

Rezolvarea ecuaţiilor şi sistemelor de ecuaţii diferenţiale ordinare (II)

Soluţii juniori., unde 1, 2

Ecuatii si inecuatii de gradul al doilea si reductibile la gradul al doilea. Ecuatii de gradul al doilea

Divizibilitate în mulțimea numerelor naturale/întregi

Teorema Reziduurilor şi Bucuria Integralelor Reale Prezentare de Alexandru Negrescu

Utilizarea limbajului SQL pentru cereri OLAP. Mihaela Muntean 2015

Utilizarea claselor de echivalenta in analiza asistata de calculator a sistemelor cu evenimente discrete

array a[0..n-1] a[0] = v0,..., a[n-1] = vn-1

COMPARATIVE DISCUSSION ABOUT THE DETERMINING METHODS OF THE STRESSES IN PLANE SLABS

Inteligenta Artificiala

Liste. Stive. Cozi SD 2017/2018

Cercet¼ari operaţionale

Cristalul cu N atomi = un sistem de N oscilatori de amplitudini mici;

Reactoare chimice cu curgere piston (ideala) (Plug Flow Reactor PFR) cu amestecare completa (Mixed Flow Reactor MFR) de tip batch (autoclava)

GENERATOARE DE SEMNAL DIGITALE

Rădăcina pătrată a unei matrici reale de ordinul 2

CURS 11: Programare dinamică - II - Algoritmica - Curs 12 1

ON THE QUATERNARY QUADRATIC DIOPHANTINE EQUATIONS (II) NICOLAE BRATU 1 ADINA CRETAN 2

Gradul de comutativitate al grupurilor finite 1

2. Finite Impulse Response Filters (FIR)

Barem de notare clasa a V-a

Subiecte geometrie licenta matematica-informatica 4 ani

Laborator 5. Instructiuni de control logic : FOR, IF, WHILE. - Staţii de lucru care au instalat Orcad9.2. si MatLab 7.1

Procedeu de demonstrare a unor inegalităţi bazat pe inegalitatea lui Schur

Reactoare chimice cu curgere piston (ideala) cu amestecare completa de tip batch (autoclava)

Habilitation Thesis. Periodic solutions of differential systems: existence, stability and bifurcations

Prelegerea 7. Sistemul de criptare AES. 7.1 Istoric

APLICAŢII ALE FORMULELOR LUI NEWTON PENTRU POLINOAME SIMETRICE

Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor

Arhitectura sistemelor de calcul

TWO BOUNDARY ELEMENT APPROACHES FOR THE COMPRESSIBLE FLUID FLOW AROUND A NON-LIFTING BODY

Pentru clasa a X-a Ştiinţele naturii-sem II

QUASI-ANALYTIC SOLUTIONS OF FIRST-ORDER PARTIAL DIFFERENTIAL EQUATIONS USING THE ACCURATE ELEMENT METHOD

ALGORITMI DE OPTIMIZARE IN INGINERIE ELECTRICA. Sef lucrari ing. Alin-Iulian DOLAN

Programarea Dinamica. (si alte chestii adiacente) Andrei Olariu

A GENERALIZATION OF A CLASSICAL MONTE CARLO ALGORITHM TO ESTIMATE π

Sisteme cu logica fuzzy cu mai multe intrari (MISO)

FORMULELE LUI STIRLING, WALLIS, GAUSS ŞI APLICAŢII

ȘIRURI (TABLOURI UNIDIMENSIONALE)

Controlul predictiv bazat pe modele intare-stare-iesire. Cuprins. 2. Modele intrare-stare-iesire :01

Metode clasice. Camelia Chira.

Modelling the Steady State Characteristic of ph Neutralization Process: a Neuro-Fuzzy Approach

Legi de distribuţie (principalele distribuţii de probabilitate) Tudor Drugan

Alte rezultate din teoria codurilor

Despre AGC cuasigrupuri V. Izbaș

1 Generarea suprafeţelor

Câteva rezultate de algebră comutativă

2D AND 3D PROCESSING OF THE INTERDEPENDENCE BETWEEN THE COMFORT MAIN INDICATORS

Laborator 4. Rezolvarea ecuaţiilor diferenţiale în Matlab

"IIITO-TEC 'NIKI" & EQUIPME

PROBLEME DIVERSE lecţie susţinută la lotul de 13 de Andrei ECKSTEIN Bucureşti, 25 mai 2015

Tablouri bidimensionale(matrici)

SIMULAREA DECIZIEI FINANCIARE

ELEMENTE DE DINAMICĂ ŞI GEOMETRIE PE SPAŢII VECTORIALE POISSON

REZUMATUL TEZEI DE DOCTORAT

Laborator 3. Backtracking iterativ

Graduări pe algebre de matrice

Teoreme de compresie-extensie de tip Krasnoselskii şi aplicaţii (Rezumatul tezei de doctorat)

PROTECTII PRIN RELEE. (2) _ Principii si particularitati ale principalelor protectii

Logică și structuri discrete. Marius Minea 25 septembrie 2017

COMPARATIVE STUDY OF STRUCTURAL ANALYSIS APPLIED TO AGRICULTURAL MACHINES BODIES AND ACCOMPLISHED WITH SOLID WORKS AND AUTODESK INVENTOR PROGRAMS

FINITE ELEMENT ANALYSIS OF FRICTIONAL CONTACTS

Nonlinear Vibrations of Elastic Beams

Modelarea traficului in cadrul retelelor de radiotelefonie mobila

INEGALITĂŢI DE TIP HARNACK ŞI SOLUŢII POZITIVE MULTIPLE PENTRU PROBLEME NELINIARE

PRELUCRARI PE IMAGINI BINARE (ALB/NEGRU)

Sisteme de Recunoastere a Formelor Lab 12 Clasificare cu Support Vector Machine

Calcul Numeric. Cursul Anca Ignat

Metode numerice de aproximare. a zerourilor unor operatori. şi de rezolvare a inegalităţilor variaţionale. cu aplicaţii

ON THE ASYMPTOTIC BEHAVIOR OF DYNAMICAL SYSTEMS AND APPLICATIONS

INCLUZIUNI OPERATORIALE PRIN TEHNICA PUNCTULUI FIX ÎN SPAŢII METRICE VECTORIALE

OPTIMAL OBSERVABILITY OF PMU'S USING ANALYTIC HIERARCHY PROCESS (AHP) METHOD

METODOLOGIE PRIVIND PROGRAMUL DE URMARIRE I in TIMP A COMPORTARII CONSTRUCTIILOR DIN PUNCT DE VEDERE AL CERINTELOR FUNCTIONALE

4/68. Mini-comutatoare cu came. Prezentare generalã a sistemului. Întreruptoare Pornit-Oprit TM. Comutatoare de comandã TM.

ANOVA IN THE EDUCATIONAL PROCESS

GAZETA MATEMATICĂ SERIA A. ANUL XXXVI (CXV) Nr. 1 2/ 2018 ARTICOLE. Computing exponential and trigonometric functions of matrices in M 2 (C)

Metode şi Algoritmi de Planificare (MAP) Curs 2 Introducere în problematica planificării

LABORATORY 4 INFINITE IMPULSE RESPONSE FILTERS

OPENPH - NUMERICAL PHYSICS LIBRARY

Rezultate în Teoria Punctului Fix şi Procese Iterative cu Aplicaţii

Curs 5 ELEMENTE STRUCTURALE SOLICITATE LA RASUCIRE

BABEŞ-BOLYAI UNIVERSITY CLUJ-NAPOCA FACULTY OF MATHEMATICS AND COMPUTER SCIENCE

Ordin. pentru aprobarea structurii informaţiilor înscrise pe cardul naţional de asigurări sociale de sănătate

Definiţie. Pr(X a) - probabilitatea ca X să ia valoarea a ; Pr(a X b) - probabilitatea ca X să ia o valoare în intervalul a,b.

Teoreme de Analiză Matematică - I (teorema Weierstrass-Bolzano) 1

MODEL FOR FLEXIBLE PLATES SUPPORTED ON PILES

Figura 7.12 Multiscopul: schema bloc simplificată a părţii specifice osciloscopului hibrid. U Y CS S/T-H ADC MD DAC TC

ARTICOLE ŞI NOTE MATEMATICE

GIDD PENTRU CALCULUL CONSUMULUI DE CA.LOURA AL CONSTRUCTIILOR DOTATE CU ' A SISTEME PASIVE DE INCALZIRE SO LARA INDICATIV GP

Curs 6. Discrete Event Simulation

STRUCTURAL PARASITIC CAPACITANCE REDUCTION TECHNIQUES IN PLANAR MAGNETIC INTEGRATED STRUCTURES

LIGHTNING MVP System

The 2017 Danube Competition in Mathematics, October 28 th. Problema 1. Să se găsească toate polinoamele P, cu coeficienţi întregi, care

ANALYTICAL AND GRAPHICAL SOLUTIONS TO PROBLEMS IN DESCRIPTIVE GEOMETRY INVOLVING PLANES AND LINES

Dynamic Response of Beams on Elastic Foundation with Axial Load

Counties of Romania List

Transcription:

METODE NUMERICE: Laborator #4 Eliminare gaussiană cu pivotare totală şi scalare. Algoritmul Thomas pentru rezolvarea sistemului 3-diagonal Titulari curs: Florin Pop, George-Pantelimon Popescu Responsabil Laborator: Florin Pop Obiective Laborator Acest laborator are ca scop familiarizarea cu metodele numerice directe de transformare a unei matrici nesingulare la forma superior triunghiulară sau inferior triunghiulară. Aceaste metode poartă numele de eliminări Gaussiene. Cea mai simplă metodă de eliminare este eliminarea gaussiană cu pivotare parţială. Pentru această metodă vom prezenta algoritmul GPP. Cea mai bună metodă este eliminarea gaussiană cu pivotare totală sau completă, numit GPT în cadrul acestui laborator. O tehnică de scalare care micşorează eroarea şi elimină anularea flotantă este pivotarea parţială cu pivot scalat pe coloană (algoritmul GPPS). Eliminarea gaussiană este echivalentă cu metoda factorizării LU care trebuie să fie utilizată împreună cu o strategie de pivotare adecvată (factorizarea LUP). O strategie de pivotare este necesară în general deoarece este posibil ca eliminarea gaussiană să nu poată transforma o matrice dată la o formă triunghiulară. Pentru o matrice simetrică şi pozitiv definită cea mai bună metodă de aducere la forma triunghiulară este folosirea factorizării Cholesky. Algoritmul Thomas este o formă simplificată a eliminării gaussiene pentru matrici tridiagonale. Acest algoritm este folosit pentru rezolvarea sistemelor de ecuaţii liniare tridiagonale (des întâlnite în metodele de interpolare cu funcţii spine). Complexitatea algoritmului Thomas este O(n) în timp ce eliminările gaussiene au complexitatea O(n 3 ). Eliminarea gaussiana - G Eliminarea gaussiană este o tehnică pentru transformarea matricei A la forma superior triunghiulară. Matricea de transformare T este o matrice inferior triunghiulară unitară obţinută ca o secvenţă (produs) de transformări inferior triunghiulare elementare de forma T = T n 1 T n 2... T 1, unde matricile T p sunt inferior triunghiulare, de ordin n de forma: unde e p este coloana p din matricea unitate şi: T p = I n t p e T p (1) 1

t p = [ 0 0 µ pp µ np ] (2) Metoda de mai sus se poate realiza dacă toate sub-matricele de forma A [p] = A(1 : p, 1 : p) sunt nesingulare. Scalarii µ ip, numiţi multiplicatori gaussieni, care asigură satisfacerea condiţiei de anulare a elementelor din coloana p de sub diagonala principală au expresia: µ ip = a ip /a pp, i = p + 1 : n (3) În efectuarea operaţiei A T p A se vor memora multiplicatori gaussieni ın locul zerourilor create sub diaonala principală, primele p 1 coloane ale lui A nu sunt afectate, iar coloanele a j, j = p + 1 : n sunt transformate astfel: (T p a j ) i = ((I n t p e T p )a j ) i = (a j t p a pj ) i = a ij µ ip a pj, i = p + 1 : n. (4) Algoritmul G de eliminare gaussiană este: Algorithm 1 Eliminare Gaussiană 1: procedure G(A) 3: for i = p + 1 : n do 4: a ip µ ip = a ip /a pp ; 5: end for 6: for i = p + 1 : n do 7: for j = p + 1 : n do 8: a ij a ij µ ip a pj ; 9: end for 10: end for 11: end for 12: Return A; 13: end procedure Numărul de operaţii pentru algoritmul G este O(n 3 ) (aproximativ 2n3 3 operaţii), iar memoria folosită, conform cu schema descrisă este O(n 2 ). Nesingularitatea sub-matricelor nu este o condiţie necesară pentru existenţa şi unicitatea soluţiei unui sistem de forma Ax = b, unde A este adusă prin transformare la forma superior triunghiulară. Pentru a elimina această condiţie se introduc strategiile de pivotare: Eliminarea gaussiană cu pivotare parţială - GPP; Eliminarea gaussiană cu pivotare parţială cu pivot scalat - GPPS; Eliminarea gaussiană cu pivotare totală - GPT. Singularitatea sub-matricelor A [p] este echivalentă cu anularea elementului a pp, numit pivot, la pasul p al algoritmului G. Consecinţa acestei anulări conduce la imposibilitatea calculului multiplicatorilor gaussieni. Este necesară aducerea pe poziţia pivotului (linia p şi coloana p) a unui element nenul, preferabil de modul cât mai mare, prin permutare de linii şi/sau coloane. O matrice de permutare este o matrice care are un singur element nenul egal cu 1 pe orice linie şi pe orice coloană a sa. Ea se obţine din matricea unitate prin interschimbarea (o dată sau de mai multe ori) a două linii şi/sau a două coloane. Iată un exemplu (interschimbarea liniilor 1 şi 2, apoi a coloanelor 2 şi 3): Facultatea de Automatică şi Calculatoare, UPB Pagina 2 din 7

0 0 1 P = 1 0 0 0 1 0 Interschimbarea a două linii ale unei matrice este echivalentă cu multiplicarea acelei matrice cu o matrice de permutare la stânga. Interschimbarea a două coloane este echivalentă cu multiplicarea matricei cu o matrice de permutare la dreapta. Eliminarea gaussiana cu pivotare partiala - GPP Pivotarea parţială are loc numai prin permutarea liniilor. La pasul p al algoritmului G se aduce în poziţia (p, p) a pivotului cel mai mare element în modul dintre elementele subdiagonale din coloana p, fie acesta a ipp 0, prin permutarea liniilor p şi i p. Acest lucru este echivalent cu multiplicarea matricei A la stânga not cu matricea de permutare P ipp = P p, astfel încât pasul p calculează A T p P p A, întregul algoritm fiind: A U = T n 1 P n 1 T n 2 P n 2... T 1 P 1 A (5) Algoritmul GPP de eliminare gaussiană cu pivotare parţială este: Algorithm 2 Eliminarea gaussiană cu pivotare parţială 1: procedure GPP(A) 3: Determină primul i p (p i p n) a.i a ipp = max i=p:n {a ip }; 4: v(p) = i p ; 5: for j = p : n do 6: a pj a ipj; 7: end for 8: for i = p + 1 : n do 9: a ip µ ip = a ip /a pp ; 10: end for 11: for i = p + 1 : n do 12: for j = p + 1 : n do 13: a ij a ij µ ip a pj ; 14: end for 15: end for 16: end for 17: Return A, v; 18: end procedure Paşii 8-15 reprezintă algoritmul G pentru matricea permutată. Vectorul v memorează permutările de linii. Complexitatea algoritmului GPP este aceeaşi cu a lui G. Eliminarea gaussiana cu pivotare partiala cu pivot scalat - GPPS Această tehnică este similară cu precedenta, doar că definim la început un factor de scalare pentru fiecare linie i, factor de forma: Facultatea de Automatică şi Calculatoare, UPB Pagina 3 din 7

s i = max j=1:n { a ij } sau s i = n a ij (6) Dacă există un i astfel încât s i = 0 atunci matricea este singulară. Paşii următori vor stabili interschimbările care se vor face. La pasul p se va găsi cel mai mic întreg i p astfel încât: a ipp s ip j=1 a jp = max (7) j=1:n s j Scalarea ne garantează că cel mai mare element din fiecare coloana are înainte de comparaţiile necesare pentru scimbare mărimea relativă 1. Scalarea se realizează doar în comparaţii, nu efectiv în matrice, astfel că impărţirea cu factorul de scalare nu produce nici o eroare de rotunjire. Algoritmul GPPS de eliminare gaussiană cu pivotare parţială cu pivot scalat este: Algorithm 3 Eliminarea gaussiană cu pivotare parţială cu pivot scalat 1: procedure GPPS(A) 3: Determină i p a.i. a ipp s ip 4: for j = 1 : n do 5: a pj a ipj; 6: end for 7: for i = p + 1 : n do 8: a ip µ ip = a ip /a pp ; 9: end for 10: for i = p + 1 : n do 11: for j = p + 1 : n do 12: a ij a ij µ ip a pj ; 13: end for 14: end for 15: end for 16: Return A, v; 17: end procedure = max j=1:n a jp s j ; v(p) = i p ; Paşii 8-15 reprezintă algoritmul G pentru matricea permutată. Vectorul v memorează permutările de linii. Complexitatea algoritmului GPP este aceeaşi cu a lui G. Eliminarea gaussiana cu pivotare totala - GPT Stabilitate numerică mai bună se obţine dacă pivotul de la pasul p se alege drept cel mai mare element în modul dintre elementele a ij, cu i = p : n, j = p : n, fie el a ipj p, şi este adus în poziţia (p, p) a pivotului prin permutarea liniilor p şi i p şi a coloanelor p şi j p. Acest lucru este echivalent cu multiplicarea matricei A la stânga cu matricea de permutare Pi st not pp = Pp st şi cu multiplicarea matricei A la dreapta cu matricea de permutare Pj dr not pp = Pp dr. La pasul p se calculează A T p Pp st APp dr, întregul algoritm fiind: A U = T n 1 P st n 1T n 2 P st n 2... T 1 P st 1 AP dr 1 P dr 2... P dr n 1. (8) Facultatea de Automatică şi Calculatoare, UPB Pagina 4 din 7

Algorithm 4 Eliminarea gaussiană cu pivotare totală 1: procedure GPT(A) 3: Determină i p şi j p (p i p, j p n) a.i a ipj p = max i=p:n,j=p:n {a ij }; v st (p) = i p ; v dr (p) = j p ; 4: for j = p : n do 5: a pj a ipj; 6: end for 7: for i = 1 : n do 8: a ip a ijp ; 9: end for 10: for i = p + 1 : n do 11: a ip µ ip = a ip /a pp ; 12: end for 13: for i = p + 1 : n do 14: for j = p + 1 : n do 15: a ij a ij µ ip a pj ; 16: end for 17: end for 18: end for 19: Return A, v st, v dr ; 20: end procedure Paşii 12-19 reprezintă algoritmul G pentru matricea permutată. Vectorul v st memorează permutările de linii iar v dr memorează permutările de coloane. Complexitatea algoritmului GPP este aceeaşi cu a lui G. Algoritmul Thomas pentru rezolvarea sistemului 3-diagonal Sistemul tridiagonal se poate scrie compact sub forma a i x i 1 + b i x i + c i x i+1 = d i, i = 1 : n cu menţiunea că a 1 = 0 şi c n = 0, iar componentele x 0 şi x n+1 nu sunt definite. Forma generală este: b 1 c 1 0 x a 2 b 2 c 1 d 1 2. x 2 d 2 a 3 b.. 3 x 3 = d 3...... cn 1.. 0 a n b n x n d n (9) Algoritmul presupune modificarea coeficienţilor sistemului şi aducerea lor la o formă prin care sistemul de poate rezolva direct prin substituţie înapoi. c i = c i b i i = 1 c i b i c i 1a i i = 2 : n 1 (10) Facultatea de Automatică şi Calculatoare, UPB Pagina 5 din 7

d i = d i b i i = 1 d i d i 1a i b i c i 1a i i = 2 : n. (11) Prin formulele de mai sus s-a executat de fapt un pas al eliminării gaussiene. Soluţia sistemului va fi dată de formulele: { xn = d n x i = d i c i x i+1 i = n 1 : 1. (12) Sistemul nu se mai păstrează în memorie prin întrega lui matricie, ci doar prin trei vectori de valori corespunzătoare celor trei diagonale. Algoritmul lui Thomas este utilizat deoarece este rapid şi apare frecvent în practică: interpolări, ecuaţii diferencţiale, etc. Deşi situaţia este rară, algoritmul poate fi instabil dacă b i c i 1a i = 0 sau numeric zero pentru orice i. Aceasta se întâmplă dacă matriciea este singulară, dar în cazuri rare se poate întampla şi pentru matrici nesingulare. Condiţia de stabilitate este, i: b i > a i + c i (13) condiţie care indică diagonal-dominanţa matricei A. Dacă algoritmul este numeric instabil se pot aplica strategii de pivotare, ca în cazul eliminării gaussiene. Implementarea algoritmului Thomas este dată mai jos: 1 function x = Thomas(a,b,c,d) 2 n = length(d); 3 4 % Operariile la limita; 5 c(1) = c(1) / b(1); 6 d(1) = d(1) / b(1); 7 8 % calculul coeficientilor pe caz general. 9 for i = 2:n-1 10 temp = b(i) - a(i) * c(i-1); 11 c(i) = c(i) / temp; 12 d(i) = (d(i) - a(i) * d(i-1))/temp; 13 end 14 d(n) = (d(n) - a(n) * d(n-1))/(b(n) - a(n) * c(n-1)); 15 16 % Substitutia inapoi pentru rezolvarea sistemului de ecuatii 17 x(n) = d(n); 18 for i = n-1:-1:1 19 x(i) = d(i) - c(i) * x(i + 1); 20 end Listing 1: Implementarea în Matlab pentru algoritmul Thomas. Facultatea de Automatică şi Calculatoare, UPB Pagina 6 din 7

Problema 1 Implementaţi în MATLAB algoritmii G, GPP, GPPS şi GPT. Problema 2 Modificaţi algoritmii GPP şi GPT pentru a lucra cu matrici superior Hessemberg. Imoplementaţi H GPP şi H GPT. Problema 3 Construiţi o variantă modificată pentru algoritmul lui Thomas care să lucreze cu matricea: b 1 0 c 1 0 0 b 2 0 c 2 a 3 0 b 3 0 c 3 A =............... a n 2 0 b n 2 0 c n 2 a n 1 0 b n 1 0 0 a n 0 b n Scrieţi o funcţie MATLAB cu semnătura function x = solve(a,b,c,d) care rezolvă sistemul de ecuaţii Ax = d. Facultatea de Automatică şi Calculatoare, UPB Pagina 7 din 7