ADRIAN CHISĂLIŢĂ ANA. Biblioteca de Analiză numerică surse Fortran 90. Manual de utilizare

Similar documents
Lucrarea de laborator nr. 11

Universitatea din Bucureşti Facultatea de Matematică şi Informatică. Matematică (Varianta 1)

CURS 6: APROXIMAREA FUNCTIILOR PRIN REGRESIE

7 ECUAŢII ALGEBRICE ŞI TRANSCENDENTE

Testarea ipotezelor statistice. Stud. Master - AMP. Cateva elemente recapitulative PRELUCRAREA DATELOR DE SONDAJ SI INFERENTA STATISTICA

Probleme de numărare: combinări, aranjamente, permutări de Manuela Prajea 1)

Prezentarea şi prelucrarea datelor experimentale

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

Sisteme cu logica fuzzy

APLICATII NUMERICE DE STATISTICA IN FARMACIE SI IN STUDIILE CLINICE VOL. I metode manuale. Editia a II a Revizuita

ALGORITMI GENETICI DE OPTIMIZARE

1.3. OPERAŢII CU NUMERE NEZECIMALE

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

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

1 0, x? x x. 1 Root finding. 1.1 Introduction. Solve[x^2-1 0,x] {{x -1},{x 1}} Plot[x^2-1,{x,-2,2}] 3

Divizibilitate în mulțimea numerelor naturale/întregi

OPTIMIZAREA DECIZIILOR ÎN CONDIŢII DE RISC ŞI INCERTITUDINE

Curs 1 PARAMETRII ELEMENTELOR DE SISTEM

REZOLVAREA NUMERICĂ A SISTEMELOR DE ECUAłII LINIARE

PORTOFOLIILOR CU CONSTRÂNGERI DE LICHIDITATE FUZZY MODELING THE PORTFOLIO SELECTION PROBLEM WITH FUZZY LIQUIDITY CONSTRAINTS

UTILIZAREA METODEI NUCLEELOR DEGENERATE MODIFICATĂ LA REZOLVAREA APROXIMATIVĂ A ECUAŢIILOR INTEGRALE LINIARE DE TIP FREDHOLM

A L A BA M A L A W R E V IE W

MODELAREA DECIZIEI FINANCIARE - Manual de studiu individual -

IMAR Problema 1. Fie P un punct situat în interiorul unui triunghi ABC. Dreapta AP intersectează

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

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

MODELAREA SISTEMELOR ORIENTATE PE SERVICII PRIN REŢELE PETRI RECONFIGURABILE CU ATRIBUTE MATRICEALE

Prof univ dr. Sever Spânulescu - LUCRARI DE LABORATOR

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

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

METODE DE CĂUTARE DIRECTĂ Algoritmi şi Studii Numerice

COMPUTERISED ALGEBRA USED TO CALCULATE X n COST AND SOME COSTS FROM CONVERSIONS OF P-BASE SYSTEM WITH REFERENCES OF P-ADIC NUMBERS FROM

Lucrarea de laborator nr. 8

Soluţii juniori., unde 1, 2

T h e C S E T I P r o j e c t

APLICATII NUMERICE DE STATISTICA IN FARMACIE SI IN STUDIILE CLINICE

CATAVASII LA NAȘTEREA DOMNULUI DUMNEZEU ȘI MÂNTUITORULUI NOSTRU, IISUS HRISTOS. CÂNTAREA I-A. Ήχος Πα. to os se e e na aș te e e slă ă ă vi i i i i

Teorema Reziduurilor şi Bucuria Integralelor Reale Prezentare de Alexandru Negrescu

VARIABILE ALEATOARE. este o mulţime infinită de numere reale.

Numere prime. O selecţie de probleme pentru gimnaziu

P a g e 5 1 of R e p o r t P B 4 / 0 9

Revista Informatica Economica, nr. 1 (21)/2002. Program pentru utilizarea functiilor spline în probleme de interpolare neliniara

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

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

1. A real number x is represented approximately by , and we are told that the relative error is 0.1 %. What is x? Note: There are two answers.

n 1 n 2 n 2 n n 1 ln n 2 1 n Express the number as a ratio of integers

Raport de Cercetare APLICAII ALE FILTRELOR NELINIARE ÎN IDENTIFICAREA I COMPENSAREA NELINIARITILOR NEDORITE CAPITOLUL I

Ash Wednesday. First Introit thing. * Dómi- nos. di- di- nos, tú- ré- spi- Ps. ne. Dó- mi- Sál- vum. intra-vé-runt. Gló- ri-

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

O tehnica fuzzy de partitionare si inductie automata bazata pe extensia fuzzy a distantei c 2

Numerical Analysis Formulae Booklet

Review Exam II Complex Analysis

Teoria probabilit¼aţilor şi statistic¼a matematic¼a

Spreadsheet Problem Solving

Asymptotic Formulas Composite Numbers II

DESPRE COMPLEMENTAREA METODELOR JEFFERSON, ADAMS, WEBSTER ŞI HUNTINGTON-HILL

2. Lema chinezească a resturilor. Fie,,..., mai mari decât 1 astfel încât pentru. Atunci, oricare ar fi ϵ există unic determinat astfel încât,, unde.

Utilizarea limbajului SQL pentru cereri OLAP. Mihaela Muntean 2015

F48T10VHO, F60T10VHO, F72T10VHO, F96T12HO (1 LAMP ONLY) ELECTRICAL DATA (120V APPLICATION)

Gradul de comutativitate al grupurilor finite 1

2. METODA GRADIENTULUI CONJUGAT PENTRU REZOLVAREA SISTEMELOR ALGEBRICE LINIARE

GENERATOARE DE SEMNAL DIGITALE

Software Process Models there are many process model s in th e li t e ra t u re, s om e a r e prescriptions and some are descriptions you need to mode

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

BERNSTEIN COLLOCATION METHOD FOR SOLVING NONLINEAR DIFFERENTIAL EQUATIONS. Aysegul Akyuz Dascioglu and Nese Isler

QR Factorization and Singular Value Decomposition COS 323

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

Executive Committee and Officers ( )

The Periodic Table. Periodic Properties. Can you explain this graph? Valence Electrons. Valence Electrons. Paramagnetism

Acta Technica Napocensis: Civil Engineering & Architecture Vol. 54 No.1 (2011)

Use precise language and domain-specific vocabulary to inform about or explain the topic. CCSS.ELA-LITERACY.WHST D

Multiple Choice Test. Chapter Adequacy of Models for Regression

MATEMATICI SPECIALE PENTRU INGINERI

Modele neliniare. Teorie şi aplicaţii

Parts Manual. EPIC II Critical Care Bed REF 2031

Regression and the LMS Algorithm

ANOVA IN THE EDUCATIONAL PROCESS

Mu Sequences/Series Solutions National Convention 2014

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

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

( ) 2 2. Multi-Layer Refraction Problem Rafael Espericueta, Bakersfield College, November, 2006

Johns Hopkins University Department of Biostatistics Math Review for Introductory Courses

AN APPROACH TO THE NONLINEAR LOCAL PROBLEMS IN MECHANICAL STRUCTURES

Kernel-based Methods and Support Vector Machines

"IIITO-TEC 'NIKI" & EQUIPME

i;\-'i frz q > R>? >tr E*+ [S I z> N g> F 'x sa :r> >,9 T F >= = = I Y E H H>tr iir- g-i I * s I!,i --' - = a trx - H tnz rqx o >.F g< s Ire tr () -s

REGRESIA LINIARĂ ŞI CORELAŢIA

Johns Hopkins University Department of Biostatistics Math Review for Introductory Courses

Inteligenta Artificiala

CHEM 130 Exp. 8: Molecular Models

Test de Departajare pentru MofM 2014 (Bucureşti) Enunţuri & Soluţii

(C) Pavel Sedach and Prep101 1

UNITATEA DE ÎNVĂȚARE 3 Analiza algoritmilor

Chapter 5 Properties of a Random Sample

Le classeur à tampons

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

The exam must be written in ink. No calculators of any sort allowed. You have 2 hours to complete the exam. Periodic table 7 0

CS475 Parallel Programming

176 5 t h Fl oo r. 337 P o ly me r Ma te ri al s

Made the FIRST periodic table

Transcription:

ADRIAN CHISĂLIŢĂ ANA Bbloteca de Aalză umercă surse Fortra 90 Maual de utlzare Uverstatea Tehcă d Cluj-Napoca Cluj-Napoca, 202

2 Notă copyrght Versue ANA (o-le): Marte 202 Edţe Maual de utlzare (o-le): Marte 202 ANA se găseşte la următorul URL: ftp.utcluj.ro/pub/users/chsalta/ana/ (Maualul se găseşte î folderul ANA/DOC/) Copyrght Adra Chsălţă 99-202 Dreptur de utlzare a bblotec ANA. Î scop educaţoal: - Utlzarea este lberă. - Utlzatorul are dreptul la o cope a Bblotec ş Maualulu, petru uz persoal. - Utlzatorul poate modfca rutele după voe, î scop persoal. Referrea la rutele modfcate se va face cu ctarea surse orgale. Prevederle de ma sus echvalează cu lceţa educaţoală. 2. Î scop comercal: - Utlzarea î scopur comercale, sau îcorporarea de rute îtr-u produs comercal, este legală fără obţerea ue lceţe comercale. - Reproducerea î orce formă (tpărtă/electrocă) a Bblotec sau Maualulu, este terzsă. - Alte preveder ale Leg dreptulu de autor sut aplcable. Reproducerea uor părţ d ANA sau Maual, cu ttlu de eemplu sau ctare, î orce formă (tpărtă/electrocă), este permsă uma cu meţoarea copyrght-ulu. Maualul de utlzare Tetul Maualulu de utlzare se supue prevederlor Leg dreptulu de autor.

3 Autorul garatează coţutul bblotec ANA, uma petru utlzarea î scop educaţoal. Autorul îş declă resposabltatea petru orce cosecţe care ar decurge d utlzarea bblotec î alt scop. Sursele d ANA sut oferte aşa cum sut. Codul sursă ş Maualul pot f modfcate de autor fără otfcare. Notă Maual î actualzare! Versule cele ma recete ale surselor ş Maualulu se găsesc la URL-ul de ma sus.

4 CUPRINS Notă copyrght... 2 INTRODUCERE Bbloteca ANA... 8 CAPITOLUL I REPREZENTAREA NUMERELOR ÎN CALCULATOR ş ERORI...2 Recureță...2 Bessel...2 Eemplul Muller-Kaha...3 Errors...3 Assoc_sum...3 Do...4 Ecuate_gr2...4 Iteger2...5 Itrsec_2...5 Loss_sgf...5 Rump_pol...6 Rump II...7 Specal_Values...8 SSH...9 Sum_Armoc...20 Sum_ErrFree...2 Test_eps...2 Nose...22 Ulp...23 CAPITOLUL II ECUAŢII NELINIARE...25 II- Ecuaţ de forma f() = 0...25 Bs...26 Secat...28 Newto...3 II-2 Ecuaţ de forma = g(). Metoda puctulu f....36 F...36 Statoar...39 Atke...4 Atke\Atke-G...44

5 II-3 Ssteme de ecuaţ elare...46 F_Sys...47 Newto_Sys...50 II-4 Rădăcle poloamelor...52 C_pol...52 Pol...55 Pol_Drect...58 Pol_Comple...60 Laguerre...62 Muller...64 Muller\Muller_Comple...69 CAPITOLUL III SISTEME DE ECUAŢII LINIARE...72 III- Metode drecte...72 Gauss...72 Gauss_AB...77 LU...79 LU\Crout...86 LU_Comple...87 LU_Comple\Crout_Comple...89 Cholesky...90 Cholesky_S...93 Cholesky_Bad...93 III-2 Aalza eror ş codţoare...98 Numar_Codte...98 Hlbert... 00 III-3 Metode teratve... 02 Jacob... 02 Gauss_Sedel... 05 Sor... 07 CAPITOLUL IV VALORI ŞI VECTORI PROPRII... 0 Problema de valor propr (sumar)... 0 Power... 7 Power_Comple... 24 Iverse_Power_Shft... 25

6 Iverse_Power_Comple... 29 Sm_Iter... 32 Jacob... 38 QR... 44 Metoda (sumar)... 44 Algortm ş cod... 48 Detal de mplemetare... 49 Balasare... 5 Fşere... 54 Structura fşerulu de date... 57 Eemple... 60 Geeral_R, Geeral_R... 7 Problema geeralzată de valor propr... 72 Reducerea la problema stadard... 72 Retreve_Ege_from_R... 77 Fşere sursă:... 77 Fşere de date (trare):... 77 Fşere de eşre (rezultate):... 78 INTERPOLARE... 80 Newto... 80 UTILITARE... 87 Fucto_epresso ş wdth... 87 Fucto_epresso.f90; Fucto_epresso_g.f90; Fucto_epresso- 2.f90; Fucto_epresso_Sys.f90... 87 wdth.f90... 88 Grafc... 88 Bblografe... 90 Lsta Fgurlor... 92 Ide... 93

7

8 INTRODUCERE Bbloteca ANA Metodele d ANA sut bazate pe teora ş algortm epuş î maualul: Adra Chsălţă, Numercal Aalyss (2002). Î ceea ce urmează, ctărle uor captole, paragrafe, se referă la această lucrare. Notă: - U algortm d ANA sut ma evoluaţ decât ce epuş î Numercal Aalyss. - Uele surse d ANA pot f ma evoluate decât cele descrse acest maual. ANA este orgazată pe foldere care coţ rutele ecesare petru utlzarea ue metode umerce, calculul uor mărm (eemplu: umărul de codţe), sau lustrarea erorlor sau precze î calculul cu umere reprezetate î vrgulă flotată. Folderele coţ rutele ecesare petru costrucţa uu proect. Î geeral, folderul coţe:. Programul prcpal 2. Subruta metode 3. Subprogramul de tp fucto/subroute petru defrea fucţe / fucţlor cu care se lucrează (petru ecuaţ elare) 4. Alte subrute utltare Programul prcpal realzează, cel puţ, următoarele acţu: - Cteşte datele de trare - Apelează subruta metode - Tpăreşte rezultatele. Utăţle de program ş 3 se presupu scrse de utlzator. Petru facltate, ele sut cluse î folder. Utatea 3 coţe cod petru u eemplu de test. Petru rădăcle poloamelor, sstemele de ecuaţ lare ş petru problema de valor propr, î locul utăţ 3, î folder este clus u fşer cu datele petru u eemplu de test. Utlzatorul va

9 modfca codul d 3 sau datele d eemplul de test, petru problema cocretă cu care se lucrează. De asemeea, utlzatorul poate modfca programul prcpal. Utltarele sut rute cluse î proect, î specal petru tpărrea datelor de eşre. Descrerea lor se dă î captolul UTILITARE. Nume foldere. Nume utăţ de program ş fşere asocate Î geeral: - Numele folderulu este o memoca a metode. - Numele subrute metode este tot o memocă a metode. Eemplu: petru metoda bsecţe, umele folderulu ş al subrute este BIS. - Programul prcpal are umele MAIN- urmat de umele subrute. Eemplu: MAIN-BIS. - Numele fucţe este fu, f, g, etc. Î câteva cazur, programul prcpal îcorporează ş metoda; î acest caz, umele utăţ de program este o memocă a metode (fără a ma f precedat de MAIN-). Petru metodele î dublă precze, î geeral, umele folderulu ş utăţlor de program, sut precedate de caracterul D, d, sau succedate de caracterele _D, _d. Numele fşerelor asocate utăţlor de program urmează aceleaş regul. Notă - Câd umele folderulu sau al uu fșer-sursă coțe o specfcațe de a, codul d acestea este î versuea cea ma recetă. Eemplu (folder): Gauss 200 ș Gauss. - Câd umele folderulu sau al uu fșer-sursă coțe termața -IVF, complarea este presupusă petru complatorul Itel Vsual Fortra. Cod Î screrea codulu, s-a dat îtâetate clartăţ programăr metode, ueor î daua compactăţ codulu. Datele de trare se ctesc fe de la termal, fe dtr-u fşer de date. Aceeaş observaţe petru screrea datelor de eşre. Câd se utlzează u fşer de date, î geeral, datele de eşre se scru î acest fşer, î cotuarea datelor de

0 trare. Soluţa fşerulu de date se poate adopta îtotdeaua, pr modfcarea codulu. Petru smplfcare, î codur s-a evtat utlzarea ferestrelor de dalog petru deschderea / selectarea / crearea uu fşer sau drectoru; î versule ma o de cod, selectarea fşerulu de trare se face pr fereastra de dalog stadard. Codurle prezetate î versuea smplă precze, pot f covertte uşor la dublă precze pr adăugarea declaraţlor ecesare. Lmbajul este Fortra 90/95. Utăţle de program coţ cometarle ecesare petru semfcaţa datelor de trare, parametrlor de apel a subrutelor, etc. Petru cocretzarea datelor de trare v. fşerul de test al metode. Observaţe Testele de oprre a ue teraţ sut, î geeral, de forma: eps ş umăr de teraţ lt. Toleraţa eps ş umărul mam de teraţ lt sut date de trare. Trebue ca eps ULP ), ude ULP ) este cel ma mc umăr care ( aduat la dă, pr rotujre, u umăr ma mare ca v. Cap., 3.6. Î caz ( cotrar, cu ecepţa cazulu, prmul test u poate f satsfăcut ş teraţa se opreşte pr depăşrea lu lt. Ueor codul testează ş corectează toleraţa eps trodusă de utlzator v. ca eemplu metoda bsecţe. Î caz cotrar, la troducerea date eps, utlzatorul se va ţe cot de codţa de ma sus Utlzare Cu rutele d folder se costrueşte u proect de tp cosole applcato. Petru smplfcare ş portabltate, rutele u coţ dalogur ş c eşr grafce. Utlzarea este presupusă complatorul Compaq Vsual Fortra 6.6C, 2002 (ș petru medul Developer Studo), dar rutele pot f utlzate ş pe o altă platformă. Î partcular, rutele cu umele ume-ivf se referă la complatorul Itel Vsual Forta., 200 (ș medul Mcrosoft Vsual Studo 2008). Descrerea fşerelor d foldere ş a metodelor umerce, se dă î captolele următoare. Petru uele metode (î partcular: Muller, problema de valor propr, ş Iterpolare), prezetarea teoretcă este ma desvoltată.

Petru detal suplmetare, ca ș petru cele ma recete actualzăr, v. cometarle d surse. Uele cometar pot f î lmba egleză. Avertzare: Eemple de test ș Rezultate Majortatea rezultatelor umerce d eemplele de test sut obțute pr rularea cu u procesor Petum IV, ș cu complatorul CVF 6.6c cu opțule de complare mplcte al medulu Developer Studo, dacă u se specfcă altfel. (Cu ecepța rezultatelor dcate ca obtute cu complatorul IVF.; procesorul este Itel Duo T2450). Utlzarea altor procesoare ș altor complatoare (sau opțu de complare) ar putea face ca, î uele cazur, rezultatele umerce să u se reproducă eact c uma apropat. Fotur Tet: Tmes New Roma Nume foldere: Aral Nume fşere; ume rute: Aral Date de trare; rezultate (d fşerul de eşre); secveţe de cod: Courer New Caracterul dcă sfârştul ue Propozţ, Observaţ, Eemplu, etc.

2 CAPITOLUL I REPREZENTAREA NUMERELOR ÎN CALCULATOR ş ERORI Foldere: Recureță; Errors; Nose; Ulp. Recureță Bessel Calculul fucţe Bessel: drect, ş pr recureţă. Se pue î evdeţă, stabltatea algortmulu bazat pe formula de recureţă cu tre terme. Implemetarea Eemplulu 4, Cap. 0, 2.2. Fşere: Bessel.f90 Se calculează valorle fucţlor Bessel de speţa I-a, pe argumetul y, petru m,0, î două modur: (a) Drect (sere): J m () m 2 0 k 4 k! m k! Sera se truchază î mometul câd termeul curet este ma mc decât, sau egal cu E-5 (ş se îsumează cel mult 00 terme). Valorle obţute se cosderă valorle eacte. (b) Pr recureţă: J ) 2m J () J () m( m m Se poreşte cu valorle J 0 () ş J () calculate cu tre grade de precze, eprmate pr umărul de cfre semfcatve eacte: 5 6 (dublă-precze), 0, ş 7 (smplă precze). Calculul, cu aceste valor de porre, se face î dublă precze. Rezultatele se scru î fşerele bess-.rez, ude 7;0; 6. Petru calculul drect: umărul de terme care se îsumează efectv este 9 5 (petru m 0,,, 0 ); acest umăr se lstează î fşerul de eşre. Prmul terme egljat î sere este de ordul 0 7 0 8 ; acest terme se lstează la dsplay.

3 Se remarcă dvergeţa crescătoare cu m, a valorlor calculate pr recureţă î raport cu valorle eacte char petru u umăr mare de cfre semfcatve (6), î J 0 ş J. Sgurele eror troduse î calculul (b) sut erorle de rotujre î valorle lu J 0 ş J. Eemplul Muller-Kaha Cf. Kaha [2006]. Se cosderă fucța f ( y, z) 08 (85 500/ z) / y Se defește șrul: 0 4; f ( 4.25, ), Șrul coverge către o lmtă L; se propue a se găs L, pr calculul lu petru "mare", de eemplu ~ 80. Calculul î dublă precze (ș î precze etsă) coduce la L 00. Lmta adevărată este L 5 - v. Lucr. ctată. Eemplul arată stabltatea formule de recureță cu 3 terme petru calculul lu. Notă Calculul î precze cvadruplă dă rezultatul corect, aume: 8 4.9997969007464772036945829659 Errors Folderul coţe următoarele sub-foldere, coţâd lustrăr de eror, î calculul cu umere reprezetate î vrgulă flotată. Assoc_sum Ne-asocatvtatea sume. Fşere: Sum_.f90, FP_precs.f90 Se cosderă terme =.25E20; 2 = 555.5,

4 ş sumele s_p = + 2 s2_p = + 2. p otează precza petru reprezetarea termelor (ş a sumelor parţale), aume: s: precze smplă (24 bţ), d: precze dublă (53 bţ), ş e: precze etsă (64 bţ). Precza de reprezetare de 64 bţ se setează cu subruta fpprecs. Rezultatele se scru î fşerul sum.rez, aume: s_s = 0.000000 s_d = 0.000000000000000 s_e = 552.0000000000000000 Suma s2_p are valoarea corectă (petru orcare p): s2 = 555.50 0. Do Calculul ue sume îtr-u cclu DO, î formele: sum = 0.; sum = sum +h; terme. sum2 = jh; Fşere: Do2003.f90 j, Programul lstează sum, sum2, ş eroarea relatvă a lu sum, petru 6 0, cu pasul 20,000. Se observă că eroarea relatvă creşte odată cu umărul termelor. Ecuate_gr2 Perderea de semfcaţe la rădăcle ue ecuaţ de gradul 2. Fşere: Ecuate_gr2.f90 2 Se cosderă ecuaţa 26 0, cu rădăcle 3 68. Rădăcle se,2 calculează î smplă ş dublă precze; valorle î dublă precze se cosderă valorle eacte. Î smplă precze, rădăca 2 se calculează î două modur: după formulă caz î care apare perdere de semfcaţe, ş sub forma erorle relatve ale rădăclor; se costată că valoarea 2, m. Se lstează 3 68 2, m este eactă.

5 Iteger2 Calculaţ cu teger(2). Fşere: Iteger2.f90 Se şte că teger(2) se repreztă pe 2 octeţ, ar plaja de reprezetare este 32768 teger (2) 32767 (Cap., 2). Programul testează suma 32767 2, ude 2 este teger(2); de eemplu, petru 2 = 3, se obţe -32766. Eplcaţe: terme sume se repreztă ca ma jos (Cap, 2; vez ş reprezetarea acestor umere cu utltarul Btvew): 0 = 32767 0 0000000 000000 = 3 Aduarea produce umărul 0000000 0000000 = -32766 Itrsec_2 Apelul fucţlor trsec Fortra, petru parametr reprezetăr. Fşere: Itrsec-2.f90 Se eemplfcă apelul, petru o dată real(4) ş real(8), a următoarelor fucţ trsec: Dgts; Epoet; Fracto; Maepoet; Mepoet; Nearest; Huge; Precso; Rage; Spacg; Ty; Epslo. Se testează + epslo(.0) >. Petru semfcaţa fucţlor trsec v. Compaq Vsual Fortra Laguage Referece Maual, 200. Loss_sgf Perderea de semfcaţe. Fşere: Loss_sgf.f90 Proectul mplemetează Eemplul 2, Cap.2, 4.. Se cosderă calculul fucţe:

6 f ( ) ( ), petru j 0, j =, 2, 7, î smplă ş dublă precze. Valorle f () calculate î dublă precze sut cosderate valorle eacte. Se calculează î smplă precze, valorle fucţe g() dată de g( ). g este trasformata lu f, care evtă calculul dfereţe perderea de semfcaţe. Aaltc, g() = f(). care produce Se lstează: valorle f() î smplă precze; valorle f() î dublă precze, rotujte la 8 cfre semfcatve; valorle g() î smplă precze. Se observă că: - Valorle f() î smplă precze se alterează odată cu creşterea lu j, datortă perder de semfcaţe. - Valorle g() au 7 cfre semfcatve corecte. Rump_pol Polomul lu Rump [Rump S.E., 200, 988]. Fşere: ma-rump.f90; FP_precs.f90; Se cosderă fucța f (, y) 333.75y 6 2 2 ( y 2 y 6 2y 4 2) 5.5y 8 /(2y) ş evaluarea lu fucțe, petru = 7767 ş y = 33096. (Partea esețală e costtută d polomul format de prm 3 terme ș, d acest motv, eemplul poartă umele de polomul lu Rump. Polomul a fost cosderat de Rump 983 ș reluat lucrarea d 988). Programul lstează valorle polomulu calculate cu 3 vele de precze (oferte de complatorul CVF 6.6), aume: 24 bţ (precze smplă): -.80592E+2 53 bţ (precze dublă): -.8059620774E+2 64 bţ (precze etsă): 5.764607523034234880E+7 Valoarea corectă: -0.82739 60599 4682 3684 650 95479 8629 9990 33

7 (obţută cu precze de 43 cfre zecmale de precze; 44 bţ). Notă Î precze cvadruplă (complatorul IVF.), se obțe: 3 bţ (Precze cvadrupla):.726039400538 Petru rezultate smlare, obţute cu complatorul FORTE Developer 6 (Fortra 95, Su) v. Loh & Walster (2002). Eplcaţe: Ce patru terme a polomulu au valorle: t: 4.386057508463932E+29 t2: -7.9777927474E+36 t3: 7.97340668962E+36 t4:.726039400538 Astfel, u se produce depăşre de format c petru smpla precze. Dar terme do ş tre sut egal cu apromatv 2 23, ş astfel, petru reprezetarea cu toate cfrele petru evtarea perder de semfcaţe, este ecesară o precze de cel puţ 23 bţ. Or, char precza cvadruplă (real(6)) u oferă decât 3 bţ. Astfel, petru evaluarea polomulu î forma dată, trebue apelat la u pachet mult-precze cum este, de eemplu, MPFUN, v. Hgh-Precso Software Drectory, 200. Eplcaţa aaltcă este următoarea (Loh & Walster (2002)): ş y daţ, satsfac 2 2 relaţa 5.5y. Cu aceasta, terme de ord superor lu î ş y se reduc, ş epresa polomulu deve f(, y) 2. 2y Astfel, suma adevărată a prmlor 3 terme (eceptâd fracța) este -2. Programul lstează ş valoarea lu f (, ), calculată î precze dublă. y Rump II Polomul r. 2 al lu Rump [Rump S.E., 200] Fşere: ma-rump II.f90; FP_precs.f90;

8 Eemplul este smlar cu cel d paragraful ateror, dar cu o eprese ma smplă; a fost trodus de Rump 200. f ( a, b) 2b b 2 a a 55b bbb 0 a a bb a / 2b Se calculează î aceleaș valor: a = 7767.; b = 33096. Suma prmlor 4 terme este -2 (valoarea adevărată). Programul lstează, ca e. precedet, valorle polomulu calculate cu 3 vele de precze (complatorul CVF 6.6), ș aume: 24 bţ (precze smplă):.7260 53 bţ (precze dublă):.7260396480560 64 bţ (precze etsă):.72603964805603027 Cu precze cvadruplă (complatorul IVF.), se obțe: -.82739605994682368465 Valoarea corectă cu 43 cfre zecmale de precze, este tot cea d paragraful Rump_Pol, îtrucât aaltc, polomul se scre f( a, b) 2 Note a 2b - Rezultatul calculat cu precze cvadruplă (3 bț, complatorul IVF ), are toate cfrele semfcatve corecte (24); - Valoarea corectă se obțe cu MPFUN, cu mmum 22 cfre zecmale de precze, aume: -.827396059946823684; Specal_Values Valor specale. Fşere: Specal_Values.f90 Programul lustrează calculul ş tpărrea următoarelor valor specale Cap., 3.5: - Zero cu sem: -0.; ( ) 0. - Ift cu sem:./ 0. - NaN (Not a Number): 0./0; (./0)0; (./0) +(-./0) - Număr deormalzat: 0-45

9 - Depăşre format (superoară): 0 40 - Depăşre format (feroară): 0-46 Î Project Settgs, se va seta opţuea Eable IEEE Mus Zero Support, î tab-ul Fortra/Floatg Pot. SSH Problema Sea Surface Heght. Fşere: Ma_SSH-2.f90 ssh.dat U model de crculațe a oceaulu a fost desvoltat de He & Dg (200). Varabla SSH stochează îălțmea mede a suprafețe măr, d smularea î model. Datele corespuzâd smulăr dtr-o z, petru o reţea de 2064 = 7680 de pucte (20 logtud ş 64 de lattud), au fost stocate îtr-u tablou ssh(20,64), cu 0 4 precza de 64 bţ. Datele sut umere de ordul de mărme 0 0 ş de seme dferte, î tmp ce rezultatul sumăr e de ordul lu. Datele se ctesc d fșerul de trare ssh.dat. Ele se găsesc stocate cu 7 cfre zecmale. Programul calculeaza suma elemetelor d tabloul ssh, cu precze dublă ș cvadruplă. Notă Petru complatorul CVF 6., strucțule refertoare la tpul real(6) vor f făcute cometar (sau elmate) Ordoarea sume după dferte crter produce rezultatele de ma jos: Real(8): sum_row = 7.39062500000000 sum_col = 7.39062500000000 sum_row_reverse = 6.9394532500000 sum_col_reverse = 6.64746093750000 Sum o array (Real(8)):

20 sum_plus = 2.65252030584858E+06 sum_mus = -2.65252030584855E+06 sum_plus +sum_mus = 24.0000000000000 Real(6): sum_row_6 = 0.357985839247703552246093750000000 sum_col_6 = 0.357985839247703552246093750000000 Valoarea corectă este cea obţută cu precza cvadruplă (real(6)) ofertă de complatorul IVF.. Notă Rezultatul corect se poate obțe ș cu pachetul soft de precze multplă MPFUN (Baley, 200). He & Dg au utlzat metoda sumăr auto-compesată (SCS). Sum_Armoc Suma sere armoce stratega de sumare. Fşere: Sum-armoc.f90 Programul calculează suma S, 2 3 4 petru 0, = 2, 3,..., 7, astfel: a) Sum_Smallest: de la cel ma mc la cel ma mare smplă precze; b) Sum_Largest: de la cel ma mare la cel ma mc smplă precze; c) Sum_Double: de la mc la mare dublă precze, petru Sum_Double se cosderă valoarea eactă. Se lstează valorle sumelor ş erorle relatve ale prmelor două sume. Se observă, petru 5, că eroarea relatvă a sume (a) este ma mcă decât cea a sume (b). Proectul coţe ş sursa petru calculul sume sere armoce alterate. Î Project Settgs, se va seta opţuea "Eable Floatg Pot Cosstecy"

