METODE NUMERICE I. ERORI. Itroducere Rezolvarea uei probleme presupue: ) elaborarea algoritmului 2) traspuerea îtr-u limbaj de programare 3) verificarea rezultatelor (itermediare, fiale) 4) precizia rezultatului Di 4) i di faptul c î memorie reprezetarea iformaiilor NU este eact deducem faptul c rezultatele sufer aproimri. Defiiie. Fie R e = se umete eroare absolut, iar e ε = se umete eroare relativ. Obs. Se obiuiete i e =. Notm valoarea aproimativ a lui. Atuci: ε = 2. Clasificarea erorilor S = 2 + 2 3 + K + ( + ) + K e Erorile se pot clasifica astfel: - erori ierete (ale problemei) acestea rezult di simplificarea modelului fizic petru a putea fi cupris îtr-u model matematic - erori de metod (de truchiere) aceste erori provi di metoda matematic utilizat - erori de rotujire acestea provi di datele de itrare/ieire sau la calcule (erori de operaie) Eemple: S se calculeze suma: Evidet S = + + K + suma primilor termei, 2 2 3 ( + ) i evidet S S, adic S este ir coverget cu limita S. Problema este c î programare u putem determia limita, ca oiue matematic. Se poate descrie calculul sumei pritr-o formul de recure: S = 2 S = S +, 2 ( + ) Atuci: Pagia di 37 Data:.6.29
2 3 4 S 2 = S + = 6 3 2 3 S3 = S2 + = 2 4 M 9 S9 = S8 + = 9 Atuci se poate lua S S 9 =.9 Dar i S = + lim S = = S deci eroarea este de.. Cea mai utilizat metod de rotujire este rotujirea pri truchiere (pri tiere). Eemplu: = 2945.734 Aceast valoare se poate truchia la: = 294 = 2945 = 2945.7 = 2945.73 dar evidet i 5 = 29 Î ceea ce privete propagarea erorilor se poate demostra c lucrâd cu valori rotujite (lucru obligatoriu câd se lucreaz î virgul mobil) pot s apar erori semificative la rezultate. Eemplu: S se calculeze = si( ) ude = 25.7 radiai cu eroare absolut de -8 Se poate calcula astfel: 3 5 2+ 2+ 3 ( ) = si ( + + L + ) < 3! 5! (2 + )! (2 + 3)! Folosidu-se, î calculul î virgul mobil, 6 cifre petru matis i 2 petru epoet se ajuge la: si 89.789!!! evidet eroat Eplicaiile acestei aberaii: - viteza de coverge a seriei folosite - acumularea erorilor de rotujire 8 Pagia 2di 37 Data:.6.29
II. REZOLVAREA ECUAIILOR ALGEBRICE. Geeraliti Fie ecuaia f() =, cu f cotiu pe itervalul ( a, b) R U umr real α R cu f() = se umete rdci a ecuaiei date. Defiiie: O ecuaie de forma P() =, cu P() poliom se umete ECUAIE ALGEBRIC P = a + a +... + a + a = ( ) ( ) P = Dac ecuaia u poate fi pus sub forma uui poliom se umete ECUAIE TRANSCENDENT Eemple de ecuaii trascedete: si = ; 2 2cos = ; lg( + 5) = cos ; 3 + cos = ; e + 2 5 = ; Observaii:. Este cuoscut faptul c petru = (ecuaie liiar) i =2 (ecuaie ptratic) eist formule eacte de rezolvare. Petru =3 i =4 eist formulele Cardao i Ferrari de determiare a soluiilor. Petru >4 u eist formule de determiare a soluiilor (metode eacte), decât umai petru aumite cazuri particulare. De obicei rezolvarea uei ecuaii algebrice petru >4 se face pri metode iterative de calcul. 2. Mai este cuoscut faptul, c orice ecuaie algebric are cel pui o rdci real sau comple. 3. La scrierea uei ecuaii î form caoic vom avea aceleai rdcii ca i petru ecuaia iiial, îs î acest caz pot s aprea i rdcii suplimetare. 2 2 De eemplu, ecuaia algebric 2 + = 2 +, poate fi adus la forma caoic: 4 3 2 7 + 2 + 2 4 5 =. Î geeral astfel de ecuaii u au rdcii eacte. Di aceast cauz se determi o aproimaie a rdciilor, procedâd astfel: a) se separ rdciile astfel îcât u iterval s coi o sigur rdci b) se îmbutete aproimaia cât de mult se poate (sau cere problema) TEOREM Dac f :[ a, b] R, cotiu pe [a, b], are seme cotrare la capetele itervalului, adic f ( a) f ( b) < atuci α ( a, b)cu f ( α) = adic ecuaia f() = are soluie î acest iterval. Pagia 3di 37 Data:.6.29
Obs.. Dac fucia f este ijectiv atuci! α ( a, b) cu f ( α) = rdci uic 2. Separarea rdciilor se face, de obicei, astfel: a. se împarte (a, b) î itervale a < a 2 <... < a b. se calculeaz f(a ), f(a 2 ),..., f(a ) c. î geeral se utilizeaz metoda îjumtirii itervalului Izolarea soluiilor. Diverse metode de separare (reper matematic) Prima etap de rezolvare umeric a ecuaiei f()= cost î separarea rdciilor, (izolarea soluiilor), adic î stabilirea itervalelor ce coi o rdci uic. Aceast etap poate fi realizat î câteva moduri: separarea grafic, separarea aalitic sau separarea pri metoda îcercrilor. Separarea grafic a rdciilor S aalizm mai îtâi modalitatea grafic de separare a soluiilor. Luâd î cosideraie faptul c rdciile reale ale ecuaiei f()=, u reprezit altceva decât abscisele puctelor de itersecie ale graficului fuciei y=f() cu aa O, este destul s costruim graficul fuciei f() i apoi s separm itervalele care coi eact câte o rdci. Dac ecuaia u are soluii foarte apropiate ua de alta, atuci pri aceast metod rdciile se izoleaz foarte uor. Î practic îs, de cele mai multe ori, îtâlim cazuri câd fucia este de o form destul de complicat petru a costrui graficul ei. Î astfel de cazuri, petru simplificarea costruirii graficului, ecuaia f()= se îlocuiete cu ecuaia echivalet ei f ()=f 2 (), ude f () i f 2 () sut mai simple decât ecuaia iiial. Atuci costruid graficele fuciilor y=f () i y=f 2 (), putem foarte uor izola segmetele sau itervalele care coi rdciile, deoarece ele reprezit abscisele puctelor de itersecie ale acestor grafice ( vezi fig.). π/2 ξ Fig. Eemplu: S se separe grafic rdciile ecuaiei si 2 l =. Costruim separat graficele fuciilor y=si(2) i y=l(). Di grafic rezult c ecuaia are o sigur soluie, care aparie itervalului [;.5]. Pagia 4di 37 Data:.6.29
Separarea aalitic Î alte cazuri este bie ca separarea grafic s fie îsoit de separarea aalitic a rdciilor, care poate fi realizat pri calcul direct sau aplicâd ua ditre metodele cuoscute. Ua ditre metodele de separare aalitic a rdciilor se bazeaz pe urmtoarea coseci a teoremei lui Rolle: ître dou rdcii reale cosecutive ale ecuaiei f ()= eist cel mult o rdci real a ecuaiei f()=. Fie < 2 <...< rdciile ecuaiei f ()=. Se formeaz irul lui Rolle: f( ), f( ), f( 2 ),..., f( ), f( ). Coform coseciei euate, î fiecare iterval (, ), (, 2 ),..., ( i, i+ ),..., (, ) se afl o rdci real a ecuaiei f()= umai dac fucia ia valori de seme cotrare la capetele itervalului, adic dac f( i ) f( i+ )<. Pri urmare, ecuaia f()= are atâtea rdcii câte variaii de sem prezit irul lui Rolle. Di puct de vedere practic, aceast metod prezit u dezavataj, deoarece ecesit rezolvarea ecuaiei f ()=, ceea ce ueori este la fel de dificil ca i rezolvarea ecuaiei f()=. Foarte utile petru separarea soluiilor sut urmtoarele teoreme di aaliza matematic, teoreme stabilite de Augusti Cauchy, matematicia fracez. Teorema Dac fucia f() de o sigur variabil real defiit pe u segmet [a,b], este cotiu pe acest segmet i admite valori de sem opus la capetele segmetului cercetat, adic f(a) f(b)<, atuci pe acest iterval eist cel pui o rdci a ecuaiei f(), adic se va gsi u umr ξ (a,b), astfel îcât f(ξ)= (fig. 2). Teorema 2 Dac o fucie este cotiu i strict mooto pe u segmet oarecare [a,b], i f(a) f(b)<, atuci pe acest segmet eist o rdci i umai ua sigur. Deci, rdcia ξ este uic, dac eist derivata de ordiul îtâi i aceast derivat îi pstreaz semul costat î iteriorul acestui iterval (a,b), adic f ()> (sau f ()<) petru a<<b (vezi fig. 3). Î caz cotrar, este posibil ca î itervalul dat s eiste mai multe rdcii sau rdcii pot s eiste chiar dac f(a) f(b)>. y f(a) f()> f(b) a ξ b f(a) a ξ y=f() b Fig. 2 Fig. 3 Pagia 5di 37 Data:.6.29
Separarea pri metoda umeric aproimativ. Algoritmul metodei separrii rdciilor S discutm î cotiuare despre modalitatea de separare a itervalelor ce coi rdcii, aplicabil atât petru rezolvarea ecuaiilor algebrice cât i petru cele trascedete. Problem: Fie este dat fucia f()= o fucie cotiu, mooto cresctoare sau descresctoare pe u segmet oarecare [a, b] i care are seme diferite la capete, adic f(a) f(b)<. S se separe rdciile ecuaiei, adic s se determie toate itervalele [, 2 ] [a,b] care coi eact câte o rdci. Vom calcula valorile lui f(), îcepâd cu puctul =a, deplasâdu-e la dreapta cu u aumit pas h (fig. 4). Î cazul câd se va detecta o pereche de valori vecie ale lui f(), avâd cele trei proprieti (cotiuitate, seme diferite la capete i mootoie strict), atuci putem cosidera c am separat u iterval care coie o rdci uic a ecuaiei f(). Evidet c siguraa acestei metode depide î mare msur de caracterul fuciei f() cât i de mrimea pasului de deplasare h, care trebuie luat de cele mai multe ori destul de mic. Pseudocod citete a,b,h <- a 2 <- +h y <- f() cât_timp 2<b eecut y2 <- f(2) dac y y2< atuci scrie,2 <- 2 2 <- +h y <- y2 } Fig. 4 y a h ξ 2 b program separarea_solutiilor; uses crt; var a,b,h,,2,y,y2:real; fuctio f(:real):real; f:=cos()-.*; clrscr; write('dati a='); readl(a); write('dati b='); readl(b); write('dati pasul h='); readl(h); := a; 2 := h+; y := f(); while 2<b do y2 := f(2); if y*y2< the writel('solutia se afla i itervalul [',::4,'; ',2::4,']'); := 2; 2 := 2+h; y := y2; ed. Eemple: a) 3 +5 2=; b) 3 4 +4 3 2+=; c),5 +=( 2) 2 ; d) (+3) cos=, 2π 2π dati a=- dati b= dati pasul h=. solutia se afla i itervalul [-.5; -.4] solutia se afla i itervalul [.7;.8] dati a=- dati b= dati pasul h=. solutia se afla i itervalul [-.49; -.48] solutia se afla i itervalul [.73;.74] dati a=-2 dati b= dati pasul h=. solutia se afla i itervalul [-.48; -.48] solutia se afla i itervalul [.736;.737] Pagia 6di 37 Data:.6.29
2. Rezultate geerale privid ecuaiile algebrice Fie P() = a + a - +... + a - + a = cu ai R, a U umr real α se umete rdci simpl dac P( α ) = i P '( α) U umr real α se umete rdci multip de ordi k dac ( k ) ( k P( α) = P '( α) = L = P ( α) = i P ) ( α) TEOREMA fudametal a algebrei. Orice ecuaie algebric de grad are eact rdcii. TEOREM Dac α = α + i α2 cu P( α) = atuci P( α ) = udeα = α i α2 Cocluzii:. rdciile complee sut î umr par 2. o ecuaie algebric de grad impar are cel pui o rdci real TEOREM Toate rdciile, 2,..., ale uei ecuaii algebrice se afl î iteriorul cercului cu cetrul î origie i de raz α R = + ude a α = ma a, a2, L, a Demostraie a = P() - (a - +... + a ), de ude rezult a P() + a - +... + a, deci P() a - ( a - +... + a ) a - ( - +... + ) = a α > > α ( a ) Dac alegem astfel ca } a α astfel îcât parateza s devi pozitiv, deducem β = + r a α > + a va rezulta c P()> deci NU mai poate fi rdci. De aici rezult c toate posibilele rdcii îdepliesc codiia: α j +, j =, a Î mod similar se obie i urmtorul rezultat: Dac a i = ma a, a,..., a - }, toate rdciile ecuaiei se afl î eteriorul cercului cu cetrul î origie i de raz r dat de: Pagia 7di 37 Data:.6.29
Demostraie Notm = i pri îlocuire se obie: y a + a y + L + a y + a y Q( y) P( ) = a + a + L + a + a = = y y y y y Rdaciile ecuaiei β Q(y) = sut y y j < +, j =, j =, j =, iar di teorema aterioar tim c a adic:, de ude j r < r < j j (-R, ) (-r, ) (, r) (, R) Eemplu Fie ecuaia algebric 5-5 4 +5 3-25 2 +26-2 = Se calculeaz = ma(5, 5, 25, 26, 2) = 26 α 26 R = + = + = 27 a = ma(, 5, 5, 25, 26) = 26 β 26 9 6 = + = + =,deci r = r a 2 6 9 Rezolvâd ecuaia cu metodele clasice rezult: =, 2 = + i 2, 3 = i 2, 4 = + i 3, 5 = i 3 vom observa c toate rdciile sut î itervalul calculat. III. METODE DE APROXIMARE A RDCINILOR UNEI ECUAII ALGEBRICE SAU TRANSCENDENTE. Geeraliti Fie f() =, f:(a, b) R, cotiu pe itervalul (a, b) Vom presupue c pe itervalul respectiv eist o uic rdci α ( a, b) Î ceea ce privete aprecierea erorii de determiare a rdciii se poate demostra urmtoarea TEOREM Fie α ( a, b)cu f ( α) = i fie α ( a, b) Dac f este derivabil pe (a, b) i µ > cu f '( ) > µ, ( a, b) rezult f ( α) α α µ Demostraie Fie α < α. Di teorema lui Lagrage rezult Pagia 8di 37 Data:.6.29
c ( α, α)cu f ( α) f ( α) = ( α α) f '( c) Dar f() =, deci f ( α ) = α α f '( c) de ude f ( α) f ( α) α α =,deoarece µ f '( ), ( a, b ) ceea ce arat c eroarea de f '( c) µ apreciere a soluiei poate fi oricât de mic. 2. Metoda îjumtirii itervalului (metoda biseciei) Fie f:[a, b] R, cotiu pe itervalul (a, b), cu f(a)f(b)<, deci are seme opuse la capetele itervalului. Împrim itervalul [a, b] î dou pri egale a + ba + b a,, b 2 2 avem dou cazuri: dac ( a + b ) a + f = α = b 2 2 a + b dac f ( ) atuci vom alege acel iterval [a, b ] ditre cele dou 2 petru care f(a ) f(b )<. Vom obie astfel u ir de itervale [a, b ] cu f(a ) f(b )< [a 2, b 2 ] cu f(a 2 ) f(b 2 )<... [a, b ] cu f(a ) f(b )< (*) b a ude, evidet b a = 2 Deoarece irul (a ) este cresctor i mrgiit, el are o limit. Aalog, deoarece irul (b ) este descresctor i mrgiit, el are o limit. Se observ, de asemeea c b a lim( b a ) = lim = 2 ceea ce îseam c lim( a ) = lim( b ) = α Atuci di (*) se obie 2 lim( f ( a ) f ( b )) = ( f ( α)) i di (evidet) (f()) 2 va rezulta f() =, adic este rdci. Obs. b a l( ) b a Di < ε rezult = ε +, adic umrul de pai petru a obie precizia. 2 l 2 Eemplu: S se determie soluia ecuaiei 4-3 + 2 +2-6 = di itervalul [, 2] Se observ, di calcul, faptul c f() = -3 i f(2) =, deci fucia are seme diferite la capetele itervalului. Pagia 9di 37 Data:.6.29
Pseudocod citeste a, b,, f cât_timp (f((a+b)/2)<> i b-a>) eecut dac f(a) f((a+b)/2)< atuci b <- (a+b)/2 altfel a <- (a+b)/2 } y <- (a+b)/2 scrie y program ijumatatire; uses crt; var a,b,eps,y:real; fuctia:strig; r_pasi:iteger; fuctio f(:real):real; f := **-*l() fuctio f(:real):real; f:=***-**+*+2*-6 //epresia fuciei f o dm eplicit 2 2 9 l =, 3 [, 3] y = 2.9999999963 [.,] y =.99999999665 fuctio f2(:real):real; f2:=*l()- fuctio f3(:real):real; f3:=*+l()-4 î [, 4] are soluia y=.7632228434} î [.5, 2] are soluia y=.84976} fuctio f4(:real):real; f4:=2/3*sqrt(*+9)- î [, 3] are soluia y=2.683285744} fuctio f5(:real):real; f5:=2***-6**-+3 write('limita iferioara a=');readl(a); write('limita superioara b=');readl(b); write('precizia E=');readl(eps); clrscr; r_pasi:=; writel('[a,b]=[',a:5:,',',b:5:,'] E=',eps::8); writel(' METODA INJUMATATIRII INTERVALULUI'); writel(' a ':2,' b'); writel('======================================================'); while (f3((a+b)/2)<>) ad (b-a>eps) do r_pasi:=r_pasi+; if f3(a)*f3((a+b)/2)< the b:=(a+b)/2 else a:=(a+b)/2; writel(a:2:8,b:2:8,'b-a=':8,b-a:2:8) y:=(a+b)/2; writel('------------------------------------------------------'); writel('solutia APROXIMATIVA DUPA ',r_pasi,' PASI ESTE y=',y:2:8); ed. Pagia di 37 Data:.6.29
APLICAREA METODEI BISECIEI LA AFLAREA TUTUROR SOLUIILOR UNEI ECUAII NELINIARE Rezolvarea ecuaiilor eliiare cu ajutorul calculatorului prevede urmtorii pai: Selectarea itervalelor ce coi soluii separate. Aplicarea metodei respective de gsire a soluiei î fiecare iterval, ce coie o soluie seperat Algoritmul separrii soluiilor poate fi urmtorul: Fie dat ecuaia f() =. Presupuem c fucia f() este cotiu i graficul ei este reprezetat î figura urmtoare: Vom îcepe cu u iterval destul de mare [a,b]. Alegem u pas suficiet de mic h i îcepâd di captul a vom calcula valorile fuciei la capetele tuturor segmetelor de lugime h. Dac fucia f() capt valori de sem opus la capetele segmetului, atuci îseam c acest iterval coie cel pui o soluie a ecuaiei f()=. Di grafic observm c soluiile, 2, 3 i 4 apari uor astfel de itervale de lugime h, iar la capetele fiecrui iterval, fucia f() are valori de sem opus. Capetele acestor itervale le vom memora îtr-u tablou. Î cotiuare vom aplica metoda biseciei pe fiecare iterval ce coie o soluie separat a ecuaiei f() =. Eerciii: aplicai metoda biseciei petru ecuaiile e - + 2 2 = l +.8 = cos() si() = 3. Metoda coardei Fie f:[a, b] R, cotiu pe itervalul (a, b), cu f(a)f(b)<, deci are seme opuse la capetele itervalului. Petru îceput vom presupue f(a)> i f(b)<, adic: y A câd f(a)> a ξ b f ''( ) >, ( a, b) "adu apa" f(b) B Pagia di 37 Data:.6.29
Ducem coarda AB. tiid c ecuaia dreptei care trece pri dou pucte A(, y ) i B( 2, y 2 ) este y2 y y y = ( ) i c, î cazul ostru puctele sut A(a, f(a)) i B(b, f(b)), obiem 2 a y f ( a) = b a f ( b) f ( a) Itersectâd aceast dreapt cu dreapta y= vom obie f ( a) f ( a) = a ( b a) sau, otâd h = ( b a) f ( b) f ( a) f ( b) f ( a) =a+h Pseudocod citeste a, b,, f //epresia fuciei f o dm eplicit f(a) <- a - ---------- (b-a) f(b)-f(a) cât_timp f( > eecut dac f(a)f()< atuci b <- altfel a <- f(a) <- a - ---------- (b-a) f(b)-f(a) } y <- scrie y program coarda; var a,b,eps,y, :real; r_pasi:iteger; fuctia:strig; fuctio f5(:real):real; f5:=***-**+*+2*-6 fuctio f2(:real):real; f2:=*l()- fuctio f3(:real):real; f3:=*+l()-4 fuctio f4(:real):real; f4:=2/3*sqrt(*+9)- fuctio f(:real):real; f:=2***-6**-+3 write('limita iferioara a=');readl(a); write('limita superioara b=');readl(b); write('precizia E=');readl(eps); writel('[a,b]=[',a:5:,',',b:5:,'] E=',eps::8); Pagia 2di 37 Data:.6.29
writel(' METODA COARDEI'); writel(' a ':2,' b'); writel('======================================================'); r_pasi:=; :=a-f(a)/(f(b)-f(a))*(b-a); while f()>eps do r_pasi:=r_pasi+; if f(a)*f()< the b:= else a:=; :=a-f(a)/(f(b)-f(a))*(b-a); writel(a:2:8,b:2:8,'b-a=':8,b-a:2:8) y:=; writel('------------------------------------------------------'); writel('solutia APROXIMATIVA DUPA ',r_pasi,' PASI ESTE y=',y:2:8); ed. Fcâd î relaia de mai sus +b -b se obie: f ( b) = b ( b a) f ( b) f ( a) Procedâd aalog se va obie, pe râd f ( a) 2 = ( a) f ( ) f ( a) f ( a) 3 = 2 ( 2 a) f ( 2) f ( a)... f ( a) = ( a) f ( ) f ( a) a + b deci petru f(a)> i f ''( ) > a fi 2 a + b dac f ( a) f ''( ) < bfi 2 Eemplu: S se determie soluia ecuaiei 2 3-6 2 -+3 = di itervalul [, ] Se observ, di calcul, faptul c f() = 3 i f() = -2, deci fucia are seme diferite la capetele itervalului. Pseudocod citeste a, b,, f dac f(a)f''((a+b)/2)> atuci fi <- a <- b} altfel fi <- b <- a} f() <- - --------------(-fi) f()-f(fi) cât_timp - >= eecut <- f() <- - --------------(-fi) f()-f(fi) } y <- scrie y //epresia fuciei f o dm eplicit Pagia 3di 37 Data:.6.29
Program coarda2; var a,b,eps,y,,,fi:real; r_pasi:iteger; fuctio f5(:real):real; f5:=***-**+*+2*-6 fuctio f5secud(:real):real; f5secud:=2**-6*+2 fuctio f2(:real):real; f2:=*l()- fuctio f2secud(:real):real; f2secud:=/ fuctio f3(:real):real; f3:=*+l()-4 fuctio f3secud(:real):real; f3secud:=2-/(*) fuctio f4(:real):real; f4:=2/3*sqrt(*+9)- fuctio f4secud(:real):real; f4secud:=6/((*+9)*sqrt(*+9)) fuctio f(:real):real; f:=2***-6**-+3 fuctio fsecud(:real):real; fsecud:=2*-2 write('limita iferioara a=');readl(a); write('limita superioara b=');readl(b); write('precizia E=');readl(eps); write('f()=');readl(fuctia); clrscr; writel('[a,b]=[',a:5:,',',b:5:,'] E=',eps::8); writel(' METODA COARDEI'); writel(' ':2,' fi'); writel('======================================================'); r_pasi:=; if f(a)*fsecud((a+b)/2)> the fi:=a; :=b ed else fi:=b; :=a :=-f()/(f()-f(fi))*(-fi); while abs(-)>eps do r_pasi:=r_pasi+; :=; :=-f()/(f()-f(fi))*(-fi); writel(:2:8,:2:8,'-=':8,abs(-):2:8,' ',fi:4:2) y:=; writel('------------------------------------------------------'); writel('solutia APROXIMATIVA DUPA ',r_pasi,' PASI ESTE y=',y:2:8); repeat util keypressed ed. Petru eemplul de mai sus se obi y.77678 27 pai îjumtire y.77678 6 pai coarda y.77678 7 pai coarda2 y.77678 4 pai tageta Pagia 4di 37 Data:.6.29
4. Metoda tagetei (NEWTON - RAPHSON) Fie f:[a, b] R, cotiu pe itervalul (a, b), cu f', f'' sem costat pe [a, b] y A(a, f(a)) f(a) f(a)> f''()>, di [a, b] a= 2 ξ f(b) B(b, f(b)) i fie = a astfel îcât f( ) f"( )> atuci, scriid ecuaia tagetei la curba î puctul, vom obie y - y = f'( )( - ) i itersectâd aceast dreapta cu dreapta y = vom avea f ( ) = f '( ) i procedâd aalog petru puctul obiut, apoi î cotiuare: f ( ) 2 = f '( ) f ( 2) 3 = 2 f '( 2)... f ( ) = (**) f '( ) Î mod aalog se deduce modul de calcul i dac graficul fuciei este y f(a) B(b,f(b)) f(b) a ξ 2 b= A(a, f(a)) caz î care = b. Eemplu: S se determie soluia ecuaiei 3 + 2-2-2 = di itervalul (, 2) Se observ, di calcul, faptul c f() = -2 i f(2) = 6, deci fucia are seme diferite la capetele itervalului. Pagia 5di 37 Data:.6.29
Pseudocod citeste a, b,, f //epresia fuciei f o dm eplicit a+b dac f(a)f(---)> atuci 2 <- a altfel - <- b repet f() y <- ------ f'() <- - y pâ_câd y <= scrie Obs. Deoarece de multe ori este dificil de calculat f'() se poate aproima aceasta pri f ( i ) f ( i ) f '( i ) program tageta; var a,b,eps,y,:real; r_pasi:iteger; i i fuctio f5(:real):real; f5:=***-**+*+2*-6 fuctio f5prim(:real):real; f5prim:=4***-3**+2*+2 fuctio f5secud(:real):real; f5secud:=2**-6*+2 fuctio f2(:real):real; f2:=*l()- fuctio f2prim(:real):real; f2prim:=l()+ fuctio f2secud(:real):real; f2secud:=/ fuctio f3(:real):real; f3:=*+l()-4 fuctio f3prim(:real):real; f3prim:=2*+/ fuctio f3secud(:real):real; f3secud:=2-/(*) fuctio f4(:real):real; f4:=2/3*sqrt(*+9)- fuctio f4prim(:real):real; f4prim:=2/3*/sqrt(*+9)- fuctio f4secud(:real):real; f4secud:=6/((*+9)*sqrt(*+9)) fuctio f(:real):real; f:=2***-6**-+3 fuctio fprim(:real):real; fprim:=6**-2*- fuctio fsecud(:real):real; fsecud:=2*-2 fuctio f6(:real):real; f6:=**+*-2*-2 fuctio f6prim(:real):real; f6prim:=3**+2*-2 fuctio f6secud(:real):real; f6secud:=6*+2 Pagia 6di 37 Data:.6.29
write('limita iferioara a=');readl(a); write('limita superioara b=');readl(b); write('precizia E=');readl(eps); writel('[a,b]=[',a:5:,',',b:5:,'] E=',eps::8); writel(' METODA TANGENTEI'); writel(' ':2,' y'); writel('======================================================'); r_pasi:=; if f(a)*fsecud((a+b)/2)> the :=a else :=b; repeat r_pasi:=r_pasi+; y:=f()/fprim(); :=-y; writel(:2:8,abs(y):2:8) util abs(y)<eps; y:=; writel('------------------------------------------------------'); writel('solutia APROXIMATIVA DUPA ',r_pasi,' PASI ESTE y=',y:2:8); ed. Eerciii: ) e +-2= [-, ] 2) 5-4 4 +-9= [, ] 3) 3 -si()-9= [, 4] 4) 6l()-cos()-= [/e, e 2 ] 5) 2 -( 2 +)-8= [, 9] 6) (2+l())+4 2 --5= [, 3] 7) si( 2 )+ 3 -= [, 2] 2 8) e cos = [, 3] 9) e 2 - si()-2= [, ] ) l(+2)+e --2= [, 2] 5. Aplicaie la metoda NEWTON-RAPHSON (algoritmul lui HERO) Fie a > => k a este rdcia ecuaiei k a = Coform metodei Newto-Raphso avem f '( ) = k k > f ''( ) = k ( k ) k 2 >, (, ) Graficul fuciei f ( ) = k a este y Y( k a,) deci ecuaia are soluie uic α R, α > A(,-a) Pagia 7di 37 Data:.6.29
Aplicâd formula tagetelor (**) se obie k a =, =,2,Κ k k sau trasformâd a = ( k ) +, =,2,Κ k k Petru k=2 se obie rdcia de ordiul 2 iar petru k=3 = 2 = 2 3 a +, =,2,Κ a +, =,2,Κ 2 umit i formula lui HERO Obs. Se poate demostra c doar petru > procesul este coverget. Metoda mit (aplicarea simulta a metodei coardelor i tagetelor). Reper matematic. Metoda corzilor i metoda tagetelor e dau valorile aproimative ale rdciii ξ di ambele pri (pri adaos i pri lips). De aceea ar fi mai raioal s le folosim simulta, caz î care precizarea rdciii are loc mai rapid. Fie dat ecuaia f()=, rdcia ξ care este deja separat i se afl î segmetul [a,b]. Î plus mai sut îdepliite codiiile urmtoare: f(a) f(b)<, iar f'() i f''() îi pstreaz semul pe segmetul cercetat. Aplicm simulta metoda coardelor i secatelor, luâd î cosideraie de asemeea i tipul graficului fuciei f(). Teoretic sut posibile 4 cazuri: ) f'()>; f''()> (fig.4) 2) f'()<; f''()< (fig.5) 3) f'()<; f''()> (fig.6) 4) f'()>; f''()< (fig.7) Cocretizm: Dac f'() f''()>, atuci metoda coardelor e d soluia aproimativ pri lips, iar metoda tagetelor pri adaos. y B y A f(b) f(a) a= 2 ξ b = f(a) A 2 b = a= ξ f(b) Fig. 4 Fig. 5 B Dac f'() f''()<, atuci metoda coardelor e d valoarea rdciii pri adaos, iar metoda tagetelor pri lips. Pagia 8di 37 Data:.6.29
y B y A f(b) f(a) a= =b f(a) ξ =b a= 2 ξ f(b) A B Fig. 6 Fig. 7 Îs î toate cazurile, rdcia real ξ a fuciei f() este cupris ître valorile aproimative ale rdciilor aflate î urma aplicrii simultae a ambelor metode. Mai precis, se respect iegalitatea: a < < ξ < b, i i < ude i aproimaia pri lips, iar i aproimaia pri adaos. Calculele pot fi efectuate î urmtoarea ordie. Cazul I: Dac f'() f''()> i [a, b], atuci la etremitatea stâg a se aplic metoda coardelor, iar la etremitatea dreapt b metoda tagetelor i atuci vom avea: f ( a) ( b a) f ( b) a = a, b = b () f ( b) f ( a) f ( b) Acum rdcia adevrat se gsete pe itervalul [a, b ]. Aplicâd pe acest iterval metoda mit vom cpta aproimaiile urmtoare: f ( a) ( b a) f ( b ) a2 = a, b2 = b f ( b ) f ( a ) f ( b ) iar î caz geeral: f ( ai ) ( bi ai ) f ( bi ) ai+ = ai, bi + = bi. (2) f ( bi ) f ( ai ) f ( bi ) Cazul II: Dac f'() f''()<, atuci de partea etremitii stâgi a, vor fi situate aproimaiile cptate pri aplicarea metodei tagetelor, iar de partea etremitii drepte b valorile cptate pri metoda corzilor. Atuci: f ( a) f b b a a = a b = b f ( a), ( ) ( ) (3) f ( b) f ( a) Aplicâd pe segmetul [a, b ] metoda mit, vom cpta: f ( a) f b b a a2 = a b2 = b f ( a), ( ) ( ) f ( b ) f ( a) Î caz geeral: f ( ai ) f ( bi ) ( bi ai ) ai+ = ai, bi+ = bi (4) f ( a ) f ( b ) f ( a ) i i i Pagia 9di 37 Data:.6.29
Metoda mit este foarte comod petru estimarea erorii de calcul. Procesul de calcul se îcheie atuci câd se îdepliete iegalitatea: aproimativ a rdciii se poate lua valoarea: ξ = ( ) aproimaiile pri lips i corespuztor pri adaos. Algoritmul realizrii metodei mite i i < ε. Î acest caz î calitate de valoarea 2 i i, ude valorile i i i. Defiirea fuciei f(), a itervalului de lucru [a, b], a preciziei ε i a umrului maim de iteraii ma. 2. Proces de calcul: a) iiializarea procesului de calcul: fa:=f(a); fb:=f(b); iter:=; :=a-(b-a)*fa/(fb-fa); calcul soluie iiial } f:=f(); b) Verificare semelor la capetele itervalului cercetat cu alegerea aproimaiei iiiale: dac f(a)*f()<= atuci t:=a; aproimaia iiial este captul a } repet :=-(-a)*f/(f-fa) calcul dup metoda coardelor } f:=f(); t:=t-f(t)/fd(t) calcul dup metoda tagetelor } iter:=iter+; pâ_câd -t <ε s-a atis precizia dat } } altfel f(a)*f()> } t:=b; aproimaia iiial este captul b } repet :=-(b-)*f/(fb-f) calcul dup metoda coardelor } f:=f(); t:=t-f(t)/fd(t) calcul dup metoda tagetelor } iter:=iter+; pâ_câd -t <ε s-a atis precizia dat } } c) soluia este :=(+t)/2 Implemetarea programului de determiare a rdciilor pri metoda mit. Problem. Utilizâd metoda mit, s se precizeze rdcia ecuaiei y=cos, pe segmetul [; 2] cu precizia ε= 3. program metoda_mita_iitial; var,t,f,fa,fb,a,b,eps:real; i,iter:iteger; fuctio f(:real):real; f:=cos()-.*; fuctio fd(:real):real; fd:=-si()-.; program de baza } a:=; b:=2; eps:=.; fa:=f(a); fb:=f(b); iter:=; :=a-(b-a)*fa/(fb-fa); calcul solutie iitiala } f:=f(); Pagia 2di 37 Data:.6.29
if f(a)*f()<= the t:=a; aproimatia iitiala este capatul a } repeat :=-(-a)*f/(f-fa); calcul dupa metoda coardelor } f:=f(); t:=t-f(t)/fd(t); calcul dupa metoda tagetelor } iter:=iter+; util abs(-t)<eps s-a atis precizia data } ed else f(a)*f()> } t:=b; aproimatia iitiala este capatul b } repeat :=-(b-)*f/(fb-f); calcul dupa metoda coardelor } f:=f(); t:=t-f(t)/fd(t); calcul dupa metoda tagetelor } iter:=iter+; util abs(-t)<eps; s-a atis precizia data } :=(+t)/2; writel('solutia ecuatiei date este =',::5); writel('dupa ',iter,' iteratii'); ed. Aplicarea metodei mite la determiarea tuturor soluiilor uei ecuaii eliiare Problem. S se elaboreze programul de determiare a tuturor soluiilor ecuaii eliiare y=cos, cu precizia ε= 3. Determiarea rdciilor ecuaiilor eliiare la calculator presupue urmtoarele: Separarea itervalelor ce coi soluii separate (vezi modulul corespuztor); Aplicarea metodei î studiu petru precizarea tuturor soluiilor cu precizia dat. Implemetarea programului este dat î cotiuare: program metoda_mita; var a,b,c,eps,,,2,h,y,y2,fa,fb,f,t:real; i,it:iteger; fuctio f(:real):real; f:=cos()-.*; fuctio fd(:real):real; fd:=-si()-.; fuctio prec(eps:real):iteger; calcularea umarului de zecimale dupa virgula } var k:iteger; k:=-; repeat eps:=eps*; k:=k+ util eps>; prec:=k write('dati valoarea lui a=>'); readl(a); write('dati valoarea lui b=>'); readl(b); write('dati valoarea pasului h=>'); readl(h); write('dati valoarea lui eps='); readl(eps); :=a; 2:=+h; y:=f(); while 2<b do y2:=f(2); if f()*f(2)< the Pagia 2di 37 Data:.6.29
ed. writel('pe itervalul [',::prec(eps),'; ',2::prec(eps),']'); fa:=f(); fb:=f(2); it:=; :=-(2-)*fa/(fb-fa); calcul solutie iitiala } f:=f(); if f(a)*f()<= the t:=; aproimatia iitiala este capatul a } repeat :=-(-)*f/(f-fa); calcul dupa metoda coardelor } f:=f(); t:=t-f(t)/fd(t); calcul dupa metoda tagetelor } it:=it+; util abs(-t)<eps s-a atis precizia data } ed else t:=2; aproimatia iitiala este capatul b } repeat :=-(2-)*f/(fb-f); calcul dupa metoda coardelor } f:=f(); t:=t-f(t)/fd(t); calcul dupa metoda tagetelor } it:=it+; util abs(-t)<eps; s-a atis precizia data } :=(+t)/2; write('solutia ecuatiei este =',::prec(eps)); writel(' dupa ',it,' iteratii'); :=2; 2:=2+h; y:=y2; Eemple. 2 2 -cos = (;), -3 2. 3 -si= -4 3. 2e +3+= 4. 3 4 +4 3 2 2 5= 5.,5 =(+2) 2 6. (+3) cos= 2π 2π 6. Metoda aproimaiilor succesive Fie f:[a, b] R, cotiu pe itervalul (a, b), cu f(a)f(b)<, deci are seme opuse la capetele itervalului, adic! α ( a, b), f ( α) = Puem ecuaia f()= sub forma =g() Deci trebuie determiat α ( a, b) cuα = g( α). O astfel de valoare se umete puct fi petru fucia g. Fie ( a, b) o prim aproimaie a lui. Costruim pe râd irul = g( ) 2 = g( )... k+ = g( ) (***) k Pagia 22di 37 Data:.6.29
Dac irul ( k ) este coverget, adic y= k α = g(α) adic este rdcia cutat. Geometric se poate reprezeta astfel: α = lim, atuci, trecâd la limit î (***) vom obie k y=g() y= y y=g() y 2 3... 4 2 Pseudocod citeste, r_it,, f //epresia fuciei f o dm eplicit () <- i <- eecut i <- i+ (i) <- f((i-)) pâ_câd (abs((i)-(i-)< )) sau (i>rit) dac i<rit atuci scrie i,, (i) altfel scrie NU s-a obiut precizia dorit program apro; var eps, : real; i, rit: iteger; : array[..] of real; fuctio g(: real): real; g := sqrt(4-l()) petru ecuatia 2 +l()-4= } write('aproimatia iitiala:');readl(); write('precizia:');readl(eps); write('umar maim de pasi:');readl(rit); [] := ; i := ; writel('i ', i, ' iteratii s-a obtiut solutia ', [i]:3:8); repeat i := i+; [i] := g([i-]); writel('i ', i, ' iteratii s-a obtiut solutia ', [i]:3:8) util (abs([i]-[i-])<eps) or (i>rit); if i<rit the writel('i ', i, ' iteratii s-a obtiut solutia ', [i]:3:8) else writel(' i ',rit,' iteratii NU s-a atis precizia ',eps:3:8); writel(' ultima valoare obtiuta este ',[i]:3:8) ed. Pagia 23di 37 Data:.6.29
Eemple: co()- = (, PI/2) = -8 y=.739854 47 pai 2si()- = (PI/2, PI) = -8 y=.89549427 44 pai 2 +l()-4 = (.5, 2) = -8 y=.84976 2 pai Obs. Aceast ultim ecuaie pus sub forma = 4 l este coverget ctre soluie, dar pus sub forma 2 4 = e, ceea ce se poate scrie (î Pascal) =ep(4-2 ) NU este coverget. Apare deci îtrebarea: cum alegem fucia g astfel îcât s fie coverget? TEOREM Fie ecuaia f() = (fucia f() este cotiu pe itervalul (a, b) i f(a)f(b)<). Puem ecuaia sub forma =g(). Procesul descris de metoda aproimiilor succesive este coverget ctre soluia a ecuiei dac g'() <, petru orice di itervalul (a, b) Cum procedm practic? Ecuaia f() = se îlocuiete cu ecuaia = q f(), ude q >, astfel ca g'() = q f'() < IV. REZOLVAREA SISTEMELOR DE ECUAII LINIARE Rezolvarea sistemelor cu u mare umr de ecuaii liiare reprezit uul di domeiile î care calculatoarele umerice i-au dovedit di pli eficiea. Problema rezolvrii sistemelor de ecuaii liiare este foarte des îtâlit î simularea umeric. Eumerm câteva situaii: iterpolare cu fucii splie cubice, rezolvarea sistemelor de ecuaii eliiare cu ajutorul metodelor iterative care au la baz liiarizarea ecuaiilor, discretizarea ecuaiilor difereiale ordiare cu codiii la limit, discretizarea ecuaiilor cu derivate pariale. Î mod corespuztor, a trebuit s fie puse la puct procedee umerice adecvate, atât petru reducerea umrului mare de operaii, cât i petru reducerea erorilor de calcul care cresc cu dimesiuile sistemului de ecuaii. Î cazul geeral, problema care trebuie rezolvat poate fi scris sub forma j= a ij j = b, i =, m i ude a ij R sut coeficiei, j, j =,..., sut ecuoscutele sistemului, iar b i sut termeii liberi. Vom distige trei situaii. a. Petru m < sistemul este subdetermiat, avem mai puie ecuaii decât ecuoscute. Î geeral, vor trebui alei m parametrii petru a obie soluie. b. Petru m = i deta sistemul este compatibil determiat. Sistemul are o soluie uic. Este cazul cel mai des îtâlit. Petru m = i deta = sistemul poate fi compatibil edetermiat, cu o ifiitate de soluii posibile, sau icompatibil, cu ici o soluie. c. Petru m > sistemul este supradetermiat, caz î care se caut o soluie care s verifice cel mai bie ecuaiile î sesul miimizrii reziduului 2 ( i ij j ). i= j= R = b a Pagia 24di 37 Data:.6.29
Nu trebuie uitat c la reprezetarea umerelor î calculator u putem reie decât u umr fiit de cifre, iar erorile de rotujire se propag. Se poate ajuge î situaia ca di cauza acestor erori, determiatul s devi egal cu zero sau s aib o valoare foarte mic î modul. Compleitatea implemetrilor prezete î bibliotecile matematice se datoreaz î mare parte tehicilor de evitare a acestei situaii, dar totodat i eforturilor de miimizare a memoriei utilizate i a timpului de calcul. Metodele de rezolvare a sistemelor de ecuaii liiare sut de dou tipuri: metode directe (sau metode de elimiare sau metode eacte), î care soluia este obiut î urma uui umr de operaii diaite cuoscut; metode iterative, care se bazeaz pe folosirea uei aproimaii iiiale ce se îmbutete de la o etap la alta.. Metode eacte a) Metoda lui CRAMER Metoda este idicat petru 4. Sistemul este A X = B cu det(a), caz î care soluia este uic sistemul este compatibil determiat. Dac det(a), eist A - (iversa matricii), care are proprietatea A - A = A A - = I (matricea uitate) Atuci, îmulid ecuaia la stâga cu A - se obie, pe râd A - A X = B A - A X = A - B I X = A - B Adic X = A - B soluia sistemului Dar A - = / A * ude A * matricea cu complemei algebrici rezult X = / A * B adic M = M 2 2 ude i sut determiaii obiui pri îlocuirea coloaei i cu coloaa termeilor liberi. Deci i i =, i =, Eemplu: 2 + 2-3 = 3 = 4 + 2 + 3 = 6 (, 3, 2) - soluia -2 + 2 +3 3 = 7 uses crt; cost =3; type matrice=array[..,..] of real; var a, asav:array[..,..] of real; b, :array[..] of real; Pagia 25di 37 Data:.6.29
perm:array[..] of iteger; i,j:iteger; det,deta:real; procedure chage(var a,b:iteger); var au:iteger; au:=a; a:=b; b:=au; procedure suma; var p:real; sig,i,j:iteger; p:=; sig:=; for i:= to do for j:=i to do if perm[i]>perm[j] the sig:=sig+; for i:= to do p:=p*a[i,perm[i]]; if sig mod 2= the det:=det+p else det:=det-p; procedure permuta(:iteger); var i:iteger; if = the suma else for i:= to do chage(perm[i],perm[]); permuta(-); chage(perm[i],perm[]); procedure refacere; var i,j:iteger; for i:= to do for j:= to do a[i,j]:=asav[i,j]; clrscr; writel('itoduceti matricea A'); for i:= to do gotoy(3,i+3); write(#86); gotoy(6*+4,i+3); write(#86); for i:= to do for j:= to do gotoy(6*j-,i+3); readl(a[i,j]); asav[i,j]:=a[i,j]; gotoy(6*+,); writel('itroduceti matricea B'); for i:= to do gotoy(6*+,i+3); write(#86); gotoy(6*+7,i+3); write(#86); for i:= to do Pagia 26di 37 Data:.6.29
ed. gotoy(6*+,i+3); readl(b[i]); for i:= to do perm[i]:=i; gotoy(,+5); writel('rezultat:'); det:=; permuta(); deta:=det; if deta= the writel('eroare-det(a)=') else for i:= to do refacere; for j:= to do a[j,i]:=b[j]; det:=; permuta(); [i]:=det/deta; writel(' b) Metoda (de elimiare) lui GAUSS [',i,']=',[i]:5:2); Cosiderm sistemul: A X = B cu det(a) Petru a descrie mai uor metoda vom cosidera cazul = 4. Deci sistemul ostru este: a +a 2 2 +a 3 3 +a 4 4 = b a 2 +a 22 2 +a 23 3 +a 24 4 = b 2 a 3 +a 32 2 +a 33 3 +a 34 4 = b 3 a 4 +a 42 2 +a 43 3 +a 44 4 = b 4 Presupuem a, î caz cotrar se schimb ître ele ecuaiile soluiile u se schimb. (a) Împrim prima ecuaie cu a i se obie: a2 a3 a4 b + 2 + 3 + 4 = adic a a a a + a + a + a = b (*) ude () () () () 2 2 3 3 4 4 a b a =, b =, j > () j () j a a (b) Se elimi di ecuaiile 2, 3, 4 îmulid pe râd ecuaia (*) cu a 2, a 3, a 4 i sczâd-o di ecuaiile 2, 3, 4. Vom obie sistemul: a + a + a = b Presupuem () () () () 22 2 23 3 24 4 2 a + a + a = b () () () () 32 2 33 3 34 4 3 a + a + a = b () () () () 42 2 43 3 44 4 4 ude a = a a a, b = b a b i, j 2 () () () () ij ij i j i i i () a22. Se repet etapele (a) i (b) petru sistemul obiut. Se obie: + a + a = b ude (2) (2) (2) 2 23 3 24 4 2 dup pasul (b) se obie sistemul (2) (2) (2) a33 3 + a34 4 = b3 ude (2) (2) (2) a + a = b 43 3 44 4 4 a a =, b =, j > 2 () () (2) 2 j (2) b2 2 j () 2 () a22 a22 a = a a a, b = b a b i, j 3 (2) () () (2) (2) () () (2) ij ij i2 2 j i i i2 2 Pagia 27di 37 Data:.6.29
Aalog se va obie: + a = b ude (3) (3) 3 34 4 3 apoi, elimiâd 3 (3) (3) a = b ude Acum: 44 4 4 (3) 4 (4) 4 b (3) 4 a44 a a =, b =, j > 3 (2) (2) (3) 3 j (3) b3 3 j (2) 3 (2) a33 a33 a = a a 3 a3 i, j 4 (3) (2) (2) (3) ij ij i j b = = apoi se calculeaz pe râd: = b a (3) (2) 3 3 34 4 = b a a (2) (2) (2) 2 2 24 4 23 3 = b a a a () () () () 4 4 3 3 2 2 Î geeral, petru u sistem A X = B cu det(a) dup k trasformrise obie u sistem echivalet: A (k) X = B (k), cu A () =A, B () =B iar petru k 2 elemetele se calculeaz astfel: ( k ) aij i k ( k ) aij = i k, j k ( k ) a ( k ) i, k ( k ) aij a ( ) k, j i, j k k ak, k ( k ) bi i k ( k ) ( k ) bi = ( k ) ai, k ( k ) bi b ( k ) k i k ak, k Eemplu: +2 2-3 +2 4 =2 2-2 +3 3-4 =- +3 2 + 3 + 4 =4 care are soluia (, 2, -, -2) - +2 2 +4 3 + 4 =-3 Metoda elimirii a lui Gauss cost î a obie zerouri succesiv, îtâi pe prima coloa (sub coeficietul a ), apoi pe a doua coloa (sub coeficietul a 22 ) s.a.m.d., pe ultima liie a matricei A rmââd doar coeficietul a (evidet modificat de operaiile de elimiare aterioare). Aceasta revie la a reduce matricea A la o matrice superior triughiular, iar sistemul la forma a a 2... a b a () 22... a () 2 2 b () 2......a (i-) ij... a (i-) i i = b (i-) i...... a (-) b (-) Idicii superiori idic etapa î care a fost obiut elemetul. Petru a obie zerourile de sub diagoala pricipal, se folosesc operaii simple de îmulire a uei liii cu u multiplicator i de Pagia 28di 37 Data:.6.29
scdere di alt liie. Spre eemplu, petru a obie zerouri pe prima coloaa, di liia i se scade prima liie îmulit cu multiplicatorul m i, obiâdu-se a i () = a i - m i a = de ude se deduce m i = a i /a Repetâd procedeul petru i = 2,, se obi elemete ule pe coloaa îtâi î aceast prim etap. Evidet, petru a putea opera, trebuie ca a. Mai mult, se recomad ca a s fie î modul cât mai mare posibil, deoarece î acest mod, erorile de rotujire sut reduse. Elemetul a ii plasat pe diagoala pricipal se umete pivot. Obierea uui pivot cu modul cât mai mare este posibil pri schimbri de liii i coloae care u afecteaz zerourile deja produse, adic pivotul se poate alege ditre elemetele de sub i/sau la dreapta poziiei de pe diagoala pricipal a pivotului. Î fucie de umrul de elemete ditre care este selectat, pivotul poate fi parial, câd se alege cel mai mare î modul ditre elemetele de pe coloaa pivotului, sub diagoala pricipal, sau total, câd se alege cel mai mare î modul ditre toate elemetele coiute î liii i coloae care, iterschimbate, u modific zerourile deja obiute. Pseudocod citete, a(i,j), i=,, j=,+ petru i=, eecut schimb(i, cod) dac cod<> atuci scrie sistem icompatibil sau edetrmiat ; eit redus(i) } rezolv scrie (i), i=, procedura maim(i, k) //k furizeaz ragul ecuaiei cu coeficietul lui i cel mai mare î // valoare absolut m <- a ii k= <- i petru k <- i, eecut dac a ki >m atuci m <- a ki k <- k } } procedura schimb(i, cod) //face ca ecuaia de rag i s aib coeficietul lui i mai mare î valoare //absolut decât coeficieii lui i di ecuaiile de rag i+, i+2,, maim(i, k) dac a(k, i)= atuci cod= altfel cod= //schimb liia i cu liia k petru j <- i,+ eecut t <- a(k, j); a(k, j) <- a(i, j); a(i, j) <- t} } } procedura redus(i) //imparte ecuaia de rag i cu a(i, i) petru j <- i+, + eecut a(i, j) <- a(i, j)/a(i, i) Pagia 29di 37 Data:.6.29
} a(i, i) <- petru k <- i+, eecut petru j <- i+, + eecut a(k, j) <- a(k, j)- a(i, j)a(k, i) a(k, i) <- } procedura rezolv () <- a(, +) petru i <- -, eecut s <- petru j <- i+, eecut s <- s+a(i, j)(j) (i) <- a(i, +)-s } } rezolvarea sistemelor pri metoda de ELIMINARE a lui GAUSS } Program gauss; Uses WiCrt; Cost Nma=; Maim ecuatii cu ecuoscute - se poate modifica } Type Matrice=Array[..Nma,..Nma+] Of Real; a[i,+] este termeul liber b[i] al ecuatiei i } Sir=Array[..Nma] Of Real; Var a:matrice; matricea coloaa a solutiilor } :Sir; i,j,cod,:iteger; Ch:Char; Procedure ScrieMat; Var i,j:..nma+; For i:= To Do WriteL; For j:= To Do Write(a[i,j]:8:3); Write(a[i,+]:2:3) Ed; WriteL;WriteL Ed; Procedure Maim(i:Iteger;Var Rag:Iteger); Rag - furizeaza ragul ecuatiei cu coeficietul lui Xi } cel mai mare i valoare absoluta } Var m:real; k:iteger; m:=abs(a[i,i]); Rag:=i; For k:=i To Do If Abs(a[k,i])>m The m:=abs(a[k,i]); Rag:=k Ed Ed; Procedure Schimb(i:Iteger;Var Cod:Iteger); face ca ecuatia de Rag i sa aiba coeficietul lui Xi mai } mare i valoare absoluta decit coeficietii lui Xi di } Pagia 3di 37 Data:.6.29
ecuatiile de Rag i+,i+2,..., } Var t:real; Rag,j:Iteger; Maim(i,Rag); If a[rag,i]= The Cod:= daca coeficietul Maim este =>toti sit = deci } sistemul u se poate rezolva (pivotul = ) } else se face schimbarea ecuatiilor i cu Rag } Cod:=; For j:=i To + Do t:=a[rag,j]; a[rag,j]:=a[i,j]; a[i,j]:=t Ed Ed; Ed; Procedure Redus(i:Iteger); Var j,k:iteger; imparte ecuatia i cu a[i,i] } For j:=i+ To + Do a[i,j]:=a[i,j]/a[i,i]; a[i,i]:=; trasforma toti coeficietii de deasupra diagoalei } For k:=i+ To Do For j:=i+ To + Do a[k,j]:=a[k,j]-a[i,j]*a[k,i]; si ii auleaza pe cei de sub diagoala } a[k,i]:= Ed Ed; Procedure Rezolv; calculeaza solutiile pri elimiare iversa } Var i,j:iteger; s:real; []:=a[,+]; For i:=- DowTo Do s:=; For j:=i+ To Do s:=s+a[i,j]*[j]; [i]:=a[i,+]-s Ed Ed; ClrScr; Write('dimesiue sistem:');readl(); For i:= To Do For j:= To Do Write('a[',i,',',j,']='); ReadL(a[i,j]) Ed; Write('b[',i,']=');ReadL(a[i,+]) Ed; ClrScr; WriteL('Sistemul iitial'); ScrieMat; Ch:=ReadKey; DetA:=; For i:= To Do Schimb(i,Cod); If Cod<> Pagia 3di 37 Data:.6.29
The WriteL('!!!!!'); WriteL('sistem INCOMPATIBIL sau NEDERMINAT'); Halt() Ed Else Redus(i); WriteL('!!! PASUL:',i); ScrieMat; Ch:=ReadKey Ed; WriteL; ClrScr; WriteL('*** SOLUTIA ***');WriteL; Rezolv; For i:= To Do WriteL('[',i:,']=',[i]:8:3); WriteL; Ed. Petru a observa ifluea alegerii pivotului asupra preciziei rezultatelor, refacem calculele de mai sus fr a mai schimba liiile 2 cu 3 petru a aduce valoarea.75 pe poziia pivotului î etapa a doua. Se va obie : i soluiile Pagia 32di 37 Data:.6.29
Se observ apariia uor valori diferite, comparativ cu valorile obiute î cazul aterior. Numrul de operaii ecesare petru obierea soluiei pri procedeul de elimiare gaussia se calculeaz uor. Evidet, u lum î cosiderare i operaiile legate de permutarea elemetelor î vederea gsirii pivotului parial sau total, deoarece acestea depid de fiecare matrice î parte. De regul, se cosider c împrirea reprezit o sigur operaie, î timp ce o aduare i o îmulire formeaz împreu tot o operaie (aproimativ acelai timp de calcul pe calculator). Amitidu-e c operaiile se efectueaz cu elemetele matricei etise A, de dimesiui ( + ), vom avea de efectuat îtr-o etap s, -s împriri petru a obie multiplicatorii m i,s. Numrul de aduri i îmuliri este egal cu produsul umrului de valori luate de idicii i, j, adic (-s)(+-s). Rezult umrul de operaii la elimiarea Gauss Acest umr este foarte mic (îcepâd cu >= 3) fa de! operaii cerute de regula lui Cramer (cu determiaii calculai dup miori). La aceste operaii se adaug îc aproimativ +(-)+(-)/2 = 2 /2+/2 operaii petru retrosubstituire. Rezult umrul total de operaii petru elimiarea gaussia 2. Metode iterative Pricipiul geeral al metodelor iterative poate fi prezetat pri aalogie cu metoda iteraiei simple de rezolvare a ecuaiei F() = î care ecuaia origial este trascris ca = f() ce coduce la procedeul iterativ k+ = f( k ) Î cazul sistemelor liiare A X = B vom fora o descompuere a matricei A a) Metoda lui JACOBI (metoda iteraiilor simultae) Vom cosidera, ca i pâ acum, u sistem de forma j= a = b, i =, ij j j adic A X = B, cu det(a) matrice esigular Vom presupue c a ii, i=, Form descompuerea matricei A sub forma A = D + (-T) + (-S) adic a a2 L a a L L a2 L a a2 a22 a 2 a22 a2 a2 A L L L L = = + + M M M M a a2 L a L a a a2 L L Pagia 33di 37 Data:.6.29
adic, sub form matricial (D-T-S) X = B deci D X=(T+S) X + B Î acest fel, petru orice elemet a ii, i=, avem o metod iterativ ( k + ) ( k ) ii i ij j i j= j i a = a + b, i =, 2, L, k cu () i, i =, aproimaiile iiiale Se obie metoda iterativ JACOBI a b = ( ) +, i =, 2, L, k ( k + ) ij ( k ) i i j j= aii aii j i Pseudocod citete, a(i,j), i=,, j=,+ citete (i), i=, petru k=, 7 eecut //petru 7 iteraii petru i=, eecut y(i) <- a(i, +)/a(i,i) petru j=, eecut dac j i y(i) <- y(i)- a(i,j)/a(i,i) (j) } petru j <-, eecut (j) <- y(j) } petru i <-, eecut scrie (i) rezolvarea sistemelor pri metoda ITERATIVA J A C O B I } Program Jacobi; Cost NMa=; Nr_Iteratii=7; Type Matrice=Array[..NMa,..NMa+] Of Real; Sir=Array[..NMa] Of Real; Var a:matrice; [i] - aproimatia veche } y[i] - aproimatia oua care se calculeaza },y: Sir; i,j,k,: Iteger; c: Char; Procedure ScrieMat; Var i,j:..nma+; For i:= To Do WriteL; For j:= To Do Write(a[i,j]:8:3); Write(a[i,+]::3); Write([i]:3:5,y[i]::5) Ed; WriteL; WriteL Ed; Write('dimesiue sistem:');readl(); For i:= To Do Pagia 34di 37 Data:.6.29
For j:= To Do Write('a[',i,',',j,']=');ReadL(a[i,j]); Ed; Write('b[',i,']=');ReadL(a[i,+]) Ed; WriteL('aproimatia iitiala'); For i:= To Do Write('[',i,']=');ReadL([i]); y[i]:= Ed; WriteL('SISTEMUL INITIAL SI APROXIMATIA INITIALA'); ScrieMat; vom face 7 iteratii - se poate modifica } For k:= To Nr_Iteratii Do petru fiecare ecuatie se face calculul aproimatiei } For i:= To Do y[i]:=a[i,+]/a[i,i]; For j:= To Do If j<>i The y[i]:=y[i]-a[i,j]/a[i,i]*[j]; Ed; WriteL('!!! ITERATIA:',k);ScrieMat; oua aproimatie devie cea cureta } For i:= To Do [i]:=y[i]; Ed; For i:= To Do Write([i]:9:5); WriteL; Ed. b) Metoda lui GAUSS-SEIDEL (metoda aproimaiilor succesive) Metoda reprezit o îmbutire a metodei JACOBI î sesul c utilizeaz u doar aproimaiile ( k ) ( k ) petru calculul lui + ( k ), ci i compoetele + cu i>j, adic acele compoete care au fost i deja calculate î aproimaia curet. Î aceste codiii se poate scrie i i ( k + ) ( k + ) ( k ) ii i ij j ij j i j= j= i+ L a = a a + b, i =, 2,, k =, 2,..., deci metoda iterativ GAUSS-SEIDEL se poate descrie pri a a b = ( ) ( ) +, i =, 2,, k =, 2,..., i ( k + ) ij ( k + ) ij ( k ) i i j j j= aii j= i+ aii aii L Pseudocod citete, a(i,j), i=,, j=,+ citete (i), i=, petru k=, 7 eecut //petru 7 iteraii petru i=, eecut y(i) <- a(i, +)/a(i,i) petru j=,i- eecut y(i) <- y(i)- a(i,j)/a(i,i) y(j) petru j=i+, eecut y(i) <- y(i)- a(i,j)/a(i,i) (j) (i) <- y(i)//oua aproimaie devie cea curet } } petru i <-, eecut scrie (i) j Pagia 35di 37 Data:.6.29
Program GAUSS_SEIDEL; Cost NMa=; Nr_Iteratii=; Type Matrice=Array[..NMa,..NMa+] Of Real; Sir=Array[..NMa] Of Real; Var a:matrice; [i] - aproimatia veche } y[i] - aproimatia oua care se calculeaza },y:sir; i,j,k,:iteger; Procedure ScrieMat; Var i,j:..nma+; For i:= To Do WriteL; For j:= To Do Write(a[i,j]:8:3); Write(a[i,+]::3); Write([i]:3:5,y[i]::5) Ed; WriteL;WriteL Ed; Write('dimesiue sistem:');readl(); For i:= To Do For j:= To Do Write('a[',i,',',j,']=');ReadL(a[i,j]); Ed; Write('b[',i,']=');ReadL(a[i,+]) Ed; WriteL('aproimatia iitiala'); For i:= To Do Write('[',i,']=');ReadL([i]); y[i]:= Ed; WriteL('SISTEMUL INITIAL SI APROXIMATIA INITIALA'); ScrieMat; vom face 7 iteratii - se poate modifica } For k:= To Nr_Iteratii Do petru fiecare ecuatie se face calculul aproimatiei } For i:= To Do y[i]:=a[i,+]/a[i,i]; For j:= To i- Do y[i]:=y[i]-a[i,j]/a[i,i]*y[j]; For j:=i+ To Do y[i]:=y[i]-a[i,j]/a[i,i]*[j]; Ed; WriteL('!!! ITERATIA:',k);ScrieMat; oua aproimatie devie cea cureta } For j:= To Do [j]:=y[j]; Ed; For i:= To Do Write([i]:9:5); WriteL; Ed. Obs. Cele dou metode iterative dau rezultate (sut covergete) doar petru sisteme î care matricea coeficieilor (a ij ) este de u tip special i aume coeficieii diagoali sut domiai. Eemplu: + 2 +2 3 = 3 5 2 +3 3 = 8 - + 2 +7 3 = 7 Pagia 36di 37 Data:.6.29
() () () cu aproimaia iiial = 2, = 3, = 5 furizeaz 2 3 SISTEMUL INITIAL SI APROXIMATIA INITIALA.. 2. 3. 2... 5. 3. 8. 3.. -.. 7. 7. 5..!!! ITERATIA:.. 2. 3. 2. -.. 5. 3. 8. 3. -.4 -.. 7. 7. 5..2!!! ITERATIA:2.. 2. 3. -..2. 5. 3. 8. -.4.88 -.. 7. 7..2.457!!! ITERATIA:3.. 2. 3..2.286. 5. 3. 8..88.97257 -.. 7. 7..457.433!!! ITERATIA:4.. 2. 3..286.88. 5. 3. 8..97257.9974 -.. 7. 7..433.64!!! ITERATIA:5.. 2. 3..88.3. 5. 3. 8..9974.99962 -.. 7. 7..64.7!!! ITERATIA:6.. 2. 3..3.2. 5. 3. 8..99962.99996 -.. 7. 7..7.!!! ITERATIA:7.. 2. 3..2.. 5. 3. 8..99996.99999 -.. 7. 7...!!! ITERATIA:8.. 2. 3.... 5. 3. 8..99999. -.. 7. 7...!!! ITERATIA:9.. 2. 3.... 5. 3. 8... -.. 7. 7...!!! ITERATIA:.. 2. 3.... 5. 3. 8... -.. 7. 7...... Bibliografie. MATEESCU G-D, MATEESCU I-C, Aaliz umeric, Editura Petrio, 995 2. COMAN, FRENTIU Aaliz umeric, 992 3. BERBENTE C, MITRAN S, ZANCU S Metode umerice, Editura Tehic, 997 4. *** - Materiale preluate de pe Iteret Pagia 37di 37 Data:.6.29