2 Sum_ErrFree Algortm de sumare fără eror. Fşere: Ma-ErrFree.f90; sub-sum_2.f90; sub-sum_n.f90; wdth.f90; Proectul mplemetează u algortm de sumare precsă d Ogta T., Rump S.M., ad Osh S., Accurate Sum ad Dot Product (2003). Acesta este deft de următor do algortm: Algorthm 3.. Error-free trasformato of the sum of two floatg pot umbers. fucto [, y] = TwoSum(a, b) = fl(a + b) z = fl( a) y = fl((a ( z)) + (b z)) Algortmul 3. trasformă două umere a, b reprezetate FP, î alte două umere FP, y, astfel că: a b y ş fl( a b). Algorthm 4.. Cascaded summato. fucto res = Sum2s(p) π = p; σ = 0; for = 2 : [π, q] = TwoSum(π, p) σ = fl(σ + q) res = fl(π + σ) Algortm sut mplemetaţ pr rutele sum_2(a,b,,y) ş sum_n(, p, s_ef, cor). Cu aceşta, se calculează suma d proectul Assoc_sum. Se obţe valoarea corectă. Test_eps Test petru eroarea de rotujre a utăţ. Fşere: test_eps.f90

22 Se defesc (Cap., 3.8): 24 mache _ EPS 2.0 ; Se testează că: + ULP >.0 + mache_eps =.0 + EPS >.0 23 ULP 2.0 ; EPSILON(.0 ) EPS ; Nose Zgomot umerc î calculul fucţlor v. Cap. 2, 4.2. Fşere: Nose.f90; fu.f90; FP_Precs.f90; Proectul mplemetează calculul fucţe 3 2 f ( ) 3.6 4.32.728 (f are o rădăcă trplă î. 2). Calculul se face petru [ a, b], a j h; j 0,,..., N, ude a, b, ş N sut date ma jos. Calculele se fac cu precze mpusă de 24 bţ setată cu subruta fpprecs. Programul are ca eşre u fşer cu valorle ş f (). Cu u program de grafcă, se costrueşte grafcul (, f ( )). Se remarcă următoarele: a) [0.4, 2.0], N =00: grafcul apare ca o curbă etedă. b) [.9,.2], N = 00: grafcul apare ca o curbă cu tagetă dscotuă. c) [.9,.2], N = 000: puctele apar stuate îtr-o badă. d) [.99,.20], N = 00: detalere a bez de certtude. Spre eemplfcare, prezetăm grafcul (c).

23 Fgura - Zgomot umerc Ulp Calculul lu ULP(), petru o plajă de valor. Fşere: ma-ulp2003.f90; ULP()-2003.f90; Se defeşte v. Cap., 3.8, ULP ep ( ) 2, ude: e este epoetul reprezetăr lu î modelul ştţfc, returat de fucţa epoet(); P este precza reprezetăr, î bţ ( P 24 sau P 53 ). Se calculează: ULP( ) ; 2 ULP( ) / 2

24 Se testează că: ; 2. Petru test, se recomadă: - O plajă de valor 3; - O valoare mare (de e. E6). Programul lstează parametr reprezetăr lu (î modelul ştţfc), aume fracţa ş epoetul, ULP(), ş verfcă relaţle de ma sus. Folderul coţe sursele petru versuea î smplă precze; folderul Ulp_d coţe sursele petru versuea î dublă precze.

25 CAPITOLUL II ECUAŢII NELINIARE Problema: Foldere:. Ecuaţ de forma f() = 0: Bs; Secat; Newto; 2. Ecuaţ de forma = g(), metoda puctulu f: F; Statoar; Atke; 3. Ssteme de ecuaţ elare: F_Sys; Newto_Sys; 4. Rădăcle poloamelor: C_pol; Pol; Pol_Drect; Pol_Comple; Laguerre; Muller. II- Ecuaţ de forma f() = 0 Petru metodele bsecţe, Newto ş secate, fucţa de test este: f ( ) e 3 2 Aceasta admte 3 rădăc stuate î tervalele [-,0], [0,], [3,4]. Apromaţle rădăclor, cerute de metodele umerce (respectv, tervalele care coţ rădăca), se determă pr metode algebrce. Ma smplu, apromaţle rădăclor se pot găs pr specţa grafculu fucţe. 2 Ca eemplu, grafcul fucţe f ( ) e 3 se dă ma jos. Acesta este costrut cu programul GRAPH, pe baza fşerulu de eşre d programul coţut î folderul Grafc.

26 Fgura 2 Grafcul fucţe f ( ) e 3 2 Bs Metoda bsecţe. Fşere: Bs2005.f90: subruta metode Ma_Bs2005.f90: programul prcpal Fu.f90: subprogram de tp fucto, care defeşte fucţa f(). Epresa fucţe poate clude u parametru p; dacă estă, valoarea lu p este dată de trare. Fucto_epresso.f90, wdth.f90: UTILITARE.

27 Metoda: Fucţa f se presupue deftă ş cotuă pe tervalul [ a, b], luâd valor de seme cotrare î capetele tervalulu, ş avâd o sgură rădăcă î terval. Se defeşte c ( a b) / 2 Se a ca ou terval [ a, b] acela dtre [ a, c] ş [ c, b] î care fucţa a valor de seme cotrare la capete; etc. Şrul puctelor c coverge la rădăcă, lar. Subruta metode este: bs(f, a, b, eps, ter, rad, kod, ktp) Parametr formal sut: f: Numele fucţe f(). Este declarat cu atrbutul eteral programul prcpal. a, b: Itervalul care coţe rădăca. eps: Toleraţa. ter: Numărul mam de teraţ lt (trare) / Numărul efectv de teraţ (eşre) rad: Rădăca calculată. kod: Cod de termare a teraţe (utlzat ter): 0: s-a ats toleraţa eps : s-a depăşt lt -: petru tervalul specfcat f(a)f(b) > 0 2: rădăcă î a sau b ktp: Cod de tpărre teraţ: 0 (Nu); 0 (Da) Testul petru atgerea toleraţe eps este b c eps, ude [ a, b] este tervalul curet. Metoda ajustează toleraţa eps: dacă eps ULP(c), se pue eps ULP(c). Datele de trare se troduc de la termal. Rezultatele se scru î fşerul de eşre ume.rez, ude ume este trodus de utlzator, ş coţ:

28 - epresa fucţe f (scrsă de utltarul Fucto_epresso) - [p, dacă estă] - datele de trare a, b, lt, eps - modul de îcheere a teraţe (mesaj, coform codulu kod) - rădăca calculată rad - valoarea f(rad) - umărul efectv de teraţ. Datele de trare petru eemplul de test (3 rădăc): a, b: -, 0; 0, ; 3, 4 eps: E-6 lt: 50; 20; 20 ktp: 0 sau Rezultate: Toleraţa eps atsă. Radac / Număr de teraţ -0.4589624 20; 0.900084 20; 3.733079 20; Eercțu Rulat, d ou, petru ua dtre rădăc, cu tolerața E-8 ș lt = 30 Secat Metoda secate. Fşere: Secat2005.f90: subruta metode Ma_Secat2005.f90: programul prcpal fu.f90: subprogram de tp fucto, care defeşte fucţa f(). Epresa fucţe poate clude u parametru p. Perod.f90: subrută petru peroada procesulu staţoar Fucto_epresso.f90; wdth.f90: utltare Metoda: Fucţe f cotuă pe u terval î jurul rădăc α.

29 Formula de terare este f ( ) ; ; 0 ş = date. f ( ) f ( ) Apromaţle 0 ş pot îcadra sau u rădăca. Dacă 0 ş sut sufcet de apropate de α (ş f, f ş f sut cotue), şrul, ar ordul de covergeţă este p. 68. Subruta metode este: secat(f, 0,, eps, lt, rad, kod) Parametr formal sut: f: umele fucţe; 0, : cele două apromaţ ţale cerute de metoda secate. eps: Toleraţa lt: Numărul lmtă de teraţ (trare); umărul efectv de teraţ (eşre) rad: Rădăca calculată kod: Itrare: cod de tpărre a teraţlor: 0 (u); 0 (da) Ieşre: cod de îcheere a teraţe (ter) 0: toleraţa eps atsă : depăşrea umărulu mam de teraţ adms lt 2: Proces staţoar -: dvergeţă -2: umtor ul î formula metode. Teste: Testul petru atgerea toleraţe eps este 2 eps Testul petru dvergeţa locală este 2 0, ude 0,, 2, sut tre terate succesve. Acest test u opreşte teraţa. Testul de umtor ul este f ( ) f ( 0) eps _ f,

30 ude toleraţa este aleasă ca eps _ f 2E 7 (această valoare se poate modfca). Datele de trare se troduc de la termal. Rezultatele se scru î fşerul de eşre ume.rez, ude ume este trodus de utlzator, ş coţ: - epresa fucţe f (scrsă de utltarul Fucto_epresso) - [p, dacă estă] - datele de trare 0, lt, eps - dfereţa curetă df, la îcheerea teraţe - modul de îcheere a teraţe (mesaj, coform codulu kod) - rădăca calculată rad; valoarea f(rad) - umărul efectv de teraţ. Î cazul tpărr teraţlor (ktp 0), dacă procesul mafestă dvergeţă se scre mesajul dvergeţă locală. Datele de trare petru eemplul de test (3 rădăc) se dau ma jos. Ca apromaţ ţale se au capetele tervalelor d metoda bsecţe. 0, : -, 0; 0, ; 3, 4; eps: E-6 lt: 0; 0; 0 ktp: 0 sau Rezultate: Toleraţa eps atsă. Rădăc / Număr de teraţ -0.4589623 7; 0.900076 6; 3.733079 7; Observaţe Ca apromaţ ţale s-au luat capetele tervalelor cosderate î metoda bsecţe, ş aceeaş toleraţa eps ca î metoda bsecţe. Aceasta, petru a compara rezultatele metode secate cu cele d metoda bsecţe (aume: valoarea rădăc ş umărul de teraţ)

3 Newto Metoda Newto (o sgură ecuaţe). Fşere: Newto.f90: subruta metode Ma_Newto.f90: programul prcpal sub.f90: Perod.f90: subprogram care defeşte (ş returează) valorle fucţe f() ş dervate f (). Epresa fucţe f() poate clude u parametru p. fucţe care returează peroada procesulu staţoar Fucto_epresso; Fucto_epresso-2.f90; wdth.f90: utltare. Metoda: Fucţe f cotuă ş dervablă, î vecătatea ue rădăc α. Formula de terare este f ( ) ; 0 ; 0 dat f ( ) Dacă 0 este sufcet de aproape de rădăca smplă α (ş cotue), şrul coverge către α, cu ordul de covergeţă 2. f, f ş f sut Subruta metode este: Newto(SUB, 0, eps, lt, rad, kod, _dv) Parametr formal sut: SUB: Numele subrute care returează valorle fucţe ş dervate 0: Apromaţa ţală eps: Toleraţa lt: Numărul lmtă de teraţ (trare); umărul efectv de teraţ (eşre) rad: Rădăca calculată kod: Itrare: cod de tpărre a teraţlor: 0 (u); 0 (da) Ieşre: cod de îcheere a teraţe (ter) 0: toleraţa eps atsă : depăşrea umărulu mam de teraţ adms lt 2: Proces staţoar

32 -: dvergeţă -2: dervata fucţe 0 este apromatv ulă. _dv: Numărulde dvergeţe locale Subruta SUB este: sub(f, f, ) f: Valoarea fucţe pe ; Epresa fucţe poate clude u parametru p; dacă estă, valoarea lu p este dată de trare. f: Valoarea dervate pe : Apromaţa curetă Observaţe Teste: Se defeşte dfereţa curetă df, pr: df 0, ude este valoarea terate curete, ş 0 valoarea terate la pasul ateror. - Testul petru atgerea toleraţe eps este: df eps - Testul petru dvergeţă este df df _ at, ude df_at este dfereţa df de la pasul ateror. Petru aalza tpulu de dvergeţă, satsfacerea testulu de dvergeţă u opreşte teraţa, c produce uma u mesaj î fşerul de eşre. - Testul petru dervată ulă pe este f E 0 ude f f ( ). - Se ma testează îtâlrea uu proces staţoar. Datele de trare se troduc de la termal.

33 Rezultatele se scru î fşerul de eşre ume.rez, ude ume este trodus de utlzator, ş coţ: - epresa fucţe f (scrsă de utltarul Fucto_epresso) - [p, dacă estă] - datele de trare 0, lt, eps - dfereţa curetă df, la îcheerea teraţe - [_dv, dacă estă dvergeţe locale] - modul de îcheere a teraţe (mesaj, coform codulu kod) - rădăca calculată rad; valoarea f(rad) - umărul efectv de teraţ. Datele de trare petru eemplul de test (3 rădăc), sut: 0: -0.5; 0.5; 3.5; eps: E-6 lt: 0; 0; 0 ktp: 0 sau Rezultate: * Tolerata EPS s-a ats: Rădăc / Număr de teraţ -0.4589623 4; 0.900076 5; 3.733079 5; Observaţe Ca apromaţ ţale 0, s-au luat mjloacele tervalelor cosderate î metodele bsecţe ş secate, ş aceeaş toleraţă eps. S-a procedat astfel, petru a compara rezultatele metode Newto cu cele d metodele bsecţe ş secate (valoarea rădăc ş umărul de teraţ). Apromaţ ţale ma bue pot f obţute de pe grafcul fucţe f. Cu o apromaţe 0 ma apropată de rădăcă, umărul de teraţ ecesar petru atgerea toleraţe eps va f ma mc Folderul Newto coţe u sub-folder Newto_r. Structura de fşere este aceeaş. Subruta Newto (fşer Newto_r.f90) tpăreşte, î plus, valorle lambda ( 2 ) /( 0), petru detfcarea rădăclor multple ale lu f

34 Observaţe: Proces staţoar î metoda Newto Fe fucţa: f ( ) 7 5cos 3s ş terăm cu apromaţa ţală 0 5. (Î fapt, u estă rădăc î vecătatea lu 0 ). Iterarea î metoda Newto duce la dvergeţă locală (îtâltă la pasul 3). Dacă u oprm procesul teratv, atuc, la teraţa 9, apare rezultatul: Iterata 9: (9) = (7) ** Proces statoar de peroada = 2 7 6.427927 8 5.0707 9 6.427927 Rezultatul se verfcă î fgura de ma jos, î care se repreztă grafcul fucţe f ş al tagetelor la grafcul lu f, î puctele de abscsă 5.0707 ş 6.427927. Procesul staţoar apare dacă teraţa u este oprtă câd se îtâleşte dvergeţa cum se face î mod obşut.

35 Fgura 3 - Proces staţoar î metoda Newto Eercţu: Iteraţ cu: 0 = 6.2; eps = E-7 ş lm = 000. Rezultat: proces staţoar de peroadă 5 Observaţe Petru acest eemplu, metoda secate cu apromaţle ţale 4.9 ş 5. dă dvergeţă locală î prm paş, covergâd apo la rădăca = 0

36 II-2 Ecuaţ de forma = g(). Metoda puctulu f. Ecuaţa de test este g(), echvaletă cu f ( ) 0, ude f ( ) 2 e 3. g () se determă pr prma procedură eplctă de puct f, aume g( ) ( ) f ( ), ude ( ) p = costat. Petru valorle lu p v. ma jos. F Metoda puctulu f (o sgură ecuaţe). Fşere: F2005.f90: subruta metode Ma_F2005.f90: programul prcpal G.f90: subprogram de tp fucto care defeşte fucţa g() Perod.f90: subrută petru peroada procesulu staţoar Fucto_epresso_g.f90; wdth.f90: utltare Metoda: Fucţe g, cotuă ş dervablă pe o vecătate [ a, b] a rădăc α. Formula de terare este g( ) ; 0; 0 = dat Dacă g este cotuă, ma g( ), ş [ a, ], şrul, lar. [ a, b] 0 b Subruta metode este: F(g,, tol, lm, kod) Parametr formal sut: g: Numele fucţe g(), declarat eteral î programul prcpal. Epresa fucţe poate clude u parametru p. : Itrare: apromaţa ţală; Ieşre: soluţa calculată / ultma apromaţe. tol: Toleraţa petru dfereţa a două valor succesve ale lu. lm: Numărul lmtă de teraţ. kod: Itrare: cod petru tpărrea teraţlor: 0 (Nu); 0 (Da)

37 kod 2: tpăreşte ş valoarea lambda ( 2 ) /( 0), ude 0, ş 2 sut tre terate succesve. Ieşre: cod de îcheere a teraţe: 0: s-a obţut toleraţa tol. : depăşre a lu lm. 2: proces staţoar. -: dvergeţă. Testul petru atgerea toleraţe tol este 0 tol, ude este terata curetă, ş 0 terata ateroară. Datele de trare se troduc de la termal. Rezultatele se scru î fşerul de eşre ume.rez, ude ume este trodus de utlzator, ş coţ: - epresa fucţe g (scrsă de utltarul Fucto_epresso_g) - [p, dacă estă] - datele de trare 0, lm, tol - modul de îcheere a teraţe (mesaj) - dcele ultme teraţ, rădăca calculată, valoarea g() - dfereţa curetă = g() Nota Sub-folderul Df coţe fşerele petru metoda î dublă precze Fucţa g, petru ecuaţa de test, este 2 g( ) p( e 3 ), ude p este o costată. Se au valorle: p 0. 0; p 0. 05 ; Datele de trare petru eemplul de test rădăca a trea, sut: 0: -0.5 0.5 3.7 tol: 2.4E-7; lm: 00;

38 Rezultate: p = 0.0 Iterata g() 47 3.733078 3.733078 ** Dfereta cureta = 2.384858E-07 p = 0.05 5 3.733079 3.733079 ** Dfereta cureta = 0.000000 Notă A doua valoare petru p este apropată de p_optm 0.055; v. Eemplul d Cap. 3-II, 3.4.2 Eemplu de proces staţoar de peroadă 2: Se cosderă fucţa.78 0.2tg( ) g( ), tg( ) ş se terează cu 0 = 0.8, tol = E-7, lm = 000. Se obţe rezultatul: Iterata 844: (844) = (842) ** Proces statoar de peroada = 2 Iterata 842 0.78773 843 0.7877082 844 0.78773 ** Dfereta cureta = 4.8279762E-06 Eplcaţe: Dervata g (), calculată î smplă precze pe tervalul [ 0.7877080, 0.787740], are valoarea 0.9900053, care este foarte apropată de valoarea. Astfel, este realzată codţa petru procesul staţoar de peroadă 2: g ( ).

39 Eercţu: Iteraţ î dublă precze, cu 0 = 0.8, tol = E-4, lm = 3000. Statoar Metoda puctulu f, proces staţoar: grafce. Fşere: Stat2005.f90: programul prcpal G.f90: fucţa g Fucto_epresso_g.f90: utltar Programul are ca eşre fşerele petru reprezetarea grafcă a uu proces staţoar, aume: Nume-ter.rez: teratele; Nume-g.rez, ume-bs.rez: fucţa g ş prma bsectoare. Datele de trare se troduc de la termal. Acestea sut: - 0,, : Apromaţa ţală; umăr de terate; umăr de terate omse; - Nume: Nume petru costrurea umelor fşerelor de eşre. Datele de eşre costau d două l-tet, urmate de date umerce, ş aume: - Le-tet-: Epresa fucţe g - Le-tet-2: Tpul de date d fşer, aume: terate; fucţa g; bsectoarea I-a. -, y: Perech de date umerce, aume: o Nume-ter.rez: k, ) : Idce terată terată ( k o Nume-g.rez:, g( )) ( k k o Nume-bs.rez:, ) ( k k k a valorle: k,. Notă Dacă programul de grafcă u are capabltatea de a recuoaşte l-tet (ş a le gora), se vor şterge cele două l-tet d fşer (prmele două l), îate de îcărcarea fşerulu î programul de grafcă. Î partcular, programul GRAPH are această capabltate

40 Eemplu: Petru eemplul de proces staţoar d metoda puctulu f, datele de trare sut: 0.8; 000; 800; Se omt 800 de terate, petru a reprezeta procesul staţoar (care îcepe la terata 842), pr teratele 80-000. Grafcele teratelor ş fucţe g sut date ma jos. Fgura 4 - Proces staţoar Grafcul teratelor

4 Fgura 5 - Proces staţoar Grafcul fucţe ş prme bsectoare Atke Accelerarea Atke. Fşere: Atke2005.f90: subruta metode Ma_Atke2005.f90: programul prcpal ga.f90: fucţa g petru Atke Perod.f90: peroada procesulu staţoar Fucto_epresso_g.f90; wdth.f90: utltare Metoda:

42 Cu tre terate succesve,, 2, calculate ca î metoda puctulu f, se calculează a ( 2, 2, ( 2 ) ( ) ) Valoarea a este o apromaţe a rădăc (ma buă decât terata următoare,, 2 g( ) 2 ). 3 Procesul teratv este următorul: = dat; g ) ; g ) ; 0 3 a 0,2 ( 0 2 ( ; g ) ; g ) ; 4 ( 3 5 ( 4 6 a 3,5 ; Etc. Metoda Atke are cel puţ ordul 2, îtr-o rădăcă smplă. Subruta metode este: atke(g, 0, eps, lt, rad, kod) Parametr formal au, î geeral, aceeaş semfcaţe ca la metoda puctulu f. Eplct: g: Numele fucţe g(), declarat eteral î programul prcpal. Epresa fucţe poate clude u parametru p. 0: Itrare: apromaţa ţală; Ieşre: soluţa calculată / ultma apromaţe. eps: Toleraţa v. ma jos. lt: Numărul lmtă de teraţ. kod: Itrare: cod petru tpărrea teraţlor: 0 (Nu); 0 (Da) kod 2: tpăreşte ş valoarea lambda ( 2 ) /( 0), ude 0, ş 2 sut tre terate succesve. Ieşre: cod de îcheere a teraţe: 0: s-a obţut toleraţa eps : depăşre a lu lt 2: proces staţoar

43 -: umtor ul î formula metode Formula metode este codată astfel: teratele curete sut 0,,2. um =(2-) -(-0) cor =(-0)**2/um a =0 cor ude um este umtorul, ar cor este corecţa la 0. Testele petru atgerea toleraţe eps sut: ) testul obşut î metoda puctulu f: 2 eps 2) testul petru corecţe: df = a - 0; df eps Testul de umtor ul este um = 0. Datele de trare se troduc de la termal. Î programul prcpal, parametrul efectv petru toleraţă este umt tol. Rezultatele se scru î fşerul de eşre ume.rez, ude ume este trodus de utlzator, ş coţ: - epresa fucţe g (scrsă de utltarul Fucto_epresso_g) - [p, dacă estă] - datele de trare 0, lt, tol - modul de îcheere a teraţe (mesaj) - dcele ultme teraţ, rădăca calculată rad, valoarea g(rad) Eemplu de test: Se cosderă aceeaş fucţe g, ca la metoda puctulu f: 2 g( ) p( e 3 ), ude p este o costată. Se caută rădăca d tervalul [3, 4], cu: apromaţa ţală 0 = 3.7; tol = 2.4E-7; lt = 0. Se terează petru valor p 0.0, 0.02,, 0. 09, ş p = 0.00. Rezultate eemplfcare petru p = 0.0; p = 0.00:

44 p = 9.9999998E-03 Radaca r. Iterata 3: 3.733080 * (3) -(2) =-2.384858E-07 * Tolerata talta Radaca = 3.733080 ; Numar terat = 3 g(rad) = 3.733080 p =.0000000E-03 Radaca r. 2 2-; -0: 2.457672E-06 2.457672E-06 ** Numtor ul Radaca = 3.732974 ; Numar terat = 5 g(rad) = 3.732976 Observaţe Petru comparaţa umărulu de teraţ d metoda Atke, cu cele d metoda puctulu f: Îtr-u pas, Atke calculează două terate ( ş 2, cu 0 dat); astfel, umărul de terate calculate este 2 umărul teraţlor afşat de Atke. Petru p = 0.0: Atke calculează 6 terate, faţă de 47 î metoda puctulu f Atke\Atke-G Sub-folder, petru metoda Atke cu fucţa G(). Fşere: Atke_G2005-2.f90; Ma-Atke_G2005.f90; ga.f90 9; Perod.f90; Fucto_epresso_g.f90; wdth.f90. Semfcaţa fşerelor este aceeaş ca î Atke. Metoda este: G( ),

45 ude 2 ( g( ) ) G( ) g( g( )) 2g( ) Subruta metode este: atke_g(g, 0, eps, lt, rad, kod) Parametr formal au aceeaş semfcaţe ca la Atke. Metode este codată astfel: teratele curete sut a ş a0. um =g(g(a0)) -2*g(a0) +a0 cor =-(g(a0)-a0)**2/um a =0 +cor Testele petru toleraţă se pu astfel: ) testul d metoda puctulu f: g( a0) a0 eps 2) testul petru corecţe: df a a0; df eps. Datele de trare se troduc de la termal. Parametrul efectv petru toleraţă este umt tol (î programul prcpal). Rezultatele se scru î fşerul de eşre ume.rez, ude ume este trodus de utlzator, ş coţ aceeaş date ca rezultatele d Atke. Petru eemplul de test d Atke, se obţ rezultatele: p = 9.9999998E-03 * XTOL talt Radaca = 3.733078 ; Numar terat = 4 g(rad) = 3.733078 p =.0000000E-03 * XTOL talt Radaca = 3.733090 ; Numar terat = 7 g(rad) = 3.733090

46 II-3 Ssteme de ecuaţ elare Se cosderă sstemul de ecuaţ cu ecuoscute f (,, 2 f (,, 2...,..., ) 0 ) 0 Vectoral, sstemul se scre f( ) 0, ude, f f ( ) f ( ). ( ) Se otează tot cu, şrul argumetelor lu f, adcă,,. Petru metoda puctulu f, sstemul dat se pue sub forma sstemulu echvalet g(). Aceasta se realzează pr procedura eplctă de puct f g( ) A( ) f( ), ude A() este o matrce esgulară. Eemplu de test: 2 2 f (, y) y 5 0, f (, y) y e 0. Apromaţle ţale se au: (0) (0) ( 2, ), ş (0.5, 2) 2 Acestea se determă d tersecţa grafcelor celor două curbe. Notă Dfcultatea majoră costă î găsrea apromaţlor ţale, î cazul 3

47 Fgura 6 Determarea apromaţlor ţale F_Sys Metoda puctulu f petru ssteme de ecuaţ elare. Fşere: F_Sys2005.f90: subruta metode Ma-F_Sys2005.f90: programul prcpal fcs.f90: subruta care returează valorle fucţlor f () orm$.f90: Elm.f90: orma- a uu vector v() subruta petru elmarea Gauss

48 Fucto_epresso_Sys.f90; wdth.f90: utltare Metoda: (0) Iterare cu matrcea costată Iteraţa este deftă de A f( ( ) ( ) ( ) ) A F( ), cu actualzare după 3 paş. F() este jacobaul lu f. Dervatele parţale ale fucţlor f () (elemetele jacobaulu) se calculează umerc, cu varaţa delta 0. 00. Schema de terare este următoarea. Se defeşte δ ( ) ( ) ( ) ş rezultă:, F( ) δ f ( ( 0) ( ) ( ) ) (a) δ ( ) ( ) ( ) Ecuaţa (a) este u sstem lar î ecuoscuta Gauss. Testele de oprre a teraţe sut: δ ( ) lt eps Metoda are u ord de covergeţă p 2. ( ) δ, care se rezolvă pr elmare Subruta metode este FIX_SYS(fcs,,, tol, delta, lt, f, kod), Parametr formal sut: : ordul sstemulu (umărul de ecuaţ) fcs: umele subrute care calculează valorle fucţlor f () : tablou () petru valorle,,

49 tol: toleraţa delta: varaţa petru calculul dervatelor parţale lt: umărul lmtă de teraţ f: tablou f(), petru valorle f ( ),, f ( ) kod: cod de îcheere a teraţe (ter): 0: toleraţa atsă : umărul lmtă de teraţ ats -: Pvot < prag elmarea Gauss Eemplul de test: Se obţ rezultatele: Radaca r. Apromata tala: -2.000000.000000 tol:.000e-06; lt: 0 XTOL ats Soluta X: -.99684.46653 F(X): -2.764632E-07-2.995807E-08 Numar de terat = 5 Radaca r.2 Apromata tala: 0.5000000 2.000000 tol:.000e-06; lt: 20 XTOL ats Soluta X: 0.2043374 2.22672 F(X): 7.209735E-08-4.654925E-08 Numar de terat = 7

50 Newto_Sys Metoda Newto petru ssteme de ecuaţ elare. Fşere: Newto_Sys.f90: subruta metode Ma-Newto_Sys.f90: programul prcpal fc.f90: subruta care returează valorle fucţlor f () jfc.f90: subruta care returează jacobaul lu f () orm$.f90: Elm.f90: orma- a uu vector v() subruta de elmare Gauss Perod_Sys.f90: fucţe care returează peroada procesulu staţoar Fucto_epresso_Sys.f90, wdth.f90: utltare Metoda: Iteraţa este deftă de ( ) ( ) F( ) f( ) ( ) ( ) ude F() este jacobaul lu f: f F( ) j f f f... 2..................... f f f... 2 Elemetele jacobaulu se calculează aaltc. Schema practcă de terare este:, F( ) δ f ( ( ) ( ) ( ) ) (a) δ ( ) ( ) ( ) Corecţa ( ) δ se calculează pr rezolvarea sstemulu lar (a). Iteraţa se opreşte pr testele: ( ) δ eps,

5 Număr de teraţ lt ude eps ş lt sut toleraţa, ş respectv, umărul lmtă de teraţ. Pe lâgă acestea, teraţa se ma opreşte dacă Jacobaul este sgular, sau dacă se îtâleşte u proces staţoar. Metoda are ordul de covergeţă p 2. Subruta metode este Newto_Sys (fc, jfc,,, lt, tol, f, kod, _dv) Parametr formal sut: : ordul sstemulu (umărul de ecuaţ) fc: umele subrute care calculează valorle fucţlor f () jfc: umele subrute care calculează jacobaul lu f; elemetele jacobaulu sut returate î tabloul jf(,). X: tablou () petru valorle,, tol: lt: toleraţa umărul lmtă de teraţ f: tablou f(), petru valorle f ( ),, f ( ) kod: cod de îcheere a teraţe (ter): 0: toleraţa XTOL atsă : umărul lmtă de teraţ ats 2: Proces staţoar -: Dvergetă -2: Pvot < prag elmarea Gauss (Jacoba sgular) Eemplul de test: Se obţ rezultatele:

52 Radaca r. Apromata tala: -2.000000.000000 tol:.000e-06; lt: 0 Norma corecte: 5.927999E-08 XTOL ats Soluta X: -.99684.46653 F(X): -2.764632E-07-2.995807E-08 Numar de terat = 4 Radaca r.2 Apromata tala: 0.5000000 2.000000 tol:.000e-06; lt: 0 Norma corecte:.82579e-08 XTOL ats Soluta X: 0.2043374 2.22672 F(X): 5.3840544E-08 8.289738E-09 Numar de terat = 5 II-4 Rădăcle poloamelor C_pol Calculul valor polomulu, drect ş mbrcat (schema Horer), pe u terval [ a, b], cu pasul h. Fşere: C_pol2005.f90; sub_pol.f90 Metoda: Eemplfcăm pe u polom de gradul 4. Geeralzarea este medată. Forma dată: p 2 3 4 ( ) a0 a a2 a3 a4

53 Forma mbrcată: p( ) a ( a ( a2 ( a3 a4 0 ) ) ) Calculul efectv se face cum urmează:. Calculul pr cclu: a) Forma dată: p =a(0) zk =. do k =, zk =zk*z p =p +a(k) *zk eddo Observaţ că, petru mmzarea umărulu operaţlor, puterle lu se calculează succesv pr k k. b) Forma mbrcată: Calculul pe forma mbrcată face î următorul cclu, care calculează succesv epresle d parateze: p =a() pd =dble(a()) do k =-,0,- p =a(k) +z*p pd =dble(a(k)) +dble(z)*pd eddo p ş pd sut valorle î smplă, respectv dublă precze, î forma mbrcată. (pd este declarată î dublă precze.) 2. Calculul pr fucţa p(), î smplă precze: Se calculează valoarea polomulu, î forma dată ş cea mbrcată. Î acest calcul, membrul drept se calculează î format dublu ets (64 bţ, î coprocesor), ş rezultatul se rotujeşte la precza smplă. sub_pol.f90: subrută care calculează valoarea polomulu î modul 2 (smplă precze). C_pol.f90: programul prcpal, care calculează î modurle a, b.

54 Datele de trare sut: - : gradul polomulu - a, a,, a0 : coefceţ polomulu (î această orde); - a, b, h: tervalul [ a, b] ş pasul h Acestea se ctesc dtr-u fşer de date. Fşerul de date este utlzat ş ca fşer de eşre petru rezultatele p, p, pd. Eemplu de test: p 3 2 ( ) 3 3 ( ) 3 Fşerul de date ş rezultate: 3-3 3-0.9.2. Calcul pr cclu: p-dat p-imbrcat p-imbrcat Dubla precze 0.900-9.999873E-04-9.9990633E-04 -.0000007E-03.000 0.000000 0.000000 0.000000.00.000659E-03 9.9998503E-04.0000007E-03.200 8.000354E-03 8.0000088E-03 8.0000057E-03 Err(p_Dat) Err(p_Imbrcat) 0.900 -.359E-08-9.438E-08.000 0.00 0.00.00 -.652E-07.569E-08.200 -.297E-07-3.040E-09 Calcul pr fucte: p-dat p-imbrcat 0.900 -.0000007E-03.0000007E-03.000 0.000000 0.000000.00.0000007E-03 -.0000007E-03.200 8.0000060E-03-8.0000060E-03

55 Se costată: - La calculul pr cclu: valoarea cea ma precsă este pd (cu ecepţa valor î 0.9). - La calculul pr fucţe: u estă dfereţe ître forma dată ş mbrcată, ş valorle cocd cu valorle pd. Pol Metoda Newto petru poloame Algortmul cu reducerea gradulu Fşere: Polall.f90: subruta metode Ma-Pol.f90: programul prcpal Metoda: Se cosderă polomul p( ) a 0 a a Defm coefceţ a 2 2 a b ; bk ak bk, k, 2,..., 0 ude b p( ). Defm polomul cât, pr: 0 q( ; ) b b2... b, adcă p( ) ( ) q( ; ) p( ). Formula de terare este p( ) q( ; ), î care: q( ; ) q( ;. ), Subruta metode: Pol(, a, 0, eps, tma,rad, b, er, _dv) Calculează o rădăcă a lu p().

56 Parametr formal: : gradul polomulu a: vectorul coefceţlor: a0, a,..., a 0: apromaţa ţală eps: toleraţa petru metoda Newto tma: Itrare: umărul mam de teraţ. Ieşre: umărul efectv de teraţ rad: rădăca / ultma apromaţe b: coefceţ lu q() - returaţ petru o oua rădăcă. er: cod de trare/eşre: - Itrare: tpărrea teraţlor (0: da; 0: u) - Ieşre: cod de îcheere a teraţe: 0: toleraţa eps atsă : umărul mam de teraţ ats 2: Proces staţoar -: Dvergeţă -2: Numtor ul _dv: umărulde dvergeţe locale Formula de terare este codată astfel: 0 df Observaţ - Testul petru toleraţă este: df eps - Testul petru dvergeţă locală este: ude df df _ at df _ at este df de la pasul ateror. Programul prcpal: Este scrs astfel ca să determe u umăr specfcat de rădăc, pr reducerea succesvă a gradulu (deflaţe), ş aume: după găsrea ue rădăc, rădăca

57 următoare se caută ca rădăcă a lu q(), care are gradul cu o utate ma mc decât precedetul polom. Rădăcle sut apo, purfcate, pr terare î polomul orgal. Algortmul cu reducerea gradulu este ma puţ recomadat, îtrucât: reducerea gradulu poate f u proces stabl; se cer, î plus, teraţ de purfcare a rădăclor. Alteratva este algortmul fără reducerea gradulu v. folderul Pol_Drect. Fşerul de trare coţe următoarele date (scrse pe l): Le_tet: ttlul probleme; ma. 80 caractere;, r, ktp: gradul polomulu, umăr de rădăc de calculat, cod de tpărre a teraţlor; a, a a : coefceţ polomulu: (î această orde);,, 0 eps, tma: toleraţa, umărul mam de teraţ; 0(:r): apromaţle ţale, î umăr de r. Datele de eşre se scru î cotuarea datelor de trare, ş coţ: rad: Rădăca calculată, sau ultma terată dacă u s-a ats toleraţa; Codul de îcheere a teraţe; Numărul de teraţ; Valoarea p(rad). Eemplu: Polomul Laguerre de gradul 6. Fşerul de trare/eşre este: Laguerre de ordul 6 6 0-36 450-2400 5400-4320 720 e-6 40 0 3 6 9 5 ** Radacle pr deflate: Rad Cod Iterat p(rad) 0.2228466 0 5 5.4396223E-06.88932 0 4-4.6508652E-04 2.992738 0 3 -.693367E-03

58 5.7754 0 4 -.569267E-02 9.837474 0 4 4.574375E-02 5.98287 0 2 -.6622657E-02 ** Radacle polomulu: 0.2228466 0 5.4396223E-06.88932 0-4.6508652E-04 2.992737 0 -.693367E-03 5.77549 40-2.9657342E-02 9.837465 0 4-5.3842347E-03 5.98287 0 -.6622657E-02 Pol_Drect Metoda Newto petru poloame fără reducerea gradulu. Fşere: Pol_drect.f90: subruta metode Ma-Pol_drect.f90: programul prcpal GetFle.f90, OpeFle.f90: subrute petru selectarea fşerulu de trare Perod.f90: fucţe petru calculul peroade procesulu staţoar wdth.f90: utltar Metoda: Metoda este aceeaş ca î POL. Deosebrea este că acum, programul prcpal calculează rădăcle pr terare î polomul orgal (fără reducerea gradulu). Acest procedeu se recomadă faţă de cel descrs î POL. Subruta metode: POL_drect(, a, 0, eps, tma, rad, b, er, _dv) Parametr formal sut aceeaş ca la subruta metode POL, cu dfereţa că b este varablă scalară, care returează valoarea polomulu pe rădăca calculată. Datele de trare ş de eşre, sut aceleaş ca petru fşerul de trare d POL.

59 Î plus, programul prcpal tpăreşte ş semfcaţa codurlor de îcheere a teraţe. Notă: Fşerul de trare se selectează d fereastra de dalog stadard. Eemplu: Polomul Laguerre de gradul 6. Fşerul de trare/eşre este: Laguerre de ordul 6 6 0 0-36 450-2400 5400-4320 720 e-6 40 0 3 6 9 5 ** Radacle: Radaca Cod Iterat p(radaca) 0.2228466 0 5.587880E-05.88932 0 4-4.39003E-05 2.992736 0 3 -.669909E-05 5.77544 0 4.5937904E-04 9.837467 0 6 3.938325E-03 5.98287 0 6 -.25485E-02 Cod Semfcate 0 * Tolerata EPS atsa Notă Pol_Drect-20 Acest proect mplemetează formula de terare Newto, petru poloame, î forma: p( ) p( ) Deosebrea față de formula geerală Newto este că acum, valoarea polomulu ș a dervate se calculează î formă mbrcată (v. fucța polval.f90). Formula d POL este potrvtă ma degrabă, petru versuea cu reducerea gradulu. Î rest, proectul este smlar cu cel d Pol_Drect. Fșerul de trare este acelaș cu cel de la Pol_Drect.

60 Pol_Comple Metoda Newto petru poloame: coefceţ real ş rădăc reale/complee. Fşere: Pol_comple.f90: subruta metode Ma-Pol_comple.f90: programul prcpal GetFle.f90, OpeFle.f90: subrute petru selectarea fşerulu de trare Perod_Comple.f90: fucţe petru calculul peroade procesulu staţoar wdth.f90: utltar Metoda ş formula de terare sut aceleaş ca petru POL, ar algortmul este cel d POL_Drect. Coefceţ polomulu sut real, ş se pot calcula rădăcle complee. Î plus, programul prcpal oferă posbltatea versăr coefceţlor polomulu adcă: se troduc coefceţ a k, ş se calculează rădăcle polomulu cu coefceţ / a. k Datele de trare ş eşre sut aceleaş ca petru fşerul de trare d POL, cu ecepţa că, după coefceţ polomulu se trduce o dată logcă petru versarea coefceţlor; Valoare: T (da), sau F (u) v. fşerul de ma jos. Apromaţle rădăclor trebue să fe complee. Dezavatajul este că trebue cuoscute apromaţ complee sufcet de apropate de rădăc. Eemplul de test: Se cosderă polomul p( ) 7 28 6 322 5 960 4 6769 3 332 care este desvoltarea lu ( ) ( 2)... ( 7). Coefcetul lu polomulu perturbat: ~ 7 6 p ( ) 28.002 322 2 3068 5040, 6 se modfcă, d 28, î -28.002. Se calculează rădăcle 5 Fşerul de trare/eşre este: Polomul: (-)*... *(-7) - perturbat: -28.003

6 7 0 0-28.002 322-960 6769-332 3068-5040 F e-6 00 (,0) (2,0) (3,0) (4,0) (5., 0.5) (5.,-0.5) (7,0) Radaca 3.89486 0.000000 Iterata 42: (42) = (5) ** Proces statoar de peroada = 37 Radaca Nr. de dvergete locale (.998932,0.0000000E+00) 4 (3.89486,0.0000000E+00) 9 (5.458657,0.5402664) 9 (5.458657,-0.5402664) 9 ** Radacle: Radaca Cod Iter p(radaca) (.000003 0.000000 ) 0 2 (.082272E-04 0.000000 ) (.998932 0.000000 ) 0 4 (-3.989556E-05 0.000000 ) ( 3.03330 0.000000 ) 0 3 (-4.495029E-05 0.000000 ) ( 3.89486 0.000000 ) 2 42 (-2.0952073E-03 0.000000 ) ( 5.458657 0.5402664 ) 0 22 (.086487E-05-4.6607955E-05) ( 5.458657-0.5402664 ) 0 22 (.086487E-05 4.6607955E-05) ( 7.233083 0.000000 ) 0 7 (-3.4990243E-04 0.000000 ) Cod Semfcate 0 * Tolerata EPS atsa 2 ** Proces statoar

62 Laguerre Metoda Laguerre. Metoda: Formula de terare este z p( z ) p( z ) H( z ) z, 2 ude: este gradul polomulu; H( z ) ( )[( ) p ( z ) p( z ) p ( z )], ar semul d faţa radcalulu se a astfel ca umtorul să fe cel ma mare î modul (dacă z este real, semul este semul lu p z ). Se arată că petru o rădăcă smplă, ordul de covergeţă este 3 (petru o rădăcă multplă, ordul este ). ( Fşere: Ma_Lag.f90: programul prcpal; polval.f90 (subruta compute_polval) care calculează valoarea polomulu (î smplă precze) Subruta metode este apelată d Bbloteca IMSL, aume: ZPLRC (, coef, rad) Parametr de apel sut: : gradul polomulu coef: tablou (real); coefceţ polomulu a(0:) rad: tablou (comple); rădăcle calculate rad(). Programul apelat trebue să coţă strucţuea: use umercal_lbrares Metoda Laguerre petru u polom cu coefceţ real este mplemetată î IMSL pr subruta ZPLRC, fd combată cu reducerea gradulu, astfel că se determă toate zero-urle polomulu. Apelul lu ZPLRC u cere apromaţ ţale v. IMSL Math/Lbrares (999). (Subruta ZPLRC returează uma rădăcle.)

63 Datele de trare se ctesc dtr-u fşer de date. Acesta coţe: Ttlul probleme: tet de ma. 80 caractere : gradul polomulu a, a a : coefceţ polomulu (î această orde).,, 0 Iverse: Dstace: [z: dată logcă; versarea sau u a coefceţlor. Valor: T/F. dată logcă; calculul dstaţe rădăclor la u puct. Valor: T/F. comple; puctul z la care se calculează dstaţa. Se troduce uma dacă Dstace are valoarea T; î ua d formele: comple: (, y) ; do real:, y sau y] Notă: Ultmele tre date servesc la a verfca dacă rădăcle aparţ sau u dsculu utate cu cetrul î puctul z (, y) ; aceasta terve la aprecerea stabltăţ metodelor umerce î ma mulţ paş petru ecuaţ dfereţale ordare. Codul este scrs astfel că: - Dacă ambele date Iverse ş Dstace sut false, ele se pot omte. - Dacă data Dstace este falsă, ea se poate omte. Datele de eşre se scru î cotuarea datelor de trare, ş coţ: - Rădăcle calculate ş valorle polomulu pe rădăc. - Dacă Dstace are valoarea T, se tpăresc ş dstaţele rădăclor la puctul z. Eemplu: Fşerul de trare/eşre este: Ttlu: (-)*... *(-7) - perturbat: 7-28.002 322-960 6769-332 3068-5040 Radac: (7.233085,0.0000000E+00) 2 (5.458664,0.5402883) 3 (5.458664,-0.5402883) 4 (3.89508,0.0000000E+00)

64 5 (3.03340,0.0000000E+00) 6 (.998938,0.0000000E+00) 7 (.000003,0.0000000E+00) Valor polom: Notă (2.08976E-03,0.0000000E+00) 2 (-9.5487665E-04,-7.6583266E-05) 3 (-9.5487665E-04,7.6583266E-05) 4 (9.9300256E-04,0.0000000E+00) 5 (9.70277E-04,0.0000000E+00) 6 (-2.0569569E-04,0.0000000E+00) 7 (.082272E-04,0.0000000E+00) - Folderele Laguerre ș Laguerre_D (dublă precze): coţ sursele petru versuea cu utlzare IMSL. - Folderul Laguerre_Drect: coţe sursele care mplemetează drect formula Muller de terare Laguerre. Petru acest proect, fșerul de trare este descrs Ma_Laguerre_.f90 - ș e smlar cu fserul de la Pol_Drect. Î această versue, se cer apromaț țale ale rădăclor. Metoda Muller. Fucţe f, cotuă ş cu dervate cotue pâă la ordul 3, pe o vecătate a rădăc. Metoda: Metoda cere tre apromaţ ţale 0,, 2 ale rădăc. (Nu este ecesar ca acestea să fe ordoate după mărme.) Se costrueşte polomul de terpolare (de gradul 2) care trece pr puctele, f ), ude f f ( ) ; apromaţa următore 3, este ua d rădăcle lu p() ( v. ma jos.

65 Apromaţ reale pot coduce la zero-ur complee. Î partcular, apromaţle reale se pot lua forma:, h. Polomul de terpolare Newto pe odurle 2,, 0 (v. INTERPOLARE), este: p ) f f ( ) f ( )( ), ( 2 2 2 20 2 Coefceţ sut dfereţele dvzate ale fucţe f pe odurle,,, aume: j k f f ) ; ( f j f j f f [, j ] ; j f jk f jk fj f [, j, k ], k Fe polomul de terpolare desvoltat î ) : 2 p ) a( ) b( ) c ( 2 2 Coefceţ a, b, c, se găsesc pr: ; c f 2 a f 20 ; b f 2 f02 f0 Formula de terare este 3 2 b 2c b 2 4ac ( 2 Ca apromaţe următoare, se a valoarea 3 care este cea ma apropată de 2, adcă rădăca petru care 3 2 este cel ma mc. Petru aceasta, semul d faţa radcalulu se a astfel ca umtorul să fe cel ma mare, ş aume: - Petru rădăc reale, se a semul lu b (dacă b = 0, orce sem); - Petru rădăc complee (clusv cazul î b este comple), semul petru care umtorul este cel ma mare î modul. Eplct: puem 2 b b b 4ac. Dacă b, atuc formula de terare este:,2 b2 3 2 2c / b ; altfel, 3 2 2c / b2. După determarea lu 3 : - Dtre puctele, 0, 2, se eclude puctul cel ma îdepărtat de 3 (cel petru care 3 este cel ma mare).

66 - Se atrbue 3 lu 2. Celelalte două pucte dev 0 ş. - Se procedează la o ouă teraţe (cu oua secveţa 0,, 2 ). Testul de oprre a teraţe este 3 2 EPS, ude EPS este toleraţa; remarcaţ că 2 3 _ ateror. Covergeţa: metoda Muller are ordul de covergeţă p =.84 petru o rădăcă smplă; v. Atkso (978). Petru o rădăcă compleă multplă, covergeţa poate f ma îceată. Fşere: Muller2005.f90: subruta metode select.f90: subruta de selecţe a valorlor 0,, 2 (petru teraţa următoare). Ma_Muller2005.f90: programul prcpal f.f90: fucţa f() Fucto_epresso.f90; wdth.f90: utltare Subruta metode: muller(f, 0,, 2, eps, ter, rad, kod) Parametr formal: f: Numele fucţe f 0,, 2: Apromaţle ţale eps: Toleraţa ter: Numărul lmtă de teraţ (trare); umărul efectv de teraţ (eşre) rad: Rădăca calculată kod: Itrare: cod de tpărre a teraţlor: 0 (u); 0 (da) Ieşre: cod de îcheere a teraţe (ter): 0: Toleraţa eps atsă : lt depăşt 2: Rădăca î apromaţle ţale -: Radcal d umăr egatv

67 Subruta muller apelează subruta select (0,, 2, 3). Datele de trare se troduc de la termal, s costau d: - ume: umele fşerulu de eşre (acesta prmeşte etesa.rez) - Est_p: dată logcă. Valor: T (true) sau F (false) - [p: dacă Est_p = T ] - eps, lt: toleraţa, umărul lmtă de teraţ -, h: apromaţa, pasul - kod: cod de tpărre a teraţlor Programul prcpal pue (îate apelul subrute muller): 0 h; 2 h Datele de eşre se scru î fşerul de eşre ume.rez, ş sut următoarele: - epresa fucţe f (scrsă de utltarul Fucto_epresso) - [p, dacă estă] - apromaţle 0,, 2 - lt, eps - modul de îcheere a teraţe (mesaj, coform codulu kod) - rădăca calculată rad; valoarea f(rad) - umărul efectv de teraţ. Eemplu de test: f ( ) p 2 e, cu p = 3; se caută rădăca d vecătatea valor 0.8. Se au: 0 0.8, h 0. 2 (Rezultă apromaţle ţale: 0.6; 0.8;.0) eps = E-6, lt 0; ktp = 0. Fşer de eşre: Metoda MULLER f =ep() -p** p: 3.000000 Radaca r.

68 Apromat: 0.6000000 0.8000000.000000 EPS:.000E-06; LNIT: 0 Iter 0 2 * 3 0.6000000 0.8000000.000000 0.90408 2 0.8000000.000000 0.90408 0.90007 3.000000 0.90408 0.90007 0.900076 * Tolerata EPS atsa Radaca = 0.900076 Numar de terat = 3 ; f(radaca) = 2.42968E-08 Grafcul fucţe ş polomulu de terpolare se dau ma jos.

69 Fgura 7 Metoda Muller: grafcul fucţe ş polomulu de terpolare Muller\Muller_Comple Metoda Muller petru rădăcle ue fucţ complee. Fşere: Muller_Comple2005.f90; Ma_Muller_Comple2005.f90; f_comple.f90; select_comple.f90; Fucto_epresso.f90;; wdth.f90; Subruta metode: Muller_comple(f, h, z0, z, z2, eps, ter, rad, kod) Semfcaţle parametrlor sut aceleaş ca la Muller, cu deosebrle: - datele umerce ş fucţa f sut declarate complee - programul este scrs î dublă precze

70 Datele de trare se ctesc dtr-u fşer de date (specfcat de utlzator). Acesta are structura: - Ttlul probleme: tet de ma. 80 caractere - Est_p: dată logcă. Valor: T (true) sau F (false) - [p: dacă Est_p = T ] - rad: umărul rădăclor de calculat - z(:rad): rad apromaţ reale sau complee - h: pasul. Valoare reală. - eps, lt: toleraţa, umărul lmtă de teraţ - ktp: cod de tpărre a teraţlor: 0 (da); 0 (u) Datele de eşre se scru după datele de trare, ş coţ: rădăca, valoarea fucţe pe rădăcă, ş umărul de teraţ (petru rad rădăc). Eemplu de test: Petru polomul d eemplul de la Pol_Comple, se terează cu eps E 0 ; lt = 20; apromaţa reală 6 ; h 0.. Fşerul de trare/eşre este următorul: Wlkso_7 F 6 0. E-0 20 0 Metoda MULLER (Comple) f =(z-)*(z-2)*(z-3)*(z-4)*(z-5)*(z-6)*(z-7) -0.002*z**6 EPS:.000E-0; LNIT: 20 # Radaca Iterat 5.458675825432509 0.540258000668572 9 f = (-.4208547520200E-04,3.974423092045E-04) 2 5.458675825432509 0.54025800066857 7

7 f = (-2.8427094304040E-04,.776356839400250E-04) Rădăca este găstă î 7 teraţ. Cu apromaţa 5 se găseşte aceeaş rădăcă î 9 teraţ.

72 CAPITOLUL III SISTEME DE ECUAŢII LINIARE Sstemul de ecuaţ lare este A b, ude A est matrce, ar ş b vector coloaă cu coordoate. Rezolvarea se poate cosdera petru ma mulţ terme lber b. III- Metode drecte Gauss Elmarea Gauss cu pvotare parţală. Fşere: Elm.f90: subruta metode Ma-EIm.f90: programul prcpal wdth.f90: utltar Fşer de date: E2.dat Metoda: Sstemul dat se trasformă î sstemul echvalet U g, cu matrcea U superor trughulară, cum urmează. Sstemul dat se otează () () A b. La pasul curet k ( k, 2,, ): Sstemul este ( k) ( k) A b. Se lucrează cu lle k,,, d (k ) A ş (k ) b. (Lle,, k, procesate ( k) ateror, rămâ eschmbate). Cocret, se operează cu sub-matrcea A ( k :, k : ) ( k) ş sub-coloaa b ( k : ) a termelor lber.

73 ) (... 0 0 0....................... 0. 0...... 0... 0.. ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) (, ) (, (2) 2 (2) 2 (2) 22 () () () 2 () ) ( k k k k k k j k k k k k kj k kk k k k k k k k k m a a a a a a a a a a a a a a a a a A ; ) (.. ) ( ) ( ) ( ) (, (2) 2 () ) ( k k k k k k k k k m b b b b b b b Presupuem 0 ) ( k kk a v. ma jos pvotare, ş defm multplcator de la pasul k: ) ( ) ( k kk k k k a a m ; k,, Petru k,, : la k se îmulţeşte cu k m, ş se aduă la la. Rezultă elemete ule î coloaa k, sub elemetul dagoal (k ) kk a. La k rămâe eschmbată. No coefceţ ş terme lber vor f: k b m b b k j a m a a k k k k k k kj k k j k j,...,,..., ; ) ( ) ( ) ( ) ( ) ( ) ( La pasul se otează, petru coveeţă, ) ( ) (, b g A U, ş sstemul deve g U. Eplct:

74 u 0 0 0 u. 22... 0 u... kk..... 0 u g u 2 2 g 2... uk k g k... u g Acest sstem se rezolvă pr substtuţe îapo: g u; k ( g k ukj j ) / ukk jk / ; k, 2,..., Pvotarea parţală: La fecare pas k, se caută elemetul de modul mam d sub-coloaa a ( k :, k), umt pvot; fe acesta găst î la I k. Dacă pvotul este ma mare decât u prag ş (k ) A ş î (k ) b ). I k, atuc se schmbă lle k ş I (î Dacă pvotul este ma mc decât pragul, elmarea Gauss se opreşte, îtrucât: - dacă pvotul este ul, matrcea este sgulară. - dacă pvotul este eul dar ma mc decât pragul, matrcea este aproape sgulară. Număr de operaţ: Petru = mare, umărul de operaţ î elmarea Gauss este: 3 NOP Guass 3 Subruta metode: ELIM (, b, A, B, prag, kod, kodprt) Parametr formal: : umărul ecuaţlor b: umărul de terme lber A(, ): matrcea coefceţlor

75 B(, b): matrcea termelor lber prag: prag petru pvot 0. kod : cod petru elmarea Gauss: kod = 0: o.k.; kod 0: pvot 0 (pvot < prag) kodprt: cod de tpărre v. ma jos. ELIM face pvotare parţală. Dacă pvotul este ma mc decât pragul, se produce u mesaj de eroare. Valoarea prag este setată de programul prcpal la E-6 (aceasta se poate modfca). Matrcea U se stochează î trughul superor d A. Soluţa este returată î coloaele d B. Datele de trare se ctesc dtr-u fşer de date, specfcat de utlzator. Acesta are structura: - Ttlu: tet de ma. 80 caractere -, b: umărul de ecuaţ; umărul de terme lber. - Matrcea coefceţlor A:. Se scre aşa cum e dată - pe l ş coloae. - Terme lber b: Se scru pe l: b l a terme lber. - cod_ Iversare_Coefceţ, cod_ Tpărre: cod_iversare_coefceţ: dacă este 0, atuc se rezolvă sstemul cu a(, j)./ a(, j). cod_ Tpărre: dacă este 0: Se tpăresc permutărle ş pvoţ. - check_tet: tet de ma. 20 caractere. Prmul caracter este semfcatv, Observaţe aume: C, c, P, p: se face proba A b (cocret, se tpăreşte vectorul A b). Dacă se cere proba, atuc programul prcpal salvează A ş B îate de apelul lu ELIM Datele de eşre se scru î cotuarea datelor de trare v. ma jos Eemplul-: Matrce 33, 2 terme lber.

76 2 3 A 2 4 ; 3 4 6 b 7. 8 Fşerul de trare/eşre: Test: soluta_ =,, 3 2 2 3 2 4 3 4 6 7 8 0 0 proba * Soluta petru terme lber r. () =.000000 (2) =.000000 (3) =.000000 * Soluta petru terme lber r. 2 () = 0.4906E-07 (2) = 0.2000000 (3) = 0.2000000 * Proba A =b: Soluta r. : A* -b 0.0000000E+00 2 0.0000000E+00 3 0.0000000E+00 Soluta r. 2: A* -b 0.0000000E+00 2 0.0000000E+00 3 0.0000000E+00

77 Eemplul-2: Matrce sgulară Fşerul de trare/eşre (E2.dat): Matrce 44: sgulara. 4 5 6 3-0 - 2 2 6 4 2 3 4 4* 0! kodiv, kodprt Check Permutare, Pvot: 5.000000 2<->4-2.800000 3-0.285743 4 7.7486033E-07 La 4: Pvot = 7.7486033E-07 * Pvot <.00E-06! * Sstemul u se poate rezolva. Notă Acest eemplu arată de ce s-a ales pragul egal cu E-6 Gauss_AB Elmarea Gauss lucrul cu matrcea etsă. Fşere: Elm2003.f90; Ma-Elm2005.f90; wdth.f90; Subruta metode:

78 ELIM (AB,, col, prag, kod) Parametr formal: AB(, col): matrcea coefceţlor etsă cu terme lber. : umărul ecuaţlor. col: col = + b, ude b este umărul de terme lber (col este deft î programul prcpal). prag: prag petru pvot 0. kod : cod petru elmarea Gauss: kod = 0: o.k.; kod 0: pvot 0 (pvot < prag). Metoda este aceeaş ca la Gauss, cu deosebrea că acum, subruta metode lucrează cu matrcea etsă AB(, col). Soluţle sut returate coloaele matrc etse. : b ale Datele de trare se ctesc dtr-u fşer de date. Acesta are aceeaş structură ca la Gauss, cu deosebrea că u ma coţe codul de tpărre: - Ttlu: tet de ma. 80 caractere -, b: r. de ecuaţ; r. de terme lber. - Matrcea coefceţlor A:. Se scre aşa cum e dată - pe l ş coloae. - Terme lber b: Se scru pe l: b l a terme lber. - cod_ Iversare_Coefceţ: cod_iversare_coefceţ: dacă este 0, atuc se rezolvă sstemul cu a(, j)./ a(, j). - check_tet: tet de ma. 20 caractere. Prmul caracter este semfcatv, Observaţe aume: C, c, P, p: se face proba A b. Dacă se cere proba, atuc programul prcpal salvează matrcea AB îate de apelul lu ELIM Datele de eşre se scru î cotuarea datelor de trare ş coţ soluţa ş proba (dacă este comadată pr check_tet).

79 LU Rezolvarea pr descompuerea LU (calculul drect al factorlor L ş U) metoda Doolttle. Cu pvotare parţală. Fşere: Prmele 5 fşere costtue subrutele metode. LUdecomp.f90: descompuerea LU LUsolve.f90: substtuţe îapo apvt-lu.f90: pvotare parţală compute_a_.f90: calculul pvotulu (îate de pvotare) swap_row.f90: schmbare de l Ma-LU.f90: programul prcpal wdth.f90: utltar Metoda: Metoda costă î paş:. Factorzare A LU, cu pvotare parţală. A = L U 2. Rezolvarea sstemulu Ly b, pr substtuţe îate; rezultă y. L y = b 3. Rezolvarea sstemulu U y, pr substtuţe îapo; rezultă. U = y Formulele petru calculul elemetelor lu L ş U cu l ales arbtrar (eul): l = ales arbtrar (eul), =, 2,.., u j a j k l k u kj, j =, +,, (a) l

80 Dacă u 0,,, rezultă: l j a j k l jk u k, j = +,, (b) u Elemetele lu L s U se determă î următoarea secveţă, coform scheme de ma jos (se calculează elemetele d la d U, ş coloaa d L). l, l l, u, u, u, Î partcular, la, se calculează uma u - d (a). Metoda Doolttle pue l. 3 Numărul de operaţ este acelaş ca î elmarea Gauss ( 3). Pvotare: Pvotarea trebue făcută îate de calculul elemetelor lu U ş L. Adcă, pvotul u trebue calculat ş testat îate de aplcarea formulelor (a) ş (b). Petru metoda Doolttle, pvotul este dat de (cf. a): u a lk k u k Aşa cum se arătă î Eemplu-2, trebue pvotat ş dacă pvotul este foarte mc. Practc, se testează dacă pvotul este ma mc decât u prag. Două strateg de pvotare parţală sut dspoble, comadate prtr-u cod: căutarea pvotulu mam eul, sau căutarea prmulu pvot eul. Pragul este ales ca E 6. Prma stratege oferă, î geeral, o precze ma buă, î satsfacerea verfcăr soluţe, îsă cosumă ma mult tmp de calcul. Observaţe - Dacă u se pvotează, atuc avem LU = A.

8 - Dacă se pvotează, atuc avem LU A, ude A PA, ar P este o matrce de permutare de l. Matrcea A se obţe d A, permutâd lle î aceeaş orde î care se permută la pvotare. Sstemul care se rezolvă este A b, ude b este b cu lle permutate î ordea de la pvotare Calculul determatulu: Determatul matrc A LU este det( A ) u u 22 u Determatul matrc A va f det( A) ( ) _ l det( A), ude _l este umărul de schmbăr de l î cursul pvotăr. Subruta de descompuere LU (Pasul ) este: LUdecomp(A,, order, do_pvt, kodpvot, kod) LUdecomp face: - Stocare compactă: L ş U î A, î trughul feror, respectv superor. (Elemetele dagoale d L fd u se ma stochează.) - Pvotare parţală - pr apel apvt-lu; aceasta apelează compute_a_.f90 ş swap_row.f90. Ordea llor (după pvotare) e stocată î vectorul order; order se utlzează petru ordoarea membrlor do - la rezolvare (î LUsolve). Parametr formal: A: matrcea sstemulu : umărul de ecuaţ order: vector îtreg do_pvt: dată logcă; valor: T/F: pvotează sau u. kodpvot: cod petru stratega de pvotare: kodpvot 0: pvot mam; kodpvot = 0: prmul pvot eul. kod: cod de test pvot:

82 kod = 0: o.k.; kod <0: pvot <prag Subruta de rezolvare este: LUsolve(LU, b,,, order) Paş 2 ş 3 de ma sus. Elemetele d b sut re-arajate coform schmbărlor de l. Soluţa este returată. Parametr: LU: echvaletul LU a lu A (stocare compactă) b: vectorul termelor lber : soluţa order: vector îtreg Observaţe Î LU ş LUsolve, produsele scalare se calculează î dublă precze Subrutele se apelează astfel (î programul prcpal): call LUdecomp(A,, order, do_pvt, kodpvot, kodlu)! Soluta petru "b" terme lber: do kb =, b call LUsolve(A, b(:, kb),,, order) b(:, kb) = eddo Datele de trare se ctesc dtr-u fşer de date. Acesta coţe următoarele date (scrse pe l): - Ttlu: tet; ma. 80 caractere -, b: umăr de ecuaţ; umăr de terme lber. - Matrcea coefceţlor A: (Se scre pe l s coloae). - Terme lber b: Se scru pe l: b l a terme lber. - Cod_Tpărre, Cod_versare_ coefceţ: 0 / 0; 0 / 0. o Cod_Tpărre = 0: Soluţa, î fşerul de date.

83 Petru Cod_Tpărre 0, se tpăresc î plus datele de ma jos. o Cod_Tpărre = : Soluţa, la dsplay; Matrcle L s U, î fşerul de date. o Cod_Tpărre 2: Vectorul order, la fecare pvotare; Determatul lu A; Dacă u(, ) < prag: Se tpăreşte ş la a matrc A (la pasul respectv). o Cod_versare_ coefceţ 0: a(, j)./ a(, j) - Cod pvotare, kod_pvot: o Cod_pvotare: logc, valor T/F: Da / Nu. o kodpvot: 0: pvot mam; = 0: prmul pvot eul. - Check_tet: ma. 20 caractere; prmul caracter este semfcatv: C, c, P, p / alt caracter: Verfcă / Nu verfcă - soluţa. F, f: Se verfcă soluţa ş LU = PA (PA este A permutat). Observaţe Dacă se cere verfcarea, atuc programul prcpal salvează A ş b îate de apelul lu LUdecomp Datele de eşre se scru î fşerul de date, după datele de trare. Eemplele ş 2 de ma jos, se referă la sstemul: 4 6 6 4 4 A ; b..5.5 6 6 4 4 Eemplu (Fşer de date u3.dat): Matrce 44 cu u22 =0; u33=0. Fara pvotare. 4-4 -6 6 4 4 -.5 -.5

84-6 6 4-4 4* 3 0 F 0 Check Pas - ORDER: 2 3 4-4.000000 Pas 2 - ORDER: 2 3 4 4.500000 Pas 3 - ORDER: 3 4.666667 Pas 4 - ORDER: 4-8.000000 Numar de schmbar de l = 0 Matrcea L.000000.500000.000000 0.3750000-0.466667.000000.500000.000000 0.000000.000000 Matrcea U -4.000000.000000.000000.000000 4.500000 2.500000 2.500000.666667.666667-8.000000 Determat(A) = 240.0000 * Soluta petru terme lber r. () = -0.2500000 (2) = -0.2500000

85 (3) = 0.2500000 (4) = 0.000000 * Proba A =b: A* -b 0.0000000E+00 2-5.9604645E-08 3.920929E-07 4-5.9604645E-08 Eemplu 2 (Fşer de date u3-p.dat): Matrce 44 cu u22 =0; u33=0. Pvotare. 4-4 -6 6 4 4 -.5 -.5-6 6 4-4 4* 3 0 T Check Pas - ORDER: 2 3 4-6.000000 pas 2 (test) - order: 4 3 u(2,2) = 0.000000 Pas 2 - ORDER: 3 4-3.000000 pas 3 (test) - order: 4 3 u(3,3) = 0.000000 Pas 3 - ORDER: 3 4.666667 Pas 4 - ORDER: 4

86-8.000000 Numar de schmbar de l = Matrcea L.000000 0.6666667.000000 0.2500000.000000.000000.000000 0.000000 0.000000.000000 Matrcea U -6.000000 6.000000 4.000000 4.000000-3.000000 -.666667 -.666667.666667.666667-8.000000 Determat(A) = 240.0000 * Soluta petru terme lber r. () = -0.2500000 (2) = -0.2500000 (3) = 0.2500000 (4) = 0.000000 * Proba A =b: A* -b 0.0000000E+00 2 0.0000000E+00 3 0.0000000E+00 4 0.0000000E+00 LU\Crout Rezolvarea pr descompuerea LU metoda Crout.

87 Fşere: LUdecomp-Crout.f90; LUsolve-Crout.f90; apvt-crout.f90; compute_a Crout.f90; swap_row.f90; Ma-Crout.f90; wdth.f90; Semfcaţle sut aceleaş ca ale fşerelor d metoda Doolttle. Metoda: Metoda este aalogă cu Doolttle, cu deosebrea că acum se aleg arbtrar u, ar pvotul este l. Metoda Crout pue u. LU_Comple Descompuere LU matrce compleă, metoda Doolttle Fşere: LUdecomp_z.f90; LUsolve_z.f90; apvt-lu_z.f90; compute_a z.f90; swap_row_z.f90; Ma-LU_comple.f90; wdth.f90; Semfcaţle sut aceleaş ca ale fşerelor d metoda Doolttle. Fşerul de date are aceeaş structură ca fşerul de date d LU, cu partculartăţle: - Matrcea A: elemetele se troduc pr partea reală ş partea magară; - Terme lber b: se troduc ca valor complee, î forma (, y). Paratezele sut oblgator. Eemplu: 3 2 2 4 3 A 2 6 2 ; 4 5 3 2 5 0 5 b 4 3 6 7. 2 2 Fşerul de date este (test-p.dat): Test: soluta_ =(,0) (,0) (,0); soluta_2 =(,-) (2,) (0,3) 3 2 3-2 2 4 0-3 2-6 2

88 4 0-5 3-2 (5,-) (4,-3) (2,-) (0,5) (6,-7) (-,2) 2 0 T FProba Pas - ORDER: 3 2 (4.000000,0.0000000E+00) Pas 2 - ORDER: 2 (3.500000,-5.000000) Pas 3 - ORDER: (0.2046980,-0.4932886) Numar de schmbar de l = Matrcea L.000000 0.000000 0.2500000 0.2500000.000000 0.000000 0.7500000-0.5000000 0.392675 0.775678.000000 0.000000 Matrcea U 4.000000 0.000000-5.000000.000000 3.000000-2.000000 3.500000-5.000000-0.2500000.750000 0.2046980-0.4932886 Determat(A) = 7.00000.00000 * Soluta petru terme lber r. () =.000000-0.6487E-06 (2) = 0.9999999 0.909953E-07 (3) = 0.9999998 0.234062E-06

89 * Soluta petru terme lber r. 2 () =.000000 -.000000 (2) = 2.000000.000000 (3) = -0.6782657E-06 3.000000 * Proba A =b: Soluta r. : A* -b (-4.768376E-07,2.384858E-07) 2 (-2.384858E-07,2.384858E-07) 3 (-.920929E-07,0.0000000E+00) Soluta r. 2: A* -b (0.0000000E+00,9.5367432E-07) 2 (4.768376E-07,-4.768376E-07) 3 (-.920929E-07,4.768376E-07) * Proba LU =PA: L*U (4.000000,0.0000000E+00) (-5.000000,.000000) (3.000000, -2.000000) (.000000,.000000) (2.000000,-6.000000) (.000000,2.000000) (3.000000,-2.000000) (2.000000,4.000000) (0.0000000E+00, -3.000000) LU_Comple\Crout_Comple Descompuere LU matrce compleă, metoda Crout Fşere: LU_Decomp_Crout_z.f90; LUsolve-Crout_z.f90; apvt-crout_z.f90; compute_a Crout_z.f90; swap_row_z.f90; Ma-Crout_Comple.f90; wdth.f90; Semfcaţle sut aceleaş ca î LU metoda Crout.

90 Cholesky Metoda Cholesky cu matrcea L. Metoda: Se aplcă petru u sstem cu matrce smetrcă ş poztv deftă. Petru o astfel de matrce estă o descompuere LU, î care U este traspusa lu L, adcă T A LL. Metoda Cholesky u ecestă pvotare. Paş rezolvăr sut aceeaş ca paş LU, aume: ) Factorzare: T A LL 2) Calculul lu y, pr substtuţe îate: Ly b T 3) Calculul soluţe, pr substtuţe îapo: L y. Petru = mare, umărul de operaţ î metoda Cholesky este NOP Cholesky 3 6 Adcă, NOP Cholesk NOPGauss. 2 Fşere: Cholesky.f90; Forward.f90; Back.f90; Loca.f90; Ma_Cholesky-2004.f90; wdth.f90 Subrutele metode sut: cholesky(a, kod): Descompuerea Cholesky (Pasul ) forward(l,b): Substtuţe îate (Pasul 2) back(l,b): Substtuţe îapo (Pasul 3) Ele se apelează astfel (î programul prcpal): call Cholesky(a, kod) do k =,b call forward(a,b(:,k)) call back(a,b(:,k)) eddo

9 Parametr formal sut: a: vector de dmesue ( ) / 2. Acesta stochează: La trare: matrcea A (trughul feror, pe l); La eşre: matrcea L (trughul feror). kod: cod de eşre d descompuerea Cholesky: 0: ok; -: Matrcea u este poztv deftă. l: vector de dmesue ( ) / 2. Acesta stochează matrcea L. b: vector de dmesue, care stochează la trare terme lber, ş la eşre soluţa. Aume: Forward: b, ş y; Back: y, ş. La acestea, se adaugă o fucţe care calculează adresa elemetulu A(, j) î vectorul de stocare a, aume Loca(, j). Ma_Cholesky-2004.f90: programul prcpal Observaţe Programul prcpal stochează matrcea A î vectorul a de dmesue ( ) / 2 wdth.f90: utltar Datele de trare se ctesc dtr-u fşer de date, care coţe: Ttlu: tet, ma. 80 caractere., b: = umărul de ecuaţ; b = umărul de terme lber. a: trughul feror d A. b: terme lber; se scru pe l: b l a terme lber. kod: Cod de tpărre check_tet: tet, ma. 20 caractere. Prmul caracter e semfcatv: C, c, P, p : se verfca soluţa calculată. Datele de eşre se scru î cotuarea datelor de trare. Eemplu (Matrcea A, d Jegs (980), p. 06):

92 6 4 8 A 4 5 4 ; 8 4 22 2 28 b 2 5. 2 26 Fşer de date (2.dat): Test petru Cholesky 3 3 6 4 5 8-4 22 2 2 2 28 5 26 Proba Matrcea L 4.000000.000000 2.000000 2.000000-3.000000 3.000000 * Soluta petru terme lber r. - 3: 2 3 : -0.4236-0.2847222.000000 2: 0.4583333 0.966667.000000 3: 0.805556 0.36.000000 * Proba A =b: Soluta r. : A* -b 0.0000000E+00 2-5.9604645E-08 3.920929E-07 Soluta r. 2: A* -b 0.0000000E+00 2 -.920929E-07

93 3 2.384858E-07 Soluta r. 3: A* -b 0.0000000E+00 2 0.0000000E+00 3 0.0000000E+00 Cholesky_S Metoda Cholesky cu matrcea S. Metoda: Metoda este aceeaş cu cea epusă la Cholesky. Cu deosebrea că acum, matrcea de referţă este matrcea T S L T. Factorzare: A S S. Astfel, paş sut: T 2. Calculul lu y, pr substtuţe îate: S y b 3. Calculul soluţe, pr substtuţe îapo: S y. Programul prcpal stochează acum, î vectorul a, trughul superor al lu A (pe coloae). Datele de trare ş eşre sut aceleaş ca la Cholesky, cu deosebrea că matrcea A se troduce pr elemetele trughulu superor. Fşere: Cholesky_S.f90; Forward.f90; Back.f90; Loca.f90; Ma_Cholesky_S.f90; wdth.f90; Semfcaţle sut aceleaş ca ale subrutelor d Cholesky. Eemplu: Eemplul d Cholesky, petru coloaele ş 3 de terme lber. Fşer de date:.dat Cholesky_Bad Cholesky petru matrc badă (smetrce ş poztv defte).

94 Matrce badă: elemetele ue l sut alcătute d: - Elemetul dagoal, u umăr de LIM- elemete la stâga acestua, ş LIM- elemete la dreapta. - Celelalte elemete d le sut zero. Numărul LIM se zce sem-lăţmea de badă. LIM repreztă umărul elemetelor d sem-badă, clusv elemetul dagoal. Observaţe Ître elemetele d badă, pot f ş elemete ule, dar elemetele stuate î afara bez sut toate ule. Î acest ses, LIM este sem-lăţmea de badă mamă De eemplu, o matrce 66, cu LIM = 3, are structura: a a a 2 22 Smetrc a a a 3 23 33 a a a 0 24 34 44 0 0 a a a 35 45 55 0 0 0 a46 a 56 a66 Metoda: Matrcea badă se presupue smetrcă ş poztv deftă. Descompuerea T LL sau S T S urmează se cosderă descompuerea Paş sut ce de la Cholesky_S. ) Descompuerea Cholesky: poate f făcută lucrâd eclusv î badă. Î ceea ce T A S S, lucrâd cu sem-bada superoară. Elemetele actve la u pas al descompuer, sut coţute îtr-u trugh cu laturle LIM umt trughul actv. Î cursul procesulu, trughul actv coboară cu câte o le î badă. Metoda utlzează u vector de lucru Y, de dmesue NY, ude se defesc: NY 0 LIM ( LIM ) / 2 ; NY NY0 LIM. Acest vector este costtut d două părţ:

95 - Sub-vectorul Y( : NY 0 ), de dmesue LIM ( LIM ) / 2 : serveşte ca frot de lucru, petru descompuerea Cholesky; î acestea se geerează elemetele trughulu actv la u pas (trugh cu laturle LIM). - Sub-vectorul YA( NY 0 : NY ), de dmesue LIM : ţal, stochează matrcea A, pe l. Î cursul descompuer Cholesky, stochează lle procesate ale matrc A. Y YA LIM(LIM+)/2 LIM LIM LIM Fgura 8 - Tablourle Y ş YA 2) Soluţa: Aceasta se calculează pr substtuţe îate ş îapo (paş 2 ş 3). Petru alte cosderaţ prvd metoda (stocare, algortm), v. Cap. 4, 5.6. Fşere: AA.f90: fucţe care geerează elemetul (, j) al matrc badă A Cholesky_Bad.f90: descompuerea Cholesky î badă Loca.f90: fucţe care calculează adresa elemetulu A(, j) î vectorul Y Lof.f90: Locul î frot : adresa uu elemet d trughul actv, î vectorul Y. Ma-Cholesky_Bad_2005.f90: programul prcpal Solve.f90: calculează soluţa wdth.f90: utltar Fşer de date: b6-3.dat Datele de trare se ctesc dtr-u fşer de date, care coţe: Ttlu: tet, ma. 80 caractere., LIM, b: = umărul de ecuaţ; LIM = sem-lăţmea de badă (clusv elemetul dagoal); b = umărul de terme lber.

96 A: sem-bada superoară d A, aume: se scru l de LIM elemete; petru ultmele l se adaugă elemete ule (la dreapta), pâă la împlrea umărulu de LIM elemete. b: terme lber: Se scru pe l; b l a terme lber. kod: cod de tpărre: kod = 0: se tpăreşte soluţa; kod 0: se tpăreşte ş matrcea S; check_tet: T kod 2: se tpăreşte ş proba S S A. tet, ma. 20 caractere. Prmul caracter este semfcatv: C, c, P, p: se verfca soluţa. Eemplu: Se cosderă sstemul deft de: 4 0 0 0 4 0 0 4 0 A ; 4 Smetrc 4 4 b 2 0 0 2 Fşer de date (b6-3.dat): Test petru Cholesky: matrce bada - sem-bada superoara 6 3 2 4 - - 4 - - 4 - - 4 - - 4-0 4 0 0 6* 2 0 0 2 Check Matrcea A:

97 4.000000 -.000000 -.000000 4.000000 -.000000 -.000000 4.000000 -.000000 -.000000 4.000000 -.000000 -.000000 4.000000 -.000000 4.000000 Matrcea S: 2.000000-0.5000000-0.5000000.936492-0.6454972-0.563978.825742-0.7302967-0.5477226.788854-0.7826238-0.559070.75728-0.880962.737302 * Soluta petru terme lber r. - 2: 2 : 0.904769.000000 2:.90476 0.9999999 3:.42857 0.9999999 4:.428572.000000 5:.90476.000000 6: 0.9047620.000000 * Proba A =b: Soluta r. : A* -b 0.0000000E+00 2-2.384858E-07 3 -.920929E-07 4 4.72325E-07 5.788393E-07 6 0.0000000E+00 Soluta r. 2: A* -b.920929e-07 2 -.788393E-07

98 3 -.788393E-07 4 0.0000000E+00 5-5.9604645E-08 6 4.768376E-07 III-2 Aalza eror ş codţoare Numar_Codte Calculul umărulu de codţe al ue matrc, după orma- ş orma-. Metoda: Se dă sstemul A = b. Cosderăm o perturbaţe r a termelor lber, adcă o ~ terme lber b b r, ude r / b este mc. Sstemul deve A ~ ~ b. Notăm perturbaţa soluţe pr e / Cod ( A), Cod ( A) r / b î care: Cod(A) = A A -. e ~, ş avem Numărul Cod(A) este umărul de codţe al matrc A. Avem Cod ( A). - Dacă Cod(A) ~ : A se zce be-codţoată; e / este mc, adcă este de ordul lu r / b. - Dacă Cod(A) >> : A se zce rău-codţoată; e / poate f mare, adcă e / r / b. Numărul de codţe depde de orma cosderată. Î partcular, se defeşte Cod ( A ) ( A ) ( A ), î care: (A) este raza spectrală a matrc A, deftă de ( A) ma ( A) ude ( A), sut valorle propr ale matrc A. Avem, petru orce ormă,, Cod ( A) Cod ( A). Numărul Cod (A) se calculează pr

99 ma Cod ( A) ( A) m. ( A) Programul calculează umărul de codţe petru ormele A ma j a j. ş., defte pr: Aceasta se zce orma llor, ş este mamul sumelor modulelor elemetelor, pe l. A ma j a j Aceasta se zce orma coloaelor, ş este mamul sumelor modulelor elemetelor, pe coloae. Fşere: Ma-Numar_Codte.f90;Normlf.f90; Norm.f90; Elm2004.f90; wdth.f90; Ma-Numar_Codte.f90: programul prcpal Normlf.f90, Norm.f90: orma- ş orma-, ale ue matrc Elm2004.f90: elmarea Gauss; aceasta serveşte petru calculul matrc verse. wdth.f90: utltar Subruta de elmare Gauss este ELIM2 (, b, A, B, prag, kod). Parametr au aceleaş semfcaţ ca la ELIM d Gauss (cu deosebrea că, ître parametr, u ma apare codul kodprt). Datele de trare se ctesc dtr-u fşer de date, cu structura de ma jos. Datele de eşre se scru î fşer, după datele de trare. Fşer de date (trare/eşre): Ttlu: tet, ma. 80 caractere : ordul matrc A Matrcea A: ; se scre aşa cum e dată - pe l ş coloae Cod_Iversare_Coefceţ, Cod_Tpărre: 0 / 0.

00 - Cod_Iversare_Coefceţ 0: se face a(, j)./ a(, j) - Cod_Tpărre 0: se tpăreşte ş Cod_Norma: cod petru ormă. Valor: 0: orma-ft (orma llor); : orma- (orma coloaelor) A. 2 (sau, alt umăr decât 0 sau ): orma-2: Nu este mplemetată; se a mplct, orma-ft. Eemplu: Test: 3 2 3 2 4 3 4 0 3! Cod orma Matrcea versa: -0.7500000 0.5000000 0.2500000 0.5000000-0.4000000 0.000000 0.2500000 0.000000-0.500000 Norma edefta: Se a Norma-ft (orma llor) Norm(A) = 8.000000 Norm(A-vers) =.500000 Numarul de codte = 2.00000 Hlbert Calculul verse matrc Hlbert. Metoda: Matrcea Hlbert de ordul este:

0 H 2 2 3 3 4 2......... 2 Matrcea Hlbert este cuoscută ca fd rău-codţoată, ş aume, cu atât ma răucodţoată cu cât ordul este ma mare. Iversarea se face î modul obşut, aume: Coloaele () ale matrc verse se calculează rezolvâd sstemele lare matrc utate de ordul. ( ) ( ) H e,,, ude () e sut coloaele Fşere: Ma-Hlbert2004.f90: programul prcpal Elm2004.f90: elmarea Gauss wdth.f90: utltar Î prcpu, petru această problemă se pot utlza orcare d metodele epuse ateror, petru ssteme lare geerale (Gauss, LU). Avatajul este că, programul prcpal geerează matrcea Hlbert de ordul, ş terme lber petru ordul (coloaele matrc utate). (Î loc de, specfcarea acestor date î fşerul de trare, cum ar f ecesar î metodele petru o matrce geerală.) Rezolvarea se face pr elmare Gauss, pr apelul subrute ELIM2. Parametr formal sut aceeaş ca la subruta ELIM d Gauss (cu deosebrea că ître parametr u ma fgurează codul kodprt). Datele de trare se troduc de la termal ş costau î: ordul ; o dată logcă (T/F) petru verfcarea sau u, a verse calculate X. Petru verfcare, se calculează produsul ude I este matrcea utate de ordul. H X ; ar trebu să avem proba H X I, Faptul că matrcea Hlbert este rău-codţoată, se poate costata d următoarele rezultate:

02 - Elemetele verse calculate sut afectate de eror cu atât ma mar, cu cât ordul este ma mare. (Erorle se aprecază î raport cu valorle eacte care se cuosc aaltc, sau î raport cu valorle calculate î dublă precze); - Iversa calculată verfcă tot ma rău proba, odată cu creşterea lu : adcă, erorle H X I sut tot ma mar. Eemplu: Petru = 5, produsul H X este: 0.9999927.577895E-04 -.0029844E-03.279039E-04.336200E-04-4.509597E-06.00009 6.070055E-04 5.386928E-04 -.065846E-04 7.52477E-07 5.9086320E-05.000850-2.8395746E-04 3.524447E-04 0.000000 0.000000 0.000000.000000 0.000000 8.506332E-06 -.89320E-04.00045 2.6392794E-04-7.240995E-04 III-3 Metode teratve Jacob Metoda Jacob petru ssteme lare. Eemplu umerc: Fe sstemul: 8 2 3 2 2 93 8 2 72 23 4

03 Rezolvăm fecare ecuaţe =, 2, 3, î raport cu ecuoscuta, căutâd ca aceasta să fe ecuoscuta cu coefcetul cel ma mare d ecuaţe, evetual rearajâd ecuaţle. Itervertd ecuaţle 2 ş 3, avem: (/8) 2 (/8) 2 / 7 (/ 7) (2 / 7) 4 3 /9 (2/9) (/9) 2 Sau matrceal: 3 3 2 2 3 0 4 / 7 / 7 2 / 9 2 / 9 /8 0 / 9 /8 2 / 7 0 2 3 (') care este de forma g M ( m) ( m) Se terează, cu apromaţa ţală (0) T [ 4/ 7 2/ 9] ; testul de oprre a teraţe ( m) ( m) este E 6. La teraţa 2 rezultă soluţa (.0,.0,.0). Metoda: Fe sstemul dat A b. Se rezolvă fecare ecuaţe î raport cu ecuoscuta. Eplctâd se obţe: ( b a ) / a, =, 2,, j j, j j S-a presupus a 0. Iteraţa Jacob va f: (0) ( m) arbtrar ( b a j j, j ( m) j ) / a,, 2,..., ; m 0 Testul de oprre a teraţe este ( m) ( m) eps.

04 Metoda Jacob se ma zce metoda teraţlor smultae, petru că, coordoatele ale soluţe se calculează depedet uele de altele. (Petru alt mod de calcul v. metoda Gauss_Sedel, ma jos.) Codţe sufcetă de covergeţă: Matrcea A este dagoal domată, adcă avem: a aj,, j, j Petru alte cosderaţ prvd metoda, v. Cap. 4-IV. Fşere: Jacob.f90: programul prcpal care mplemetează metoda Norm.f90: orma- a uu vector wdth.f90: utltar Datele de trare se ctesc dtr-u fşer de date. Acesta are structura: - Ttlu: le-tet, ma. 80 caractere. - : ordul matrc - Matrcea A: ; se scre pe l ş coloae aşa cum este dată. - Termeul lber b: se scru î le, valor b. - eps, lt: toleraţa, umărul lmtă de teraţ. - kodprt: cod de tpărre teraţ: 0 / 0: Da / Nu. - check_tet: tet de ma. 20 caractere. Prmul caracter este semfcatv: C, c, P, p: se face proba se tpăreşte vectorul A b. Datele de eşre se scru î fşer, după datele de trare v. ma jos. Eemplul umerc de ma sus: Fşerul de trare/eşre (E.dat): Eemplu pt. Jacob 3 8 - -7 2

05 2 9 8-4 2 e-6 50 0 Proba Tolerata atsa. Numar de terat: 2 Soluta:.000000 2.000000 3.000000 Proba "A-b": 9.5367432E-07 2-4.768376E-07 3.43055E-06 Gauss_Sedel Metoda Gauss-Sedel. Se modfcă metoda Jacob, astfel că, la calculul coordoate (m) se utlzează valorle ( m),, deja calculate, care î geeral, sut apromaţ ma bue ale soluţe. ( m) Eemplu: Cosderăm eemplul umerc d Jacob. Ecuaţle se îlocuesc cu cele de ma jos, care ar trebu să ofere o covergeţă ma rapdă: () (0) (/8) 2 (/8) (0) 3 () () 2 / 7 (/ 7) (2 / 7) 4 (0) 3 () () 3 / 9 (2/ 9) (/ 9) 2 () 2 Îtr-adevăr, cu (0) T [0 0 0] ş aceeaş toleraţă 6 E, soluţa (.0,.0,.0) se obţe la teraţa 9. Rezdualul mam este 0.0.

06 Metoda: Formulele geerale ale metode Gauss-Sedel sut: (0) ( m) arbtrar ( b j a j ( m) j a j j ( m) j ) / a,,2,..., ; m 0 Testul de oprre a teraţe este ( m) ( m) eps. Metoda Gauss-Sedel se ma zce metoda teraţlor succesve, petru că la u pas m, m 0, de îdată ce o coordoată a soluţe este calculată, ea se utlzează ( m ) j î ecuaţle petru coordoatele următoare, > j. ( m ) Codţ sufcete de covergeţă: - matrcea A este dagoal domată. - matrcea A este smetrcă ş poztv deftă. Câd ambele metode Jacob ş Gauss-Sedel coverg, metoda Gauss-Sedel coverge ma rapd. Petru alte cosderaţ prvd covergeţa, v. Cap. 4-IV. Fşere: Gauss_Sedel.f90: programul prcpal orm.f90: orma- a uu vector wdth.f90: utltar Datele de trare se ctesc dtr-u fşer de date. Acesta are aceeaş structură ca ş fşerul de date d Jacob. Eemplu (E.dat): Eemplul de la Jacob. Rezultatele sut, acum: Tolerata atsa. Numar terat: 9

07 Soluta: () =.000000 (2) =.000000 (3) =.000000 Proba "A-b": 0.000000 2 0.000000 3 0.000000 Sor Metoda relaăr (Succesve Over-Relaato). Metoda: Reluăm formula metode Gauss-Sedel: ( m) ( b j a j ( m) j a j j ( m) j ) / a,,2,..., ; m 0 Formula se pue sub forma următoare, aduâd ş scăzâd (m) î membrul do (observaţ că acum, î a doua sumă, dcele j a valor de la ş u de la ): ( m) ( m) ( m) ( m) ( b aj j aj j ) / a,, j j Termeul care se aduă la m m este dfereţa ( ). Metoda SOR costă î (m) îmulţrea aceste dfereţe cu u factor de accelerare (sau relaare). Îtrucât >, metoda se zce supra-relaare. Alegerea lu se dscută ma jos. Formula metode SOR este dec ( m) ( m) ( m) ( m) ( b aj j aj j ) / a,, sau, eplctâd j j (m) d a doua sumă: ( m) ( m) ( m) ( m) ( b aj j aj j ) / a ( ),, j j

08 Se otează epresa d prma parateză cu z (aceasta este coordoata a terate ( m ) ( m ) d metoda Gauss-Sedel.). Formula de terare este echvaletă cu următoarele ecuaţ cosderate petru, : z ( m) ( b j a j ( m) j a j j ( m) j ) / a, ( m) z ( m) ( ) ( m) Î cele ma multe cazur, valoarea optmă a lu satsface relaţa < < 2. Î practcă, se poate alege, astfel: se utlzează valor de test, pe u umăr lmtat de teraţ; se alege ca valoare optmă acel petru care covergeţa este cea ma rapdă. Fşere: SOR.f90: programul prcpal orm.f90: orma- a uu vector wdth.f90: utltar Datele de trare se ctesc dtr-u fşer de date. Acesta are aceeaş structură ca ş fşerul de date d Jacob, cu deosebrea: după datele eps, lt, se troduce data: - omega: factorul de accelerare Eemplu: Cosderăm eemplul de ma jos. Petru acesta, metoda Gauss-Sedel face 27 de teraţ ş dă soluţa (27) = [0.9999999 0.9999999 0.9999999 0.9999999 0.9999999] T. Alegem. 3 (valoarea optmă). Se obţ rezultatele de ma jos. Fşerul de trare/eşre: Test petru Gauss-Sedel & SOR. Soluta:,,,,. 5 4 - - 0 0-4 - - 0

09 - - 4 - - 0 - - 4-0 0 - - 4 2 0 2.E-7 50.3 0 P Tolerata atsa. Numar terat: 6 Soluta: () =.000000 (2) =.000000 (3) =.000000 (4) =.000000 (5) =.000000 Proba "A-b": 0.000000 2 0.000000 3 0.000000 4 0.000000 5 0.000000

0 CAPITOLUL IV VALORI ŞI VECTORI PROPRII Metodele se găsesc î folderul EIGEN, î sub-folderele: Power; Power_Comple; Iverse_Power_Shft; Iverse_Power_Comple; Sm_Iter: metoda puter ş varate ale acestea. Jacob; QR: metodele Jacob ş QR. Problema de valor propr (sumar) Fe dată matrcea A, reală sau compleă. Dacă vectorul 0 ş scalarul satsfac relaţa A, () atuc: se umeşte valoare propre, ar vectorul propru asocat lu. Dacă ş y sut asocaţ cu, atuc ş y,, scalar, este asocat lu. Dacă P este o matrce A P AP esgulară, matrcea se zce smlară cu A. P se zce matrce de trasformare. Matrcle smlare au aceleaş valor propr. Dacă sut vector propr a lu A, vector propr a lu A se găsesc d relaţa P. Ma multe metode umerce trasformă matrcea A îtr-o matrce smlară A, de o formă ma smplă, determâd valorle propr ş vector propr a matrc A ; apo, se determă vector propr a lu A, cu relaţa de ma sus. Polomul caracterstc: Relaţa () este ecuaţa d care se găsesc ş. Aceasta se ma scre ( A I) 0 (2) ude I este matrcea utate. Eplct,

a a a 2 a a 22 a 2 2 a 0 a 2 2 0 a 0 (2') Codţa ca (2) să abă soluţ etrvale, este det( A I) 0. Eplct, p( ) a a a 2 a a 22 a 2 2 a a a 2 0 (3) p() se zce polomul caracterstc al matrc A, ş p() = 0 ecuaţa caracterstcă. Fe determatul desvoltat: p( ) ( ) c c c Propretăţ ale coefceţlor ş valorlor propr: c det(a) ; det( ). 2 A ( a ; 2 c ). a Notă: Tr(A ) se zce urma matrc A. a Î geeral: c ( ) Suma morlor prcpal de ord a matrc A. Observaţ. Ordoarea valorlor propr: Valorle propr se ordoează î şrul, 2,,. Î acest şr, o rădăcă multplă de ordul r, se repetă de r or. Uzual, valorle propr se deează î ordea descrescătoare a modululu, adcă 2. Valoarea propre se zce domată. Mulţmea valorlor propr {,, } se zce spectrul matrc A.

2 2. Vector propr asocaţ ue valor propr: După determarea valorlor propr, vector propr asocaţ cu se găsesc puâd î (2'), ş rezolvâd sstemul lar ş omoge (2'). - Dacă A este reală: Î geeral, poate f comple, ş atuc vectorul propru asocat cu este comple. Dacă A ş sut real, atuc vectorul propru este real. - Dacă A este compleă: Î geeral, valorle propr ş vector propr sut mărm complee. Î partcular, uele dtre acestea pot f ş reale Subspaţu propru ş dmesuea acestua: Sstemul (2') este omoge, astfel că dacă, y sut soluţ, atuc y sut soluţ. Adcă, lu î este asocat u subspaţu lar S de soluţ. Se arată că: Dmesuea subspaţulu S este ma mcă decât sau egală cu ordul de multplctate a rădăc Notâd r = ordul de multplctate a rădăc, ş p = dmesuea subspaţulu S, avem: p r. Cu alte cuvte, estă cel mult r vector lar depedeţ î S. Dacă p r defectvă., valoarea se zce defectvă; î acest caz, ş matrcea A se zce ( r se ma zce multplctate algebrcă, ar 3. Determarea efectvă a sstemulu propru: Petru calculaţa practcă ( 3), u se recomadă: p multplctate geometrcă.) - Rezolvarea drectă a ecuaţe caracterstce. Aceasta, datortă faptulu că problema calcululu rădăclor uu polom este foarte sesblă la mc perturbaţ î coefceţ; aceste perturbaţ apar d erorle de rotujre. - Calculul drect al vectorlor propr, d (2').

3 Metode umerce petru găsrea valorlor propr, ş a vectorlor propr asocaţ (), sut prezetate î cotuare. Matrc hermtee ş utare Operaţa aplcată uu vector sau ue matrc otează traspus-cojugata. Dacă este u vector, respectv A o matrce, atuc: T ; T A A Eplct: A a ], [ A a j ], avem: aj a j. [ j. Î epresle ateroare, bara otează cojugata: ] ; A a ]. Petru u vector real, sau o matrce reală, operaţa reve la traspuere: [ [ j T ; T A A. Î partcular, petru u scalar, operaţa reve la cojugare: s s. Matrcea A se zce hermtaă, dacă Eemplu de matrce hermtaă: A 7 7 5 0 3 0 3 2 A A. Remarcaţ că elemetele dagoale sut reale, ar elemetele smetrce sut cojugate. O matrce reală este hermtaă, dacă este smetrcă ( A T A ). O matrce hermtaă se zce poztv deftă, dacă 0 A 0 ( A este real). T Î partcular, o matrce reală este poztv deftă, dacă: 0 A 0. Matrc utare: O matrce se zce utară, dacă U U I ; echvalet, U U. O matrce reală este utară dacă T T U U I, sau U U. Valorle propr ale ue matrc utare au modulul egal cu.

4 Propretăţ ale matrclor hermtee (î partcular, reale ş smetrce): P. Dacă A este hermtaă, ş are valorle propr { } dstcte sau u, atuc: (a) Estă o matrce utară U, astfel că dagoalzează pe A), ş avem: U AU este dagoală (se zce că U U AU dag,, ). ( (b) Estă vector propr lar depedeţ care formează o bază ortoormată î (c) Valorle propr sut reale C (aceşta sut coloaele lu U); Î partcular, petru A reală ş smetrcă: T (a-) Estă U utară ş reală, astfel că U AU dag,, ). ( (b-) Estă vector propr lar depedeţ; aceşta formează o bază ortoormată î R (coloaele lu U); (c-) Valorle propr sut reale, ş vector propr sut real Avem ş propretatea: P'. Dacă A este hermtaă (reală ş smetrcă) ş poztv deftă, atuc valorle propr ale lu A sut reale ş poztve Produs scalar ş propretăţ de ortogoaltate:. Spaţu vectoral real V Fe u vector d V, ş matrcea coloaă a coordoatelor sale îtr-o bază a lu V ( R ). Dacă matrcea A reală, este smetrcă ş poztv deftă, se defeşte produsul scalar î raport cu matrcea A, pr:, y A T Ay y Î partcular, petru T A A I, acesta deve produsul scalar stadard:

5 T T, y y y Avem: y,, y ; y,, y. A A Vector ş y se zc ortogoal (relatv la produsul scalar), dacă, y 0, sau, y 0 A Astfel: - Vector ş y sut ortogoal relatv la matrcea A, dacă T Ay 0, sau y T A 0. - Vector sut ortogoal, dacă T y 0, sau y T 0. 2. Spaţu vectoral comple V Fe u vector d V, ş matrcea coloaă a coordoatelor îtr-o bază a lu V ( C ). Dacă A este o matrce hermtaă ş poztv deftă, se defeşte produsul scalar î raport cu matrcea A, pr: T T, y Ay y A. A (Ultma egaltate rezultă d aceea că scalarul său). Produsul scalar deft de, y T y y A I este: s, y este egal cu traspusul A Avem: y,, y, ş y,, y. A A Ortogoaltatea a do vector se defeşte ca îate, pr codţa, y 0, sau, y 0 Observaţe: Dacă avem, y 0, avem ş y, 0 Astfel: - Vector, y sut ortogoal î raport cu A, dacă: T T Ay 0, sau y A 0. A A A

6 - Vector, y sut ortogoal,dacă: T y 0, sau y 0. P2. Dacă A este hermtaă, atuc: - Vector propr asocaţ la două valor propr dstcte sut ortogoal: dacă 2, atuc 0 ş 0. 2 - Avem ş: A 0, A 0. 2 2 2 (Dacă A hermtaă este ş poztv deftă, vector, 2 sut ortogoal relatv la matrcea T A.) Dacă A este reală ş smetrcă: - Vector propr asocaţ la două valor propr dstcte sut ortogoal: T 0, T 0. 2 2 - Avem ş: T A 0, T A 0. 2 2 (Dacă A reală ş smetrcă, este ş poztv deftă, vector, 2 sut ortogoal relatv la matrcea A) Câtul Raylegh Fe A o matrce compleă (sau reală). Fe v C u vector arbtrar, ş defm ( v) v Av v v (v) se umeşte câtul Raylegh. Propretate-: Dacă este vector propru asocat cu, atuc ( ) Astfel, câtul Raylegh poate f utlzat petru a găs o apromare a valor propr, dacă se cuoaşte o apromare v a vectorulu propru : v (v). Propretate-2: Dacă matrcea este hermtaă, câtul Raylegh este mărgt de valorle propr etreme

7 Valorle propr sut reale; fe acestea 2, atuc, avem: ( v), petru orce v C. Power Metoda puter matrce reală, cu valor propr reale. Metoda: Metoda puter determă valoarea propre domată ş vectorul propru asocat, ale ue matrc A, reale sau complee. Aplcată la versa A metoda determă valoarea propre cea ma mcă (î modul), ş vectorul propru asocat cu aceasta. Se presupue că:. Estă u set de vector propr lar depedeţ. 2. Estă o sgură valoare propre domată : 2 Metoda este următoarea: Fe (0) w u vector ţal, ales arbtrar cu sgura codţe ca să abă o compoetă î drecţa lu aleator. (Î fapt, (). Petru a împl această cerţă, uele codur geerează u vector (0) w este o apromaţe a vectorulu propru () ; dacă o astfel de apromaţe este cuoscută, atuc aceasta accelerează teraţa de ma jos). Desvoltăm w (0) w î baza vectorlor propr: ( 0) () (2) ( ) a a2 a (a) Presupuem că a 0, ş formăm şrul de vector w ( k) Avem: Aw ( k) A k w (0), k 0 w () Aw a () (0) a 2 a 2 () a (2) 2 2 (2) a a ( ) ( )

8 Î geeral, w ( k ) k A w (0) k k k () 2 (2) ( ) ( ) a a2 a (b) Cum petru 2, urmează că rapoartele k ( / ) td la 0 petru k. Astfel, petru k crescător, vector drecţa vectorulu propru w ( k ) ( ) k a () (k ) w se alază d ce î ce ma mult la (). Î cosecţă, petru u k sufcet de mare, avem. Să cosderăm de asemeea relaţa w ( k) k () ( ) a. Luâd orce coordoată o-zero a lu ( k ) w, w ( k), să zcem cea de-a m-a coordoată, obţem ( k ) w m ( k ) wm Dezavatajul formule precedete este că, coordoatele eule ale lu (k ) w dev fe foarte mc ( ), fe foarte mar ( ), odată cu creşterea lu k. Aceasta se evtă pr ormalzarea (sau scalarea) lu orma- ş orma-2. Astfel, algortmul metode este: (0) w = Vector ţal ( k ) ( k ) w z, petru k 0 Normalzare ( k ) w (k ) w, la fecare pas k. Normele utlzate sut w Az ( k) ( k ), petru k 0 Iteraţe Teste de oprre a teraţe:. Test de colartate a do vector succesv: Vector (k ) z ş ( k) ( k) ( k) ( k) z sut colar, dacă rapoartele z / z, z 0 ( k) ( k) sut egale (coordoatele eule sut proporţoale), sau z z 0. Î calculaţa practcă, puem codţa 0 ( ( ) ( ) TOL, dacă z k ) TOL; sau, să avem smulta, ( z k ) TOL ş ( z k ) TOL. TOL este o toleraţă

9 specfcată; 0 este dcele ue coordoate fate: este coveabl să luăm 0 ma dcele coordoate de modul mam d ( k) z. Se troduc atuc, factor de colartate pr vectorul col ( : ), deft astfel: z col ( ) z, ( k) ( k) ( ma) / z ( ) / z ( k ) ( k ) ( )) ( ma)) daca altfel z ( k) ( ) TOL s z ( k ) ( ) TOL Testul este: col col( ma) TOL Observaţe Test petru orma-2 (eucldaă): Dacă, petru ormalzarea lu (k ) w, se utlzează orma-2, vector orma-2 egală cu, ş testul de colartate poate lua forma ( k) ( k) z z TOL. 2 (k ) z au O problemă specală apare petru A reală, dacă valoarea propre domată este reală ş egatvă, 0, ş aume: d w ( k) (0) k () ( ) ( k) ( k) ( k) A z ( ) [ a r ] ş z w / w, rezultă că ( k) k vectorul (k ) z schmbă de sem de la pasul k la pasul k ( k ) ( k dată de w ) m / z ( k) m ţă cot de aceasta. Astfel, defm,. (Valoarea propre,, u este afectată.). Testul de colartate trebue să ( k) s sg(., ), dz z s z ( k) ( k) Testul corect este dz 2 TOL. 2. Test asupra lu : Iteraţa se opreşte pr codţa ( k) ( k ) TOL

20 ude TOL este o toleraţă. 3. Test de satsfacere a relaţe de defţe: Az z Practc, TOL (k) z z, Az w ( k) ( k), ş k ( ). Defd df ( k) ( k) ( k) w z, se pue testul df TOL Observaţ: Notă - Î cod, dacă valorle ateroare (k) sut stocate î z0 ş lambda0, ar valorle curete (k+) î z ş lambda, defţa lu df deve df = z lambdaz0, luâd z îate de ormalzare. - Vectorul r Az z se zce vectorul rezdual. Astfel, testul se ma scre r TOL. Testul propru petru metodă este Testul, îtrucât, î eseţă, metoda determă vectorul propru r., ş apo determă d acesta. Cu Testul, se obţ vector propr ma precş decât cu Testul 2 (la aceeaş toleraţă). Testul 3 u este specfc metode puter, c poate f aplcat orcăre metode teratve petru valor ş vector propr. Codurle d Lapack (Ba et al.(2000)), utlzează Testul 3, cu TOL M, ude M este ε-maşă. Î metodele următoare, Testul 3 va f utlzat uma la verfcarea sstemulu propru. Ecepţe face metoda puter, ude, petru studu, se poate alege uul d Testele -3. (Alegerea testulu se face prtr-u cod.) Covergeţa: ( ) Covergeţa k este lară, ar rata covergeţe este apromatv /. 2

2 (Acest rezultat are loc î poteza metode, cu poteza suplmetară: petru 2 k k, cattăţle, 3, sut egljable î raport cu k ( / 2 ) k ( 2 / ).) Fşere: Power-2.f90: subruta metode Ma-Power.f90: programul prcpal Age.f90: subruta de geerare a matrc A(,). Made.f90: fucţe; dcele coordoate de modul mam d vectorul v(). vnorm.f90: orma- ş orma-2 a uu vector. w0ge.f90: subruta de geerare a lu w0 work.f90: modul wdth.f90: utltar Subruta metode este Power(ter, kodtest, kod, kodnorm, ter_flag, test_val) Parametr: ter: Numărul mam de teraţ (trare) / Numărul efectv de teraţ (eşre) kodtest: cod petru testul de oprre a teraţe kod: cod de tpărre a teraţlor kodnorm: codul orme ter_flag: cod de îcheere a teraţe (ter). test_val: valoarea de test. Notă: TOL, lt ş lambda se trasmt pr modulul work Age.f90: se scre cod petru geerarea matrc A(,). w0ge.f90: se scre cod petru geerarea vectorulu de start w0.

22 Petru a împl cerţa ca (), uele codur geerează (0) w să abă o compoetă î drecţa lu (0) w ca vector aleator. Datele de trare se ctesc dtr-u fşer de date (specfcat). Datele de eşre se scru î cotuarea datelor de trare. Datele de trare sut: - Ttlu: tet de ma. 80 caractere -, koda, kodw0 - [Matrcea A: dacă koda = 0. Se scre aşa cum e dată - pe l.] - [Vectorul w0: dacă kodw0 = 0. ] - TOL, lt: toleraţa, umărul lmtă d teraţ. - kodtest, kod: cod test, cod tpărre teraţ - kodnorm: cod ormă - Check_tet: cod de verfcare. Semfcaţa codurlor: : ordul matrc koda: kodw0: 0 / 0: cteşte A / geerează A (cu subruta Age) 0 / 0: cteşte w0 / geerează w0 (cu subruta w0ge) kodtest: 0: Test asupra lu (Testul 2); : Test de colartate (Testul ); 2: Test asupra lu Az z (Testul 3). kod: 0 / 0: Tpăreşte teraţle: Da / Nu. kodnorm: : Norma-ft; 2: Norma-2 (eucldaă) Check_tet: tet de ma. 0 caractere. Prmul caracter este semfcatv, aume: C, c, P, p: se face proba, adcă se tpăreşte vectorul Az z. Eemplu: Eemplu = 3

23 3 0 0 2 3 2 3 4 3 4 5 3* E-7 7 2 check Guess vector:.000000.000000.000000 Iterato Curret_vector Curret_lambda 0.373907 0.5570860 0.742783 2.00000 2 0.3859738 0.5596620 0.7333503 9.500000 3 0.3850325 0.5595003 0.7339682 9.63579 4 0.3850935 0.559508 0.7339282 9.62295 5 0.3850895 0.559502 0.7339308 9.623509 6 0.3850898 0.559502 0.7339306 9.623473 7 0.3850898 0.559502 0.7339306 9.623475 Iterato No. 7: Tolerace o "z" met. Last test_value s: 0.000000 Lambda- (domat egevalue): 9.623475 Egevector #: () 0.3850898 (2) 0.559502 (3) 0.7339306 Check: A*y -lambda*y -.43729E-08.4959278E-07 3.332269E-07

24 Mamum dfferece ( modulus) = 3.33E-07 Coordate # 3 Power_Comple Metoda puter petru o matrce compleă. Metoda: Este cea descrsă la Power. Covergeţa: Ipotezele sut aceleaş ca la Power. Î partcular, u se obţe covergeţă, petru o matrce reală la care 2 de eemplu, câd,2 sut comple cojugate. Fşere: Age_comple.f90; Ma-Power_comple.f90; Made_z.f90; Power_Comple&Eps.f90; vnorm.f90; wdth.f90; work_comple.f90; Semfcaţa fşerelor ş rutelor aceleaş ca la Power. Subruta metode: Power_Comple(ter, kodtest, kod, kodnorm, ter_flag, test_val, test_val_m) Semfcaţa parametrlor ca la Power. Parametrul test_val_m returează valoarea mmă de test, î cazul câd u este atsă toleraţa TOL. Datele de trare sut datele la Power, cu deosebrle: - A ş w0: sut date complee; petru A ş w0 reale, se troduc date reale. - kod: Petru kod = 2: se tpăresc ş valorle eps /, ş eps z0, ude z0 este z_ateror. (Aceste valor servesc la studul covergeţe: avem ( k) ( k) z eps z ). Eemplu: Eemplu = 3. Val. propr: 5.38; -0.63; -0.75 3 0 0

25 (,0) (,-7) (0,-) (,7) (5,0) (0,-3) (0,) (0,3) (-2,0) (,0) (,0) (,0).E-7 50 0 ch Iterato No. 44: Tolerace o "z" met. Curret Test_value s:.4587842e-08 Lambda- (domat egevalue): 5.37663-0.78582E-06 Egevector #: () 0.88092-0.5029 (2) 0.9789736 0.2039873 (3) 0.557023 0.297237 Check: A*z -lambda*z (3.387648E-08,-4.6645388E-07) (-6.680362E-09,.259090E-07) (-8.2404E-07,-.494077E-08) Mamum dfferece ( modulus) =-8.2E-07 Coordate # 3 -.494E-08 Iverse_Power_Shft Metoda puter verse cu traslaţe (shft) matrce reală, cu valor propr reale. Metoda: Fe matrcea A, cu valorle propr, j j, lu A, cea ma apropată de u umăr dat s. Se cosderă matrcea B A si. Metoda găseşte valoarea propre a

26 ş presupuem că B este esgulară. Se verfcă medat că valorle propr ale lu B sut s. Cattatea s zce deplasare (shft). j j Fe s, valoarea propre de modul mm a lu B, adcă: 0 j, petru j. Atuc, metoda puter aplcată lu adcă /. Avem /, ş s. B produce valoarea propre de modul mam, Prcpala aplcaţe a metode este de a găs vectorul propru, dacă este cuoscută o apromaţe buă a valor propr, să zcem ˆ. (Aceasta poate f furzată de o metodă î care se determă uma valorle propr u ş vector propr.) Se aplcă metoda puter verse, cu deplasarea de, matrcea vectorulu propru s ˆ. Char dacă ˆ este apropată B A ˆ I este îcă esgulară, ş se obţe o buă apromaţe a (). Metoda teraţe verse cu deplasare, este ua dtre cele ma precse metode petru calculul vectorlor propr. Algortmul practc, este următorul: Iteraţa d metoda puter, aplcată la matrcea versa B, calculăm ( k) w d sstemul lar B, este Bw z w ( k) ( k) B z ( k) ( k). Î loc de a, pr descompuere LU. Factorzarea se face o sgură dată, ş sstemul se rezolvă succesv cu membr drepţ (k ) z, k 0. Notă: Petru testare, Iverse_Power_Shft oferă ş varata terăr drecte cu B Fşere: LU_Shft.f90: subruta metode algortmul precedet. lverse_shft.f90: subruta metode terare drectă cu matrcea Ma-IversePower_Shft.f90: programul prcpal B.

27 apvt-lu.f90; compute_a_.f90;; LUdecomp.f90; LUsolve.f90; swap_row.f90: semfcaţle de la descompuerea LU. Age.f90; Made.f90; w0ge.f90; wdth.f90; work.f90: aceleaş semfcaţ ca la metoda puter. vnorm2.f90: orma eucldaă a uu vector v(). Subrutele metode: LU_Shft(ter, kodtest, kodprt) Iverse_Shft(ter, kodtest, kodprt) Parametrul ter: Numărul lmtă de teraţ (trare) / Numărul efectv de teraţ (eşre). Petru celalţ parametr, v. codurle de ma jos. Datele de trare se ctesc dtr-u fşer de date (specfcat). Î acesta se scru ş datele de eşre. Datele de trare sut: - Ttlu: tet de ma. 80 caractere -, koda, kodw0 - [Matrcea A: dacă koda = 0. Se scre aşa cum e dată - pe l.] - [Vectorul w0: dacă kodw0 = 0 ] - s: Număr de apromaţ s, ale valorlor propr - Apromaţle s: s valor. - kod_met: codul metode - TOL, lt: toleraţa, umărul lmtă de teraţ. - kodtest, kodprt: cod test, cod tpărre teraţ ş vector rezdual. - Check_tet: cod de verfcare. Semfcaţa codurlor: : ordul matrc koda: 0 / 0: cteşte A / geerează A (cu subruta Age)

28 kodw0: 0 / 0: cteşte w0 / geerează w0 (cu subruta w0ge) kod_met: 0 / 0: terare cu B / descompuere LU. kodtest: 0 / 0: Test asupra lu / Test de colartate. kodprt: 0 / / 2: Tpăreşte: Nmc / Vector rezdual Az z / Iteraţle ş vector rezdual. Vector rezdual se tpăresc uma dacă este cerută proba v. codul Check_tet. Check_tet: tet de ma. 0 caractere. Prmul caracter este semfcatv, aume: C, c, P, p: Se face proba, adcă se verfcă Az z 0. Se scru: - coordoata de modul mam d Az z (mamul pe toţ vector z); - dcele vectorulu, ş dcele coordoate. Eemplu: Se cosderă eemplul de la Power. Acesta este u caz specal: matrcea este sgulară, ş dec estă o valoare propre egală cu 0. Luăm ca apromaţ s valorle 9, -, ş 0.0. Fşerul de trare / eşre este: Eemplu = 3 3 0 0 2 3 2 3 4 3 4 5 3*. E-7 50 3 9-0. 0 ch Shft #: test_val: 0.0000000E+00 Iterato No. 7 Egevalue: 9.623475

29 Egevector: () 0.3850898 (2) 0.559502 (3) 0.7339306 Shft #2: test_val: 0.0000000E+00 Iterato No. 8 Egevalue: -0.6234753 Egevector: () 0.8276709 (2) 0.42437 (3) -0.5428436 Shft #3: test_val: 0.0000000E+00 Iterato No. 8 Egevalue: 0.587054E-07 Egevector: () -0.4082482 (2) 0.864966 (3) -0.4082483 Check: A*z -lambda*z Mamum dfferece ( modulus) = 2.429E-07 Egevector # ; Coordate #. Iverse_Power_Comple Metoda puter verse cu traslaţe (shft), petru o matrce compleă. Î partcular, o matrce reală care are (ş) valor complee. Metoda: cea de la Iverse_Power_Shft.

30 Fşere: LU_Shft_Comple.f90: subruta metode algortmul cu descompuerea LU. lverse_shft_comple.f90: subruta metode terare drectă cu matrcea Ma-lversePower_Comple.f90.f90: programul prcpal B. Hermta.f90: fucţe logcă; adevărat matrce hermtaă; fals î caz cotrar. apvt-lu_z.f90; compute_a z.f90; LUdecomp_z.f90; LUsolve_z.f90;; swap_row_z.f90: semfcaţle de la descompuerea LU_Comple. Age.f90; Made_z.f90; w0ge.f90; wdth.f90; work.f90: aceleaş semfcaţ ca la metoda puter. vnorm2.f90: orma eucldaă a uu vector real, ş a uu vector comple, v(). Subrutele metode: LU_Shft_Comple(ter, kodtest, kodprt, kodlu, test_val) Iverse_Shft_Comple(ter, kodtest, kodprt, kodlu, test_val) Semfcaţle parametrlor: ter, kodtest, kodprt: aceleaş semfcaţ ca la Iverse_Power_Shft. kodlu: cod descompuere LU; 0: o.k.; < 0: pvot < prag. test_val: valoarea de test (comparată cu toleraţa); aceasta depde de kodtest. Fşerul de date: Are aceeaş structură ca fşerul de date de la Iverse_Power_Shft, cu partculartatea că: matrcea A, vectorul w0, ş apromaţle s sut acum, valor complee. Dacă A este reală, se pot troduce valor reale; petru vectorul w0 trebue îsă troduse valor complee. Notă: Apromaţle s trebue să fe sufcet de apropate de valorle propr. Eemplu: Eemplul de la Power_Comple. Matrcea este hermtaă ş are valor propr reale. 7 8 Î rezultate, partea compleă a valorlor propr este de ordul 0 0.

3 Fşerul de trare / eşre este: Eemplu-2 3 0 0 (,0) (,-7) (0,-) (,7) (5,0) (0,-3) (0,) (0,3) (-2,0) 3*(,0) 3 (5.,0.) (-0.,0.) (-0.7,0.) e-7 0 0 ch Matrce hermtaa. Shft #: Iterato No. 6 Egevalue: 5.37663-0.2939753E-07 Egevector: () 0.44892-0.386009 (2) 0.754264 0.57365 (3) 0.4290796 0.2289648 Shft #2: Iterato No. 9 Egevalue: -0.63025 0.543028E-07 Egevector: () -0.2537639 0.90699 (2) 0.42630 0.4526095 (3) -0.345403-0.6432296 Shft #3:

32 Iterato No. 6 Egevalue: -0.746376 0.9294398E-08 Egevector: () 0.6996646 0.48956 (2) 0.5348870E-0-0.309672 (3) 0.3495674-0.3585925 Check: A*z -lambda*z Mamum dfferece ( modulus) =-2.95E-07 Egevector # 2; Coordate # 2. -7.384E-07 Sm_Iter Metoda teraţlor smultae matrce hermtaă. Metoda: Aceasta este o etdere a metode puter petru o matrce A hermtaă (î partcular, reală ş smetrcă). O astfel de matrce, are valor propr reale. Presupuem, ma mult, că valorle propr sut de module dstcte: 2. Î loc de u vector de start (0) w, se utlzează o matrce de start, ale căre coloae ( 0) (0,) (0,2) (0, m) sut vector de start: W [ w w w ]. Dacă matrcea A este, (0) W este m, ude m. Vector de start w trebue să fe lar depedeţ. Metoda de bază rămâe îmulţrea la stâga a lu (0) ( k) ( k ) W cu matrcea A, adcă, W AW, k 0 ( 0, j). Îate de fecare etapă a teraţe, matrcea curetă W este ortogoalzată pr procedeul Gram-Schmdt, astfel îcât coloaele e utară). Astfel, vector dmesoal al lu ( j) w dev vector ortoormaţ (ortogoal, ş avâd orma eucldaă ( j) w formează o bază ortoormată a sub-spaţulu m- R, sub-îts de vector ţal w ( 0, j). Î cursul teraţe, această bază se alază d ce î ce ma mult la baza vectorlor propr a lu A, drecţa ( j) w drecţa ( j), j. Valorle propr se evaluează pr câtul Raylegh. Iteraţa

33 se îchee câd se atge o toleraţă coveablă, prvtor la drecţle a două baze ( j) succesve { w }. Dacă matrcea de start vector propr. Petru m =, adcă (0) W are m < coloae, se obţ prm m (0) W este, se găsesc toţ vector propr. Algortmul: Se cere u umăr e de vector propr.. Se defeşte matrcea (0) W ş W sut matrc e. (0) W : dacă o apromare ţală a vectorlor propr u ( 0) () (2) ( e) este cuoscută, se a W [ e e e ], adcă, (0) W este formată d prmele e coloae ale matrc utate I. Petru e =, W (0) I. 2. Se aplcă Gram-Schmdt la ortoormată). Se atrbue 3. Iţalzare cotor: ter = 0 4. Iteraţ: ter = ter +; (0) W (cu ecepţa cazulu î care aceasta este deja (0) W W. Atrbure: W (0) W (W = matrcea curetă; (0) W = matrcea ateroară.) 5. Se calculează (0) W AW. 6. Se calculează, j e, pr câtul Raylegh: Fe ( j) w ş j, ( 0, j) w a j-a coloaă a lu W ş (0) W, respectv; avem w j (0, j), w ( j) ( ) (0, j) ( j (0, j) (0, j) w Aw Pasul 5; ş w, w Paş 2 ş 4.) 7. Se aplcă Gram-Schmdt la W, astfel că W deve ortoormată. 8. Se verfcă atgerea toleraţe TOL: Pr testul de colartate.3, : se defeşte col() petru fecare vector z W(:, je), ş test _ val ma col col( ma). je, e (Îtrucât z sut ormalzaţ, testul se poate pue ş sub forma d, Observaţe.) - Dacă test _ val TOL, eşre d teraţe.

34 Observaţ Observaţ - Altfel, GOTO 4. - Se poate prescre u umăr lmtă de teraţ lt: atuc, se adaugă la Pasul 8 u test ter lt. - Pasul 6 se poate realza uma o sgură dată, după ce s-a eşt d teraţe.. Valor propr de acelaş modul Îtrucât metoda teraţlor smultae este î eseţă metoda puter, u se obţe covergeţă petru vector propr, dacă estă valor propr de modul egal. 2. Matrc o-hermtee Dacă aplcăm algortmul de ma sus ue matrc o-hermtee, u vom obţe covergeţă petru vector propr, cu ecepţa vectorulu propru corespuzâd valor domate (petru care, metoda reve la metoda puter). Aceasta se îtâmplă deoarece poteza eseţală a metode este că vector propr formează o bază ortogoală ş procedeul Gram-Schmdt forţează ca, la fecare pas k, vector ( k, j ) w să fe ortogoal. Totuş, dacă valorle propr sut de module dstcte, atuc vector propr sut lar depedeţ, ş se obţ apromaţ foarte bue petru valorle propr. Vez Eemplu-2. Eplcaţa este că, procedeul Gram-Schmdt furzează u set ( j) de vector { w } lar depedeţ (ortoormaţ), ar valorle propr sut calculate cu câtul Raylegh care dă apromaţ bue ale valorlor propr char cu apromaţ grosere petru vector propr. Valorle propr găste pot f utlzate ulteror, î metoda puter verse cu traslaţe, petru a obţe vector propr petru valorle, 2. Fşere: Sm_lter.f90: subruta metode Ma-Sm_lter.f90: programul prcpal Gram_Schmdt_Comple.f90: ortogoalzare Gram-Schmdt

35 Herm&Sm.f90: 2 fucţ logce petru a recuoaşte o matrce hermtaă, respectv compleă ş smetrcă. Made_z.f90: fucţe; dcele coordoate de modul mam î vectorul comple v(). Age.f90: subruta de geerare a matrc A(,). W0ge.f90: subruta de geerare a matrc W0(e,). Codul actual geerează prmele e coloae ale matrc utate. vnorm.f90: orma uu vector comple v() work.f90: modul wdth.f90: utltar Subruta metode: Sm_Iter(ter, kodtest, kodprt, ter_flag, test_val) Semfcaţle parametrlor sut aceleaş ca la metoda puter (kodprt: ca ş kod). Datele de trare se ctesc dtr-u fşer de date (specfcat). Î acesta se scru ş datele de eşre. Datele de trare sut: - Ttlu: tet de ma. 80 caractere -, e, koda, kodw0 - [Matrcea A: dacă koda = 0. Se scre aşa cum e dată - pe l.] - [Vectorul w0: dacă kodw0 = 0 ] - TOL, lt: toleraţa, umărul lmtă de teraţ. - kodtest, kodprt: cod test, cod tpărre teraţ ş vector rezdual. - Check_tet: cod de verfcare. Semfcaţa codurlor: : ordul matrc A e: koda: umărul de coloae ale matrc W0 (umărul de vector ş valor propr de calculat) 0 / 0: cteşte A / geerează A (cu subruta Age)

36 koda < 0: matrce hermtaă se troduce trughul superor (programul completează trughul feror). koda = 0: matrce geerală se troduce îtreaga matrce. kodw0: kodtest: 0 / 0: cteşte w0 / geerează w0 (cu subruta w0ge) 0 / : Test asupra lu / Test de colartate. kodprt: 0 / / 2: Tpăreşte: Nmc / Vector rezdual Az z / Iteraţle ş vector rezdual. Vector rezdual se tpăresc uma dacă este cerută proba v. codul Check_tet. Check_tet: tet de ma. 0 caractere. Prmul caracter este semfcatv, aume: C, c, P, p: Se face proba, adcă se verfcă Az z 0. Se scru: - coordoata de modul mam d Az z (mamul pe toţ vector z); - dcele vectorulu, ş dcele coordoate. Eemplu-: Matrcea este hermtaă (se poate pue koda < 0, ş troduce uma trughul superor). Ca varată, s-a trodus îtreaga matrce luâd koda = 0. Eemplu-. Matrce hermtaa. 3 3 0 (,0) (,-7) (0,-) (,7) (5,0) (0,-3) (0,) (0,3) (-2,0) e-7 50 0 ch Matrce hermtaa Iterato No. 46: Tolerace o "W" met. Test Value s: 3.542E-08 Egevalues:

37 5.37663-0.258773E-07 2-0.63025 0.2952792E-07 3-0.746376-0.95383E-08 Egevectors: 2 0.423923-0.678355E-08-0.474030E-0 0.346264 0.78387 0.762572 0.626292 0.28594E-0-0.636333E-0 0.482696-0.6793670-0.226424 3 0.378377 0.8427345 0.376-0.53906E-0 0.5007854-0.574725E-07 Check: A*z -lambda*z Mamum dfferece ( modulus) =-7.843E-07.34E-08 Egevector #; Coordate #. Eemplu-2: Matrce o-hermtaă lustrarea Observaţe 2, de ma sus. Reproducem uma rezultatele petru valorle propr, ş verfcarea petru vectorul propru r.. Vector propr 2-4 u sut determaţ corect. Petru a- calcula, se va utlza metoda teraţe verse cu traslaţe, luâd ca apromaţ valorle propr calculate 2-4. Eemplu (Westlake). Val. propr: (,5); (2,6); (3,7); (4,8) 4 0 0 (5.0,9.0), (5.0,5.0), (-6.0,-6.0), (-7.0,-7.0) (3.0,3.0), (6.0,0.0), (-5.0,-5.0), (-6.0,-6.0) (2.0,2.0), (3.0,3.0), (-.0,3.0), (-5.0,-5.0) (.0,.0), (2.0,2.0), (-3.0,-3.0), (0.0,4.0) e-6 200

38 ch Matrce geerala Iterato No. 69: Tolerace o "W" met. Test Value s: 6.482E-07 Egevalues: 4.000000 8.000000 2 2.999998 6.999999 3 2.00000 6.000000 4 0.9999999 5.000003 Check: A*z -lambda*z Egevectors: (3.952843E-07,-6.086256E-07) (2.42596E-07,-9.3978620E-08) (3.2940940E-07,-2.9458778E-07) (.393922E-07,-.3633637E-07) Jacob Metoda Jacob matrce reală smetrcă. Metoda: Metoda Jacob este o metodă coveablă petru a găs toate valorle propr ş vector propr a ue matrc reale ş smetrce, de ord moderat. Determarea vectorlor propr este opţoală. Fe A o matrce reală ş smetrcă. Dacă N este o matrce esgulară, atuc matrcea A N AN este smlară cu A, ş are aceleaş valor propr (bara u otează acum cojugata). Vector propr a lu A, sut legaţ de vector propr a lu A, pr:

39 N. (Vez Problema de valor propr sumar, ma sus). Să presupuem acum, că N este utară, adcă A N T AN Notaţ că A este de asemeea smetrcă. Dagoalzarea lu A: T N N. Matrcea A deve Să presupuem că N este aleasă astfel îcât A să devă dagoală: A T N AN dag ( a Petru matrcea A, avem propretăţle: ) ) Valorle propr ale lu A sut elemetele dagoale: a 2) Vector propr a lu A sut coloaele matrc utate I: ( ) ( ) e (ude e ( ) j ). j Î cosecţă, rezultă petru A: - Valorle propr ale lu A se găsesc pe dagoala matrc A. - Vector propr a lu A sut coloaele matrc N. Dagoalzarea Jacob: Metoda Jacob costă î trasformăr utare (sau, ortogoale) aplcate succesv lu A, pâă la obţerea ue forme aproape dagoale. Aume, dacă matrcea A se trasformă cum urmează: A T N AN N sut matrc utare, A T T T 2 N2 AN2 N ( N2 N ) A( N 2) A k N T k A T T T kn k ( Nk Nk N ) A( NN2 Nk ) Dacă matrcea apromatv zero, luăm A A k N T A k este aproape dagoală, adcă, elemetele o-dagoale sut AN

40 ude N N N 2 N k Fecare trasformare N se alege astfel ca să elme o pereche de elemete odagoale (să zcem a pq ş a qp la pasul ). O astfel de matrce are structura: N cos s ( p) s cos ( q)...( p)...( q) Elemetele escrse sut zero (cu ecepţa dagoale prcpale ude acestea sut uu). Trasformărle N se aplcă succesv, fecare dtre ele elmâd elemetul odagoal a pq, de modul mam. Prcpala propretate a ue astfel de trasformăr este că produsul q. T N AN modfcă uma elemetele lu A d lle ş coloaele p ş Ughul se alege astfel îcât a pq 0 Nole elemete dagoale, sut date de formulele: r a a 2 2 4a pq ( a pp aqq) ; pp qq 2 2 ( a ( a pp pp a a qq qq r) r) Petru detal, v. Cap. 5-II, 2. a pp aqq s ; 2 2r a pq cos ; r s

4 Cosderaţ de programare Stocajul matrc: Se lucrează cu trughul superor al lu A, astfel îcât, după dagoalzarea lu A, elemetul (,) coţe, etc. Trughul superor este stocat î vectorul a((+)/2), î ordea coloaelor, adcă: a [ a a2 a22 a3 a23 a33 a a2 Adresa elemetulu (, j) este dată de următoarea fucţe: Loca(, j) ( j ) * j / 2 Î partcular, elemetul dagoal (, ) are adresa Loca(, ) ( ) * / 2. După ce s-a efectuat o trasformare, matrcea curetă A este stocată î acelaş vector a. Stratega de elmare: Aceasta este căutarea completă, adcă: se caută î toată matrcea A (cocret, î vectorul a), elemetul o-dagoal de modul mam. (Petru alte strateg, v. Cap. 5- II, 2.) Elemetele o-dagoale se cosderă zero, dacă sut ma mc (î modul) decât o toleraţă TOL. a ] Fşere: Jacob.f90: subruta metode Ma-Jacob.f90: programul prcpal Age.f90: subruta de geerare a trughulu superor al matrc A(,); stocat pe coloae, î vectorul ag((+)/2). Loca.f90: fucţe; adresa elemetulu a(,j) î vectorul ag. work.f90: modul wdth.f90: utltar Subruta metode: Jacob(kodVP, kodi, ter, ama) Parametr:

42 kodvp: v. ma jos kodi: v. ma jos, kodprtj. ter: Numărul lmta de teraţ (trare) / Numărul efectv de teraţ (eşre). ama: Elemetul o-dagoal de modul mam, d A. Fşer de date (trare/eşre): - Ttlu: tet de ma. 80 caractere -, koda, kodprta - [Matrcea A: dacă koda = 0. Se troduce trughul superor, pe l.] - TOL, kodprtj: toleraţa petru elemetele o-dagoale; cod de tpărre a teraţlor. - kodvp: cod petru calculul vectorlor propr - Check_tet: cod de verfcare. Semfcaţa codurlor: : ordul matrc A koda: 0 / 0: cteşte A / geerează A (cu subruta Age). koda = 0: Se troduce trughul superor al matrc, scrs pe l. (Programul completează trughul feror, petru o matrce hermtaă.) kodpra: 0 / 0: Nu / Da Tpăreşte matrcea A (trughul superor). kodpra 0 se utlzează petru a tpăr o matrce geerată. kodprj: 0 / 0: Nu / Da Tpăreşte trasformărle succesve ale matrc A. Check_tet: Tet de ma. 0 caractere. Prmul caracter este semfcatv, aume: C,c, P,p, F,f: Se face proba, adcă se verfcă Az z 0. Se scru: - coordoata de modul mam d Az z (mamul pe toţ vector z); - dcele vectorulu, ş dcele coordoate.

43 Petru F sau f: se scre ş fecare vector rezdual Az z. Notă: Proba se face uma dacă se cere calculul vectorlor propr (kodvp 0). Eemplu: E. Jegs - p. 260 4 0 0-3 -2 0-3 6 3-2 e-7 0 ch Iterato #8: Mamum off-dagoal: 0.000000 Egevalues ) 4.3295 2) 4.456960 3) -0.37375 4) -3.4509 Egevectors' Matr 0.29755 0.5795794-0.4442457 0.556388-0.874803-0.202567 0.2595736E-02 0.470632 0.285686-0.627338-0.5624290 0.803400-0.4274252 0.705392-0.5079207-0.6839256 Check: A*y -lambda*y Mamum dfferece ( modulus) =-7.33E-04 Egevector #; Coordate # 4.

44 Observaţe Utlzâd IversePower_Shft cu apromaţle ţale 4.3, 4.46, -0.37, -3.42 (0) (valorle Jacob cu 3 cfre semfcatve corecte), w (,,, ), ş toleraţa E-7, se găsesc rezultatele: - Aceleaş valor propr r. ş 3; valorle r. 2 ş 4 dferă cu o utate, î a 7-a cfră semfcatvă. - Verfcarea este: Mamum dfferece ( modulus) = 5.895E- 07 Se poate cochde că metoda Jacob dă rezultate foarte bue petru valorle propr, ş rezultate ma puţ precse petru vector propr. QR Algortmul QR matrce reală. Metoda (sumar) QR este uul d ce ma utlzaţ algortm petru a determa toate valorle propr ale ue matrc.. Î umele metode, Q desemează o matrce ortogoală, ar R o matrce superor-trughulară (R ve de la rght-tragular). Cosderăm o matrce reală esgulară A, smetrcă sau u. Eseţa algortmulu QR rezdă î următoarea propretate: Dacă A este factorzată î produsul cosderâd produsul î orde versă, fe A QR ude Q este esgulară, atuc A aceleaş valor propr ca ş A, fd smlară cu A RQ, această matrce are Îtr-adevăr, avem R Q A, ş A Q AQ. Algortmul QR realzează factorzăr succesve ale şrulu de matrc { A }, ude A A, defte de: A QR; 2 RQ A ; k

45 A ; A3 R 2Q2 ; 2 Q2R 2 A Q R ; Ak R kqk k k Matrcle k A k, ş ; Q, R, au următoarele propretăţ: k k ) Toate A k au aceleaş valor propr ca ş A. 2) Dacă A este smetrcă, sau trdagoală, sau A are forma Hesseberg superoară, matrcle A k vor păstra aceste forme. 3) Fe Qk Q Q 2 Qk, atuc (pr ducţe): Ak Qk AQk. 4) Fe R k R k R, atuc: Q k k R k ( A) Algortm: Algortmul parcurge următoarele etape: I. Reducerea lu A la forma trdagoală dacă A este smetrcă, sau la forma Hesseberg dacă A este esmetrcă. II. III. Reducerea lu A la forma trughulară, sau bloc- trughulară (v. ma jos). Descompuerea QR. Algortmul QR propru-zs, costă î Etapele II ş III. a) Etapa I se realzează îate de algortmul QR petru a aduce matrcea A la o forma ma smplă, ş a reduce astfel efortul de calcul. b) Etapa II se realzează pr premultplcare cu matrcea Householder P k, cum urmează: A P A A2 P2 A P2P A A P P2P A

46 Matrcea A are forma trughulară ş este matrcea R. T Îtr-adevăr: Să otăm Q P P2 P, avem A Q A. Q este o matrce ortogoală, dec avem superor trughulară, urmează că R A. QA A. Cum Q este ortogoală ş A este Atuc, Etapele II ş III se realzează pr următor paş de terare: () ) Pue A A - Tragularzează () A : () () A P A; A ; ; () () () 2 P2 A A P A () () () 2 - La sfârştul pasulu, avem: R ; () () A Q. () () () () P P2 P 2) Calculează (2) A R () Q () - Tragularzează (2) A : A ; (2) (2) (2) P A A ; ; (2) (2) (2) 2 P2 A A P A (2) (2) (2) 2 - Pue: R ; (2) (2) A Q. (2) (2) (2) (2) P P2 P... k) Calculează ( k) ( k) ( k) A R Q ( k 2) - Tragularzează (k ) A : ( k) ( k) ( k) A P A ; A P A ; ; ( k) 2 ( k) 2 ( k) A ( k) ( k) ( k) P A 2 - Pue: R A ; ( k) ( k) Q P P P ( k) ( k) ( k) ( k) 2...

47 Calculaţa cotuă pâă câd elemetele trughulu sub-dagoal î A sut ( k ) apromatv zero. Atuc, valorle propr sut pe dagoala lu A ( k ). Ma precs: Dacă A are valor propr de module dstcte, avem: a) Dacă A este smetrcă, atuc toate elemetele o-dagoale vor f apromatv zero. Reamtm că o matrce smetrcă are uma valor propr reale. b) Dacă A este esmetrcă ş are uma valor propr reale, calculaţa se termă câd toate elemetele sub-dagoale sut apromatv zero. Dacă A (esmetrcă) are o pereche de valor propr complee (cojugate), pe dagoală rămâ submatrc blocur 2 2, ale căror valor propr sut perechea de valor propr cojugate ale lu A. Covergeţa: - Dacă A este o matrce reală (smetrcă sau u) ş are valor propr de module dstcte, atuc matrcle (k ) A produse de algortmul QR coverg spre o matrce superor trughulară, pe dagoala cărea se găsesc valorle propr ale lu A. - Dacă A are o valoare propre de multplctate m, atuc (k ) A îcă coverg la matrce superor trughulară, cu ecepţa uu bloc dagoal de ordul m, ale căru valor propr au modulul egal cu. Algortmul QR cu deplasare: Presupuem că A are valor propr de module dstcte 0. 2 Se arătă că vteza de covergeţă la zero a elemetelor sub-dagoale, ş cea de covergeţă la valorle propr a elemetelor dagoale, depd de rapoartele (,. k / ) Dacă două valor propr ş sut apropate ua de alta, covergeţa va f îceată. Atuc, se utlzează următoarea tehcă petru a accelera covergeţa. Se

48 aplcă o deplasare s k la valorle propr (acestea dev sk ), la fecare etapă k. Adcă, puem A A, ş A s I Q R, ( k) ( k) ( k) k A R Q ( k ) ( k) ( k) s k I Estă două strateg petru a alege deplasarea s k ( s k est o apromaţe a lu ): ) (k ) sk a Petru o matrce smetrcă (reală), această stratege asgură o covergeţă cubcă, char î prezeţa uor valor propr multple (Wlkso, (965)). 2) Se calculează valorle propr ale submatrc 22 cea ma de jos d (k ) A : ( a a k ), ( k ), a ( k ), ( k ) a Dacă valorle propr sut reale, se alege: s k = valoarea propre care este cea ma apropată de Dacă valorle propr sut complee, se a: s k = partea reală a valor propr. (k ) a. 3) Epermetele umerce au codus la o a trea stratege, ş aume: ( k) sk m( a ),, Petru uele matrc smetrce, această stratege se dovedeşte cea ma buă, coducâd la u umăr ma mc de teraţ, ş o eroare ma mcă î Ay y. Algortm ş cod Programul calculează sstemul propru (valor ş vector propr), î succesuea următoare: I. Trasformarea prelmară a matrc A (Opţoal). II. Valorle propr, pr reducerea matrc la forma bloc-trughulară.

49 III. Vector propr (Opţoal). Se calculează, ma îtâ, vector propr a matrc bloc-trughulare. Aceşta se aduc, pr trasformarea de smlartate, la vector propr a lu A. IV. Rafarea sstemulu propru pr teraţe versă (Opţoal; uma î cazul câd s- a ales opţuea de calcul a vectorlor propr). V. Verfcarea sstemulu propru (Opţoal): Precza sstemulu propru se verfcă pr lstarea eror mame (î modul), î Ay y (ude este valoarea propre, ar y vectorul propru asocat cu ). Datele se ctesc dtr-u fşer de date. Rezultatele sut scrse î acest fşer, î cotuarea datelor de trare. Codul este scrs î dublă precze. Detal de mplemetare. Itroducerea matrc Matrcea A se defeşte î uul d următoarele modur: - Cttă d fşer - Geerată (de subruta Age) Ctrea se poate face, coform uu cod, astfel: - Matrce smetrcă: trughul superor - Matrce geerală: completă, pe l ş coloae - Matrce geerală: elemetele eule (dce le, dce coloaă, elemet). Nu este mplemetată ctrea sau stocarea de matrc badă. 2. Etapa I Trasformăr prelmare Coform uu cod, matrcea dată se poate aduce la ua d formele: - Trdagoală (superoară): uma petru o matrce smetrcă - Hesseberg (superoară): matrce geerală - Forma dată: u se face c o trasformare prelmară

50 Codul auto comadă forma trdagoală petru o matrce smetrcă, ş forma Hesseberg petru o matrce geerală. 3. Etapele II, III Iteraţa QR Iteraţa QR se face cu deplasare, ş este mplemetată î coformtate cu algortmul de ma sus. Sut mplemetate cele tre strateg, petru alegerea deplasăr s k ; stratega se alege prtr-u cod. Se prescru: - U umăr lmtă de teraţ, lt - Toleraţa eps petru forma bloc-trughulară - Toleraţa eps_lambda petru valorle propr (v. ma jos) Iteraţa QR este oprtă dacă ua d codţle -4 de ma jos este îdepltă:. S-a ats lt. 2. S-a obţut forma bloc-trughulară. 3. S-a ats toleraţa eps_lambda petru doua setur succesve de valor propr. Forma bloc-trughulară se cosderă obţută, dacă următoarele două teste sut satsfăcute: Ma _ Sub _ Sub eps _ sub (a) Ma _ Left _ Dag eps _ left, (b) ude: Ma _ Sub _ Sub este elemetul sub-sub-dagoal de modul mam, ar jma este la pe care se atge mamul (elemetele sub-sub-dagoale d coloaa j sut a ( l, j), l j 2, ; mamul se caută petru j, 2); eps _ sub eps a( jma, jma) Ma _ Left _ Dag este elemetul stâg-dagoal de modul mam, ar lma este la pe care se atge acest mam (elemetul stâg-dagoal de pe la l este a( l, l) ); eps _ left eps( a( lma, lma ) a( lma, lma) ).

5 Notă: Factor lu eps sut tpărţ de program. Observaţ: - Testul (a) este îdeplt (după cel puţ o teraţe) dacă, ţal, matrcea este redusă la ua d formele prelmar (trdagoală sau Hesseberg). - Testul (b) se pue petru elemetul stâg-dagoal a prme l a bloculu 22. (Î cazul uu u bloc de dmesue petru la respectvă.) - Codurle petru metoda QR v. Ba et al. (2000), Golub & Va Loa (996) pu testul,, a tol ( a a ), ude tol este o toleraţă ma mare decât eroarea de rotujre a utăţ. Elemetele sub-dagoale a, care satsfac acest test sut setate la zero. 4. Iteraţa se ma opreşte dacă elemetul stâg-dagoal de modul mam este staţoar (u se ma reduce). Testul pus este Ma_Left_Dag = Prev_ Ma_Left_Dag, ude membrul do este Ma_Left_Dag de la teraţa precedetă. Testul se pue după ce Ma_Left_Dag s-a redus deja î proporţa Ma_Left_Dag eps_left0. Balasare Eroarea î calculul valorlor propr ale matrc A, rezultată pr aplcarea metode QR, este de ordul M A F, ude M este ε-maşă (Cap., 3.8.2), ar A F este orma Frobeus (Cap. 4, 3) v. Che & Demmel, Balacg Matrces î Ba et al. (2000), Parlett & Resch (969). Balasarea este o trasformare prelmară a matrc A, pr smlartate cu matrcea dagoală reală D, matrcea de lucru deved A b D AD. Scopul este reducerea orme Frobeus a matrc date. O matrce se zce balasată î orma-p dacă, petru fecare,, orma-p a le este egală cu orma-p a coloae : A (,: ) A(:, ), p p,

52 Algortm reduc orma- sau orma-2 a matrc A. Ţâd cot de echvaleţa ormelor, rezultă că va f redusă ş orma Frobeus a matrc A. Balasarea se poate face fără a troduce eror de rotujre suplmetare, pr aceea că elemetele matrc D se aleg ca puter îtreg ale baze utlzate î reprezetarea umerelor î calculator (baza 2). Prcpalul algortm este descrs î lucrarea de referţă Parlett & Resch (969). Îate de balasare, pr permutăr de l ş coloae, matrcea se aduce la forma: T 0 0 X Z 0 Y W, T 2 ude T desemează o matrce superor trughulară, ar 0 o matrce cu elemete ule. Algortmul se aplcă, î eseţă, matrc Z (dar trasformarea de smlartate se aplcă îtreg matrc, astfel că se modfcă ş matrcle X, Y, W). Algortmul balasează matrcea î orma-, după u umăr ft de paş. Acest algortm stă la baza subrute sgbal d LAPACK (2000). Alţ algortm sut descrş î Ba et al. (2000). Eemple Cosderăm următoarea matrce (Che & Demmel, Balacg Matrces î Ba et al. (2000)): A 0 4 0 0 2 0 0 4 2. Balasarea drectă, cu D dag(0.0 00), produce matrcea balasată 0 2 A D b AD 0.

53 Normele sut: 4 A F.00005 0 ş A b F 2. 65. Pe de altă parte, ormele llor ş coloaelor î A b sut apromatv egale. Metoda QR aplcată lu A, fără rafare (cu EPS = E-8), cu ş fără balasare, dă următoarele rezultate: - Valorle ş vector propr cocd, cu cel puţ 0, ş respectv 9 cfre semfcatve. - Erorle mame (î modul) î Ay y sut: 3.229E- ş 2.887E-4, respectv. Se observă precza mult ma mare a sstemulu propru calculat cu balasarea matrc A. 2. Balasarea cu subruta sgbal (î smplă precze), dă următoarele rezultate: D dag(2.444062e - 04.5625000E - 02.000000 ) A b.000000.5625000 0 2.44406 2 0.000000.000000.562500 0.40960 0.6400000.000000 Este de remarcat că, pr acest procedeu, matrcea este balasată apromatv î orma-. Normele llor ş coloaelor sut de acelaş ord de mărme (îsă, dferte):.409600 3.45703 2.655625 2.562500 3 5.003906 2.049600 Eroarea mamă î Ay y este 4.960E-3. 3. Subruta Balace d programul QR, balasează matrcea î orma- (fără a face permutăr), cum urmează. Notăm: orm_r orma le, ş orm_r orma le fără elemetul dagoal, adcă: orm _ r a(, j) ; aalog, petru coloaa, j, j orm_c ş orm_c. Algortmul este următorul: - Iţalzăm D I, ş terăm paş K =, 2,

54 - La fecare pas K, procesăm lle (ş coloaele) î ordea aturală, aume: Petru, 2,, : - Calculăm elemetele matrce D, pr d orm_ r / orm _ c - Se scalează la ş coloaa, pr A D AD - Puem D D D La rezultă matrcea D, la pasul curet K, ş s-a calculat A D AD. - Calculăm (petru matrcea curetă A): Rato ma orm _ r orm _ c / orm _ r, - Se pu următoarele codţ de oprre a teraţe: Rato EPS ; Numar _ Iterat lt ; (Se au: EPS E 4 ş lt 00 ). Petru matrcea d Eemplu, la pasul 2, se obţe: Rato.2064E - 05; D dag( 9.9750279E - 05.0074407E - 02.002465). Normele llor ş coloaelor sut: 2.004975 2.00495 2 2.004963 2.004963 3 3.00003 3.000037 Eroarea mamă (î modul) î Ay y este 4.29E-4. Fşere - Fşere sursă: Age.f90: subruta de geerare a matrc A Ma-QR-2005.f90: programul prcpal work-2005.90: modul - Bbloteca statcă:

55 QR_Lb.lb Aceasta coţe fşere modul obect (petru aceste fşere u se dă codul sursă). Î proect se vor clude cele tre fşere sursă ş bbloteca statcă. - Fşere de date: Acestea se găsesc î sub-folderul QR\Dat. La lasarea î eecuţe, programul deschde fereastra stadard de selecţe a fşerulu d acest folder. U fşer ou de date, este preferabl să fe plasat î acest folder. Programul QR este scrs î dublă precze. Programul prcpal apelează următoarele subrute (ş o fucţe): GetFle(fame, status) Selectarea fşerulu de trare. Bazată pe API-ul GetOpeFleName. fame: ume fşer status: îtreg ut2(, Q) Iţalzează matrcea reală Q(, ) cu matrcea utate. : ordul matrc Q Q: matrce (, ) Age(Ag, job) Geerarea matrc A Ag: tablou (,), petru matrcea A geerată. Job: character(20); v. Semfcaţa codurlor. symm(, a) Fucţe logcă; matrce A smetrcă. : ordul matrc A a: tablou (, ) petru A. PrtA(, A)

56 Tpărrea matrc A(, ) Balace(, a, dag_bal, 0), Drect_Balace(, a, dag_bal) Balasarea matrc A, ş balasarea drectă a matrc A. : ordul matrc A a: tablou (, ) petru A. dag_bal: elemetele dagoale ale matrc de balasare D (Balace: eşre; Drect_Balace: trare). Trdagoal(kod), Hesseberg(kod) Reducerea al forma trdagoală, respectv Hesseberg. kod: cod de tpărre a trasformărlor. Se a 0. QR_Z(ter, do_shft, kodshft, koditer, BlockReduced, real_val) Iteraţa QR. ter: cotor de teraţ do_shft: logc; cu sau fără shft. kodshft: codul shft-ulu. V. Semfcaţa codurlor. koditer: cod de tpărre a teraţlor. BlockReduced: logc. Matrce redusă la forma bloc-trughulară (eşre). real_val: logc. Toate valorle propr sut reale (eşre). Vec_BlocTr(VEC, kodnorm), Vec_BlocTr_Z(VEC_Z, kodnorm). Calculează vector propr a ue matrc bloc-trughulare valoare propre reală, respectv compleă. VEC, VEC_Z: tablou (, ) petru vector propr; real, respectv comple. Power_Refe(vp), Power_Refe_Z(vp) Rafarea vectorulu ş valor propr r. vp valoare propre reală, respectv compleă. Normalze_r(VEC, kodnorm), Normalze_Z(VEC_Z, kodnorm) Normalzarea vectorlor propr cazul real, respectv comple. VEC, VEC_Z: ca ma sus.

57 kodnorm: codul orme. V. ma jos: Semfcaţa codurlor Check(real_val, full_prt_check) Subrută petru verfcarea sstemulu propru. real_val: logc; valor propr reale. full_prt_check: logc; tpărrea la verfcare, ş a vectorlor Az z. Structura fşerulu de date - Ttlu: tet, ma. 80 caractere (ttlul probleme). -, koda, kodprta Datele următoare defesc matrcea A. Se troduce ua d varate, î fucţe de codul koda: - Matrcea A... koda = 0, (matrce cttă d fşerul de date) - Job... koda < 0 (matrce geerată). - Fame_2:... koda 2 (matrcea se cteşte d fşerul Fame_2). - Balace, kod_balace: cod petru balasarea matrc; cod petru modul de balasare. - [dags(), =,... Dacă kod_balace 0.] - Form: cod petru trasformăr prelmare ale matrc. - Eps, Eps_lambda, Lt, koditer: toleraţe; umăr lmtă de teraţ, cod tpărre teraţ. - Shft, kodshft: cod petru shft ; cod stratege de alegere a shft-ulu. - kodvp: cod petru calculul vectorlor propr. - [Refe: rafarea sstemulu propru pr teraţe versă (dată logcă)...dacă kodvp 0] - [s (îtreg): cod petru mod rafare... Dacă Refe are valoarea adevărat :] - [kodnorm: cod ormă petru vector propr... dacă kodvp 0] - Check_tet: cod petru verfcarea sstemulu propru. Semfcaţa codurlor: : ordul matrc koda: koda 0: matrce cttă; koda < 0: matrce geerată (de Age). Valor koda ş datele petru defrea matrc A:

58 koda = 0: trughul superor, pe l (matrce smetrcă) î fşerul de trare; koda = : îtreaga matrce, pe l î fşerul de trare; koda 2: Fame_2: specfcatorul fşerulu care coţe elemetele matrc. Structura fşerulu Fame_2: Prma le: tet arbtrar (ttlul probleme) Lle următoare, coform codulu: koda = 2: trughul superor (matrce smetrcă) pe l; koda = 3: îtreaga matrce pe l; koda 4: elemetele eule ale matrc, aume:, j, a (, j). Sfârştul de fşer este o dată eumercă. Eemplu: Ed koda < 0: job: Dată tet (-20 caractere). Numele jobulu deft î Age. Parametru petru apel Age. kodprta: > 0: tpăreşte A (dată, ş redusă la forma bloc-trughulară); 0: tpăreşte A redusă la forma bloc-trughulară; < 0: u ţpar. Balace: Dată tet (-20 caractere). Prmul caracter este semfcatv, aume: B, b / Alt caracter: Balasează / Nu balasa. kod_balace: 0: Balasare cu subruta Balace; 0: Balasare drectă, cu dags (subruta Drect_Balace). Dacă u se balasează: se troduce orce îtreg: dags ( : ) : Elemetele dagoale petru balasare drectă ( A D AD ) Form: Dată tet (-20 caractere). Prmul caracter este semfcatv: - A, a: Auto, rezultâd î: Matrce smetrcă: forma Trdagoală; Matrce esmetrcă: forma Hesseberg (superoară). - T, t: forma Trdagoală; - H, h: forma Hesseberg; - Alte caractere: matrcea dată (Fără trasformăr prelmare). Eps: Toleraţa la elemetele o-dagoale

59 Eps_lambda: Toleraţa la două valor succesve λ Lt: koditer: Shft: kodshft: 0: Numărul lmtă de teraţ 0 / 0: Da / Nu tpăreşte teraţle. tet (-20 caractere). Prmul caracter este semfcatv: S, s / alt caracter: Cu / Fără shft; (k ) sk a ( s k este shftul de la pasul k) ( k) > 0: s k Valoarea propre a sub-matrc A ( :, : ) ma apropată de (k ) a., cea kodvp: Refe: s: < 0: s k Elemetul dagoal smetrce). 0 / 0: Da / Nu calculează vector propr. kodvp > 0: Scre vector propr; kodvp < 0: Nu scre vector propr. Dată logcă. Valor: (k ) a mm. (optm petru uele matrc T / F: Rafează / Nu rafa sstemul propru pr teraţe versă (cu traslaţe). Notă: Dacă se rafează: vector popr sut deja ormalzaţ cu orma-2. Defeşte shft-ul petru teraţa versă. Se troduce uma petru Refe = T. Shftul este deft pr s ( ) ds, ude: s > 0: ds = o utate î cea de-a "s-a" cfră semfcatvă a lu lambda. Recomadare: s = 4; 5, 6. s < 0: ds = D-4 kodnorm: < 0: Nu ormalza. 0: Norma-ft : Norma- 2: Norma eucldaă (Norma-2) 3: Norma "gerească": prma coordoată =. Check_tet: dată tet (-20 caractere). Prmul caracter este semfcatv: C,c, P,p, F,f / Alt caracter: Da / Nu - Verfcarea sstemulu propru.

60 F,f: se tpăresc ş vector rezdual Az z. (do_balace, do_shft, do_check, full_prt_check: date logce; utlzare teră) Semfcaţa uor date de eşre: Row: Idcele le matrc reduse. Bloc Flag = / 2 : Idcele le Row î bloc (Prma le / A Doua le). Bloc Flag = 0: La u aparţe uu bloc. (Iter, se utlzează tabloul bloc(:): Idcele le bloculu; la eşre, data Bloc Flag este varabla _flag. V. programul prcpal.). Dacă se balasează (do_balace =.true.): Row _ Norm Colum _ Norm Rato ma, Row _ Norm Dacă ordul matrc 50, programul afşează ş tmpul de calcul. Eemple Eemplu-: Fără rafare. E Rau Cod. 3 0 3.02 -.05 2.53 4.33 0.56 -.78-0.83-0.54.47 NoBal 0 Hess E-8 E-7 50 0 shft 0 F 2 Proba Matr A - Hesseberg form

6 3.020000.50759 2.28709-4.408832.02202.866028-2.2204460E-6 0.6260283.008798 * Reached block-tragular form (Iterato 4). Mamum Left-Dagoal ( modulus) s: 7.6697928E-2 (Row: lma = 3). a(lma-,lma-) + a(lma,lma) :.25924 Mamum sub_sub-dagoal ( modulus) s:.4049635e-2 (Colum ). Processg block-tragular form: Iteratg to reach tolerace o lambdas. * Met tolerace EPS_lambda o lambdas (Iterato 5). Actual test value s: 0.000 Real Egevalues: F Iterato 5: Reduced Matr - Block-Tragular Form 2.670576-4.77637 -.992024.505434 2.3835-2.34658 4.09605E-2 6.484472E-2 -.927228E-03 Row Block Flag 2 2 3 0 Egevalues 2.5259636405857 2.50364648445962 2 2.5259636405857-2.50364648445962 3 -.9272287035478E-03

62 Egevectors 0.3676642025709480 0.4354636756397324 0.75229065054949-0.87280223639355-0.909470078347702 0.20338034658520 2-0.4353789637770-0.39263246355579 0.2247448848453599-0.7394997762727376-0.240525790598959 0.7890459950583 3 0.255723286279253E-0 0.93376070837745 0.3569846066400766 Check: A*y - lambda*y Mamum absolute dfferece (A*y -lambda*y) = 3.695E-2 Vector # Coordate(s) # 3 3 Eemplu-2: cu rafare. Reluăm Eemplu-, cu rafare, cu s = 5. E. Rau Cod. cu rafare. 3 0 3.02 -.05 2.53 4.33 0.56 -.78-0.83-0.54.47 NoBal 0 Hess E-8 E-7 50 0 Shft 0 T 5 2

63 Proba Matr A - Hesseberg form 3.020000.50759 2.28709-4.408832.02202.866028-2.2204460E-6 0.6260283.008798 * Reached block-tragular form (Iterato 4). Mamum Left-Dagoal ( modulus) s: 7.6697928E-2 (Row: lma = 3). a(lma-,lma-) + a(lma,lma) :.25924 Mamum sub_sub-dagoal ( modulus) s:.4049635e-2 (Colum ). Processg block-tragular form: Iteratg to reach tolerace o lambdas. * Met tolerace EPS_lambda o lambdas (Iterato 5). Actual test value s: 0.000 Real Egevalues: F Iterato 5: Reduced Matr - Block-Tragular Form 2.670576-4.77637 -.992024.505434 2.3835-2.34658 4.09605E-2 6.484472E-2 -.927228E-03 Row Block Flag 2 2 3 0 * Refemet: Iteratos Test Value Tolerace

64 2 2.9288392389E-6 4.44E-6 2 2 2.037832692E-6 4.44E-6 3 5 0.000000000 2.68E-9 Egevalues 2.52596364055325 2.50364648447407 2 2.52596364055325-2.50364648447407 3 -.92722806504925E-03 Egevectors -0.3676642303666432-0.4354636527433-0.752290535059487 0.8728070362026 0.909469948529727-0.20338046845698 2 0.4353787345677 0.392632403726-0.224744932048953 0.739499769273490 0.240525904780458-0.78904462875638 3-0.255723286362887E-0-0.933760708378584-0.3569846066396395 Check: A*y - lambda*y Mamum absolute dfferece (A*y -lambda*y) = 4.44E-6 Vector # Coordate(s) # 2 2 2 Eemplu-3: cu balasare (ş fără rafare). Cosderăm d ou, Eemplu-, cu balasarea matrc cu kod_balace = 0. Se observă că, verfcarea sstemulu propru este ma buă decât î Eemplu-. E Rau Cod. cu balasare 3 0

65 3.02 -.05 2.53 4.33 0.56 -.78-0.83-0.54.47 Bal 0 Hess E-8 E-7 50 0 shft 0 F 2 Proba Balace: No. of steps = 5; Rato = 4.034E-05 A-balaced 3.020000 -.84435.79243 2.465094 0.5600000-0.779390 -.7537 -.338832.470000 Matr A - Hesseberg form 3.020000 2.43585 0.827233-2.729320.525048 0.697772 2.2204460E-6.3267 0.504956 * Reached block-tragular form (Iterato 4). Mamum Left-Dagoal ( modulus) s:.278343e-3 (Row: lma = 3). a(lma-,lma-) + a(lma,lma) : 2.0840 Mamum sub_sub-dagoal ( modulus) s: -2.4004666E-22 (Colum ). Processg block-tragular form: Iteratg to reach tolerace o lambdas. * Met tolerace EPS_lambda o lambdas (Iterato 5). Actual test value s: 2.4973E-6

66 Real Egevalues: F Iterato 5: Reduced Matr - Block-Tragular Form 2.409872-3.042890 -.287376 2.064393 2.642056.650857E-02 7.866986E-4.007568E-3 -.927228E-03 Row Block Flag 2 2 3 0 Egevalues 2.52596364055325 2.50364648447388 2 2.52596364055325-2.50364648447388 3 -.92722806496357E-03 Egevectors 0.457887687623 0.347472059670668 0.69547526298252-0.33770857265424-0.433823750645967 0.23930259878500 2-0.3679706023954490-0.435204795959664 0.30459562896738-0.703463726325355-0.232404357570585 0.54328437576227 3 0.25572328636288E-0 0.933760708378584 0.3569846066396397 Check: A*y - lambda*y

67 Mamum absolute dfferece (A*y -lambda*y) = 6.362E-4 Vector # Coordate(s) # 2 Eemplu-4: Cosderăm matrcea Eberle de ordul 6 (Westlake (968)). Aceasta se defeşte pr: 2 2 2 2 3 3 2 2 5C C C ; B 2 0 4 2 ; 5C C 0 0 5 B 2B A. 4B 3B Matrcea A are următoarele valor propr: 60 20, 45 5, 30 0, 5 5, 2 4, 9 3, 6 2, 3. Codul î Age petru geerarea matrc A î tabloul Ag(,), este dat ma jos. (Î datele de trare, se pue = 6).... ELSEIF(job =='ebe6') THEN allocate(c(4,4), b(8,8)) c(,) =-2; c(,2:4) =2; c(2,) =-3; c(2,2) =3; c(2,3:4) =2; c(3,) =-2; c(3,2) =0; c(3,3) =4; c(3,4) =2; c(4,) =-; c(4,2:3) =0; c(4,4) =5 b(:4,:4) =5*c; b(:4,5:8) =-c; b(5:8,:4) =5*c; b(5:8,5:8) =c; ag(:8,:8) =b; ag(:8,9:6) =2*b; ag(9:6,:8) =4*b; ag(9:6,9:6) =3*b; deallocate(c, b) ENDIF

68 Petru programul fără rafare, se troduc datele Eberle - ord. 6 6 - ebe6 NoBal 0 auto 0.0 0.0 00 0 Shft 0 F 2 ch Forma bloc-trughulară este atsă la teraţa 2 (ş toleraţa la, la teraţa 22). Rezultatul verfcăr sstemulu propru este: Mamum absolute dfferece (A*y -lambda*y) = 5.572E-03 Vector # Coordate(s) # 5 5 Programul cu rafare, cu s = 5, produce următoarele rezultate (petru ecoome de spaţu, vector propr u sut lstaţ): Egevalues 30.00000000000003 0.0000000000000 2 30.00000000000003-0.0000000000000 3 5.0000000000000 4.999999999999977 4 5.0000000000000-4.999999999999977 5 60.0000000000000 20.0000000000000 6 60.0000000000000-20.0000000000000 7 44.99999999999998 5.00000000000002 8 44.99999999999998-5.00000000000002 9-2.999999999999998.00000000000000 0-2.999999999999998 -.00000000000000-6.000000000000003 2.000000000000008 2-6.000000000000003-2.000000000000008 3-2.00000000000000 4.000000000000002

69 4-2.00000000000000-4.000000000000002 5-9.000000000000000 3.000000000000027 6-9.000000000000000-3.000000000000027 Check result: Mamum absolute dfferece (A*y -lambda*y) =9.769963E-5 Vector # Coordate(s) # 8 Observaţ: Toleraţele Eps ş Eps_lambda s-au luat relatv mc (0.0), producâd rezultate destul de mprecse î cazul fără rafare: eroarea î verfcarea sstemulu propru, este de ordul E-3. Acestea sut îsă, îmbuătăţte foarte mult, pr rafare (eroare de ordul E-5). Toleraţe ma mc, u îmbuătăţesc verfcarea sstemulu propru. Eemplu: Toleraţe de 0.00 duc la o eroare de ordul E-4 î verfcare. Acest eemplu dă o dee, despre dfcultăţle care apar î calculul sstemulu propru al ue matrc de ord relatv mare; aceste dfcultăţ cresc odată cu ordul matrc. Petru o matrce de ord mare, u se vor alege toleraţe Eps ş Eps_lambda foarte mc. Eemplu-5: Cosderăm matrcea Wlkso de ordul 20 (Wlkso (963), Westlake (968)): A 20 2 20 3 20 9 20 20 Aaltc, matrcea, este deftă pr a (, j) 0, cu ecepţa elemetelor: a(, ) ;, a(, ) ;, ; a (,).

70 Eemplul Wlkso a 20. Dacă perturbaţa 0, matrcea este superor trughulară, ş valorle propr sut ( ). Petru E 0, cu metoda QR fără rafare (cu EPS = E-6), se obţ următoarele rezultate: a) Fără balasare: Valorle propr rezultă toate reale. Ele repreztă perturbaţ ale valorlor, 20,, aume (ordoate descrescător): 9.99999998462896, 9.000029898095, 7.9999934364806,..., 3.000002879982,.999999854534825,.000000000000000 Eroarea î verfcarea sstemulu propru este.232e-07. b) Cu balasare: Valorle propr calculate coţ 4 valor complee, ş aume (ordoate după descrescător): 20 20.004248526970 9 8.8907556522547 8 8.42592998979 7 7.03466897322695.08773630986453 6 7.03466897322695 -.08773630986453 5 5.0602239289448.948529250030004 4 5.0602239289448 -.948529250030004 3 2.889266456770 2.529867589294 2 2.889266456770-2.529867589294 0.49999998763635 2.73339736256592 0 0.49999998763635-2.73339736256592 9 8.8073427255256 2.5298726294424 8 8.8073427255256-2.5298726294424 7 5.89397753500699.94852928239898 6 5.89397753500699 -.94852928239898

7 5 3.9653306750865.08773566509806 4 3.9653306750865 -.08773566509806 3 2.5748845008950 2 2.0924835064037 0.995754402238627 Eroarea î verfcarea sstemulu propru este 4.2E-06. (Cu balasare ş rafare, eroarea deve.776e-5.) Eplcaţa rezultatelor foarte dferte î cazurle (a) ş (b), este următoarea: polomul caracterstc al matrc este p ( ) ( )( 2) ( 20) 20 9, ş acesta este foarte rău codţoat; umerele de codţe petru rădăc sut cuprse ître 7 4.3 0 ş 2 3.98 0. Odată cu polomul, ş valorle propr sut rău codţoate. (Problema codţoăr valorlor propr depăşeşte cadrul acestu maual. V. de eemplu, Golub & Va Loa (996)). D acest eemplu, se poate cochde că smpla verfcare a sstemulu propru (pr proba că Az z = mcă ), u asgură corecttudea sstemulu propru calculat v. cazul (a). Pe de altă parte, rezultă că balasarea matrc este ecesară î acest caz. Î geeral: Balasarea se recomadă petru metoda QR aplcată la matrc esmetrce, la care valorle propr pot f rău-codţoate. Matrcle smetrce au valor propr becodţoate. Geeral_R, Geeral_R Problema geeralzată reducerea la problema stadard.

72 Problema geeralzată de valor propr Problema determăr valorlor ş vectorlor propr a ue matrc A, deftă de A, sau de ecuaţa ( A I) 0 () se va um problema stadard. Î Damca Structurlor apare următoarea problemă: ( K M) 0, (2) 2 ude:, ar K ş M sut matrc smetrce ş poztv defte (K ş M sut respectv, matrcle de rgdtate ş de masă; este pulsaţa propre). Problema (2) se zce problema geeralzată de valor propr. Ma geeral cosderâd două matrc A ş B, problema geeralzată are forma ( A B) 0. Î cotuare, cosderăm problema (2). Reducerea la problema stadard Problema (2) poate f adusă la problema stadard () petru o matrce smetrcă ş poztv deftă, cum urmează. ) Se face descompuerea Cholesky a lu M: M S T S, (3) ude S este superor trughulară.. Atuc, (2) scrsă î forma K M, deve T K S S, ş se scre d ou ca ş KS ( S) S 2) Se otează T ( S). (4) y S (5) ş ecuaţa (4) deve KS T y S y. Premultplcâd cu S KS T y Iy ( T T S ) ( S ) S T, se obţe

73 3) Acum, defm R S T KS (5) R este matrce smetrcă ş poztv deftă. 4) Problema (2) este pusă î forma stadard petru matrcea R, ş aume, ( R I) y 0 (6) Problemele (6) ş (2) au aceleaş valor propr. 5) După rezolvarea lu (6) petru ş y, vector propr a probleme orgale (2) sut daţ, cf. (4), de S y (7) Ţâd cot de faptul că M ş K sut smetrce ş poztv defte, se verfcă medat că matrcea R este smetrcă ş poztv deftă. Urmează că valorle propr ale lu R 2 sut reale ş poztve, aşa cum trebue să avem coform cu. Astfel, petru a rezolva (6), orce metodă petru problema de valor propr ale ue matrc smetrce ş poztv defte poate f aplcată lu R. Observaţe Cel ma smplu caz este acela î care matrcea M este dagoală (model de mase T cocetrate), M dag m ). Atuc, avem S S dag m ), ş ( ( S S T dag (/ m ). Astfel, elemetele lu R ş sut date de: r ş kj,, j, m m j, y,. m, j Observaţe Matrcea R poate f scalată, adcă se pue R R factor. Ecuaţa (6) deve

74 ( R I) y 0, ude factor Astfel, după determarea valorlor propr avem factor, ar pulsaţle propr se găsesc d: factor Foldere: Geeral_R, Geeral_R Ambele proecte reduc problema geeralzată (2) la problema stadard. Deosebrea este că prmul stochează ş procesează trughul superor al matrclor M ş K, ar al dolea, matrcle complete M(gl,gl), K(gl,gl). Ambele proecte lucrează î dublă precze. Fşere (Geeral_R): Back.f90: substtuţe îapo, petru Cholesky. Cholesky_S.f90: subruta Cholesky. loca.f90: fucţa de adresă d Cholesky. Ge_M.f90, Ge_K.f90: subrutele de geerare a matrc M, respectv K. Ge_R.f90: subruta de calcul a matrc R. Ma-Geeral_R.f90: programul prcpal. Wrte_R.f90: subrută petru screrea matrc R. work.f90: modul GetFle.f90, Opefle.f90, wdth.f90: utltare Compact_mul: subrută de îmulţre SA, ude: S este smetrcă ş stocată î trughul superor, ar A este (, ).

75 [Aceasta este uma î folderul Geeral_R.] Subruta metode este Ge_R(kodPrt) Parametru: kodprt: cod petru tparre Datele de trare se ctesc dtr-u fşer de date (acesta se selectează d fereastra stadard). Datele de eşre se scru î cotuarea datelor de trare. Matrcle M ş K se troduc coform codurlor kod_gem ş kod_gek (codur de ctre sau geerare a matrclor): - kod_ge 0: matrc geerate (de subrutele Ge_M.f90, Ge_K.f90); - kod_ge : matrc ctte d fşer, aume: - kod_ge = : fşerul de trare; - kod_ge 2: fşer specfcat (selectat). Daca matrcea este cttă: se troduce ş "factor"; dacă este geerată, u. Î cazul matrclor ctte dtr-u fşer specfcat (kod_ge 2), fşerul va avea următoarea structură: - Prma le d fşer este o le-tet (gorată la ctre); - Următoarele l coţ elemetele trughulu superor al matrc. Datele de trare (aceleaş petru Geeral_R ş Geeral_R), sut: - Ttlu: tet de ma. 80 caractere - gl, kod_gem, kod_gek Petru kod_gem =, se troduce: - [Matrcea M trughul superor, pe l.] Petru kod_gem, se troduce: - [m_factor: factor de multplcare petru M; (M m_factor M) Petru kod_gek =, se troduc: - [Matrcea K trughul superor, pe l.] Petru kod_gek, se troduce:

76 - [k_factor: factor de multplcare petru K; (K k_factor K) - kodprt: cod tpărre Semfcaţa codurlor: gl: ordul matrc (umărul gradelor de lbertate) kod_ge: v. ma sus kodprt: 0 / 0: Nu se tpăresc / Se tpăresc: matrcle M, K, ş S. Observaţe Matrcea R este scalată: adcă, î fşerul de eşre, se tpăreşte matrcea scalată R ş factorul de scalare scal: avem Factorul de scalare se calculează astfel: orm = maval(dabs(r)) scal = 2_8**(epoet(orm)-) ude orm este orma-. Eemplu: R R scal. 2 0 M 3 ; 0 2 3 0 K 2. 0 Fşerul de date: Eemplu cu M o-dagoala; gl =3 3 2 0 3 2.! m_factor 3-0 2 -

77.! k_factor 0 Rezultate: Matrcea R = S^(-T)*K*S^(-).500000000000000 -.8033988749895 0.559069943749473 -.8033988749895.500000000000000 -.250000000000000 0.559069943749473 -.250000000000000.500000000000000 Matrcea S^(-): 0.707067886547-0.3622776606838 0.58388300849 0.632455532033676-0.3622776606838 0.79056945042095 Retreve_Ege_from_R Regăseşte valorle ş vector propr a probleme geeralzate, după găsrea valorlor ş vectorlor propra matrc R. Fşere sursă: Ma-Retreve_Ege_from_R.f90: programul prcpal work-2005.90: modul GetFle.90, OpeFle.90: fşere petru fereastra de selecţe stadard wdth.90: utltar Fşere de date (trare): Programul cere ca folderul de lucru să este urmatoarele 4 fşere: ume-s^-.dat: fşerul care coţe matrcea ume-scal_r.dat: fşerul care coţe factorul de scalare. S (trughul superor); ume-val.dat: fşerul care coţe valorle propr ale lu R; ume-vec.dat: fşerul care coţe vector propr y a lu R;

78 Specfcatorul de fşer trebue să abă forma de ma sus, î care, ume este ales de utlzator (de regulă, umele eemplulu). Î fecare fşer, datele umerce sut precedate de o le-tet. - Prmele două fşere sut furzate (ca fşere de eşre) de programul Geeral_R. - Ultmele două fşere sut furzate (ca fşere de eşre) de programul de valor propr QR sau Jacob. Date troduse de la termal: - Numărul gradelor de lbertate (ordul matrc R) - Pulsaţ sau Frecveţe: se troduce T, respectv F. Relaţa ître pulsaţa ş frecveţa f este: f /( 2 ). Fşere de eşre (rezultate): ume-omega.dat (pulsaţ), sau ume-frecv.dat (frecveţe); ume-vec_x.dat: vector propr, a probleme geeralzate. Eemplu (v. eemplul de la Geeral_R) Fşere de trare: E3-S^-.dat: Matrcea S^(-): 0.707067886547-0.3622776606838 0.58388300849 0.632455532033676-0.3622776606838 0.79056945042095 E3-Scal_R.dat: Factor de scalare petru R:.00000000000000 Următoarele fşere sut geerate de Jacob_D: E3-VAL.dat: Egevalues:

79 3.47856369072702 2 0.94548384825443 3 7.6079240882794E-02 E3-VEC.dat: Egevectors -0.52238787933503 0.646456672245862-0.5560066363030 2-0.7548454734848392-0.4735654006037E-0 0.65444034545688 3 0.3965697446473088 0.764626757958836 0.52744598699670

80 INTERPOLARE Newto Polomul de terpolare Newto. Metoda: Problema Fe fucţa f, cuoscută pr valorle e pe pucte dstcte, ca î tabelul următor: 0 2 f() f 0 f f 2 f Puctele se umesc odur ş s-a otat f f ( ), 0. Se cere să se găsească, u polom p de grad cel mult, care să cocdă cu fucţa f pe odurle (sau, al căru grafc să treacă pr puctele, f ) ), adcă: p ( ) f, 0, ( Se zce că p este polomul de terpolare al fucţe f, pe odurle date. Se arată că: Polomul de terpolare (al fucţe f, pe odur) estă ş este uc Forma Newto a polomulu de terpolare p( ) c0 c( 0) c( 0) ( ) Defm poloamele q 0( ), q ( ) 0, q2( ) ( 0)( ),, sau, î geeral, k 0 q0( ) ; qk ( ) ( ), k,

8 Polomul de terpolare sub forma Newto se scre atuc: k k k q c p 0 ) ( ) ( Coefcetul k c se umeşte dfereţa dvzată de ordul k (a fucţe f, pe odul k ) ş se otează cu [ 0 ] 0 f c ; ],,, [ 0 k k f c, k. Cu aceasta, epresa polomulu de terpolare se scre k k k q f p 0 0 ) ( ],,, [ ) ( () sau eplct: ) ( ) ](,, [ ) )( ](,, [ ) ](, [ ) ( ) ( 0 0 0 2 0 0 0 0 f f f f p (') Propretăţ ale dfereţelor dvzate P. Dfereţa dvzată este o fucţe smetrcă de argumetele sale Adcă, cosderâd o permutare (,, 0 ) a umerelor (,, ), avem: ],, [ ],, [ 0 0 f f P2. Formula de recureţă a dfereţelor dvzate: 0 0 0 ],, [ ],, [ ],, [ f f f (2) Calculul practc al dfereţelor dvzate Notâd odurle cu j j j,,,, (2) deve: j j j j j j j j f f f ],, [ ],, [ ],, [ ş j j f f ] [. Utlzâd otaţa smplfcată ],,, [ j j j j j j f f, formula de recureţă (2) se scre:

82 f f f j j j j j j j (3) j j Astfel, obţem dfereţele de ordul, 2, 3, etc.: : f f f 0 0 ; 0 f 2 f 2 ; 2 f f f f 3 2 23 ; 3 2 2: 3: Etc. f f f 2 0 02 ; 2 0 f 23 02 023 ; 3 0 f f f f 23 2 23 ; 3 f Dfereţele dvzate se pot aşeza î următorul tabel eemplu petru 4 odur: 0 2 3 f f f f 0 2 3 f f f 0 2 23 f f 02 23 f 023 Prmele două coloae sut datele probleme (Coloaa a doua repreztă ş dfereţele de ordul 0). Dfereţele de ordul, 2, 3 sut î coloaele 3, 4, 5. Tabloul are structura trughulară: datele u permt calculul dfereţelor (care mplcă odul 4 ). Polomul de terpolare Newto, petru eemplul d tabel, este: p f j j cu j 4 4( 0 0 0 02 0 023 0 2 ) f f ( ) f ( )( ) f ( )( )( ) (4) Coefceţ polomulu se găsesc î prma le d tabel (îcepâd cu coloaa 2). Petru calculul practc al coefceţlor polomulu Newto, otăm coefceţ ca î tabloul de ma jos, aume dfereţe): c jk (ude j este dcele odulu, ar k dcele ordulu 0 2 3 c c c c 00 0 20 30 c c c 0 2 c c 02 2 c 03

83 Corespodeţa este: c ; c02 f02; c03 f023 0 f 0 c ; c2 f23; f 2 c2 f 2 ; Sau, î geeral, c jk f j j jk (5) Cu aceasta, (4) se scre: p4( ) c00 c0( 0) c02( 0)( ) c03( 0)( )( 2) Coefceţ c jk se calculează pr recureţă, cu formula care dervă d (2) ş (5): c jk c j, k j, k jk c j (6) Fşere: Pol-ewto.f90: programul prcpal Fu.f90: fucţa f Programul prcpal mplemetează calculul coefceţlor c jk coform (6), petru fucţa deftă î fu.90. Î afară de aceasta, programul calculează erorle relatve ale polomulu de terpolare pe şte valor date z, adcă ( f ( z ) p( z )) / f ( z ) ; dacă f ( z ) E 6, se lstează eroarea (î loc de eroarea relatvă). Subprogramul fu() returează valorle fucţe f pe. (Fucţa este umtă fu, ş valorle e sut stocate, î programul prcpal, î tabloul f(0:).) Datele de trare se ctesc dtr-u fşer de date, care coţe datele: - Ttlu: tet, ma. 80 caractere - : umărul de odur. ( ) - ( 0 : ) : odurle : valor - z: umărul de valor z

84. - z(:z): valorle z : z valor Datele de eşre costau î: valorle fucţe f pe odur; coefceţ c jk ; valorle polomulu p(z); erorle f z ) p( z ). (Dacă f ( ) 0. 2, î loc de eroarea relatvă se lstează eroarea.) Notă ( Programul are scopul de a lsta valorle ş erorle polomulu de terpolare (î geeral, pe alte pucte decât odurle). Programul se poate modfca uşor, astfel ca să abă ca trare valorle fucţe pe odur, adcă valorle f(0:).(î loc ca acestea să fe calculate de fucţa deftă î fu.f90.) Eemplu: z Cosderăm fucţa 2 e 3, ş odurle, 0,, 2, 3, 4 f ( ). Lstăm valoarea ş eroarea polomulu, pe mjloacele tervalelor defte de odur: 0.5; 0.5;.5; 2.5; 3.5. Fşerul de trare/eşre este: Fucta f = ep()-3**; 6 odur. 6-0 2 3 4 5-0.5 0.5.5 2.5 3.5 f(): -2.6322.000000-0.28782-4.60944-6.94463 6.59850 Coefcet c_j: -2.6322 3.6322-2.45699 0.30553 0.33620

85 4.599430E-02.000000 -.2878 -.523754 0.8455356 0.363272-0.28782-4.329226.02853 2.298404-4.60944-2.30359 7.908066-6.94463 3.526 6.59850 z p(z) Eroare relatva -0.500000-8.36889E-02-5.978E-02 (* eroarea) 0.500000 0.86732 3.495E-02.50000-2.242733.28E-02 2.50000-6.608934-6.308E-03 3.50000-3.488262 4.025E-02 Grafcele fucţe ş polomulu de terpolare sut date ma jos.

86 Fgura 9 Iterpolare: grafcul fucţe ş polomulu de terpolare