Sunteți pe pagina 1din 25

METODE NUMERICE DE CALCUL

Tema 1. Erori de calcul numeric...................................................................................................... (2 ore) Tema 2. Calcularea numeric a irurilor i seriilor ......................................................................... (2 ore) Tema 3. Rezolvarea numeric a ecuaiilor neliniare i transcendente ......................................... (4 ore) Tema 4. Aproximarea funciilor de o variabil............................................................................... (4 ore) Tema 5. Derivarea numeric a funciilor ........................................................................................ (2 ore) Tema 6. Integrarea numeric a funciilor ....................................................................................... (4 ore) Tema 7. Calcularea numeric a determinanilor............................................................................ (2 ore) Tema 8. Rezolvarea sistemelor de ecuaii liniare .......................................................................... (6 ore) Tema 9. Rezolvarea numeric a ecuaiilor difereniale ................................................................. (6 ore) Tema 10. Rezolvarea numeric a ecuaiilor difereniale n derivate pariale............................... (4 ore) Tema 11. Metode de optimizare .................................................................................................... (4 ore) Tema 12. Exemple de modelare matematic i rezolvare numeric a problemelor .................... (4 ore) TOTAL ORE: 44 ore

Tema 1. Erori de calcul numeric. (2 ore)


a) Surse de erori: erori inerente, erori de trunchiere, erori de rotunjire. Erori absolute i relative. b) Propagarea erorilor la adunare, scdere, nmulire i mprire. c) Evaluarea erorii n calcularea expresiilor matematice. a) Surse de erori. Erorile inerente sunt erorile legate de cunoaterea aproximativ a unor valori provenite din msurtori sau din faptul c avem de-a face cu numere iraionale (algebrice sau transcendente: numerele .a. ). Evident, rezultatul oricror calcule depinde i de precizia datelor introduse iniial. Ca erori inerente pot fi considerate i erorile de conversie fcute la trecerea n baza 2 a unor numere care se introduc n memoria calculatoarelor numerice actuale. Spre exemplu, numrul 0.1 reprezentat printr-un numr finit n baza 10, devine o fracie zecimal periodic n baza 2 ( ). Erorile de metod sau erorile de trunchiere sunt provenite din aproximaiile fcute la deducerea formulelor de calcul. Spre deosebire de erorile inerente, erorile de metod pot fi reduse, n principiu, orict de mult. Erorile de rotunjire sunt legate de posibilitile limitate de reprezentare a numerelor n calculatoarele numerice. n general, orice calculator poate reprezenta numerele cu un numr redus de cifre semnificative, depinznd de lungimea cuvntului (numrul de bii) utilizat la stocarea unui numr. n mod curent se lucreaz cu un echivalent de circa 7 cifre semnificative n simpl precizie i de circa 15 cifre semnificative n dubl precizie. Dup cum se tie, n memoria intern a calculatoarelor actuale se folosete reprezentarea n virgul mobil, n forma normalizat. Astfel, orice numr real x se scrie: | | unde m este un numr real denumit mantis, b > 0 (b 1) este baza sistemului de numeraie utilizat, iar n (numr ntreg) este exponentul. n forma normalizat, mantisa este cuprins n intervalul [b-1, 1), unde b-1 |m|< 1. Singura excepie de la aceast regul de reprezentare este numrul zero. n consecin, un numr real cu mai multe cifre semnificative este retunjit la un numr de cifre maxim. Acest lucru se realizeaz prin rotunjirea mantisei. Alte rotunjiri se efectueaz n decursul operaiilor. n general, notnd cu valoarea exact a numrului i cu valoarea calculat (aproximativ), eroarea absolut se definete ca diferena dintre valoarea exact i cea aproximativ: . Raportu . Fie t numrul de cifre semnificative. Dac lucrm n baza 10 (b = 10), atunci un numr x a crui valoare o presupunem inial cunoscut cu exactitate, se va scrie: | || | [ unde g conine cifrele care nu pot fi incluse n mantisa m. Rotunjirea se face de obicei simetric, adic se | | nlocuete | | dac | | dac | | . n acest fel, marginea erorii relative este: | | | | | | . Erorile cu marginea dat de formula de mai sus se fac la introducerea numerelor reale n memoria calculatorului numeric. Ele afecteaz rezultatele n funcie de operaiile la care sunt supuse valorile introduse. se numete eroare relativ, notat deseori cu x:

b) Propagarea erorilor n calcule. Propagarea erorilor la nmulire. Vom considera dou numere x i y, introduse cu erorile ex i ey : i . Presupunem c se efectueaz produsul numerelor: , ( ) unde s-a neglijat produsul considerat ca avnd un ordin de mrime suficient de mic. Rezult eroarea la . Rezult c la nmulire erorile relative introduse iniial se adun. n afar de aceste erori, pot aprea ns noi erori, deoarece produsul poate avea, la rndul su, un numr de cifre semnificative mai mare dect cel admis (notat cu t), necesitnd o nou rotunjire (simetric). Notnd cu aceast nou eroare, vom obine eroarea relativ total la nmulirea a dou numere: , iar ca margine a erorii: | | | | | | | | . Desigur aceast evaluare este acoperitoare deoarece erorile nu se adun, ci se compun dup legi mai complicate (probabilistice). Propagarea erorilor la mprire. Dac considerm i , atunci la mprire vom scrie: ( ) ( ) ( ) nmulire unde am neglijat termenii de grad superior lui 2 n i . S-a folosit dezvoltarea n serie Tylor pentru . rezult c eroarea relativ la mprire, datorit erorilor de reprezentare n calculator ( i ), este :

adic este egal cu diferena erorilor relative introduse iniial n valorile numrtorului i numitorului. La acestea se adaug eroarea de rotunjire la prezentarea raportului , pe care o vom nota cu , astfel nct eroarea relativ total la mprirea a dou numere x i y este: . Propagarea erorilor la adunare. n acest caz, suma a dou numere este , astfel nct eroarea relativ la sumare este :

adic o sum ponderat a erorilor introduse la reprezentarea n calculator a cantitii sumate. i n acest caz se introduce o eroare suplimentar la reprezentarea sumei , a crei valoare relativ o vom nota cu . Ca urmare, eroarea relativ la sumare, , va fi : Exemplu: Scriei eroarea total la calculul expresiei . Rezult : cu marginea : || | | [ ] | | 3

c) Evaluarea erorii n calcularea expresiilor matematice. Ca rcomandare general, n calculul numeric trebuie studiat i propagarea erorilor. n anumite cazuri, acumularea erorilor poate conduce la rezultate complet eronate. Pentru a ilustra aceast posibilitate, s considerm calculul integralei : O modalitate de calcul o reprezint utilizarea unei relaii de recuren (recursie): plecnd de la valoarea . Funcia recursiv ce implementeaz aceast metod n Delphi 7 este: Function Metoda1(n : integer) : single; begin if (n = 0) then Metoda1 := 1 - 1 / exp(1) else Metoda1 := 1 - n * (Metoda1(n - 1)); end; Se observ c, pentru n = 14, se obine o valoare negativ a integralei, ceea ce nu este posibil, funcia integrat fiind pozitiv din intervalul [0, 1]. Rezult c valorile obinute sunt eronate, ncepnd cu o anumit valoare a lui n. Explicaia o constituie faptul c valoarea integralei se calculeaz cu o eroare care este amplificat prin aplicarea formulei de recuren astfel c, la calculul eroarea este : Pentru a obine o valoare corect n cazul indicilor n mari se aplic formula sub forma :

n care erorile sunt reduse la fiecare etap. Prin urmare, plecnd de la un N suficient de mare eroarea introdus din necunoaterea valorii va fi redus, astfel nct s obinem rezultate corecte. Observnd c valoarea integralei scade cu n, vom alege N=50 i vom aproxima , calculnd integralele de indice mai mic din ce n ce mai precis. Funcia recursiv este : Function Metoda2(n : integer) : single; begin if (n = 50) then Metoda2 := 0 else Metoda2 := 1/n * (1 - Metoda2(n + 1)); end; Tabelul cu rezultatele calculelor pentru n = 14 sunt: Compilatorul Tipul de date metoda 1 metoda 2 Single: -797,597290039063 0,0669476985931396 Borland Delphi 7 Double: 0,0627310804238732 0,0669477025756157 Extended: 0,0627321673911394 0,0669477025756157 Single: Turbo Pascal 7.1 Double: Extended: Float: Visual Studio C# Double: 4

Visual Studio C++ Turbo C++ C++ Bulder

Float: Double: Float: Double: Float: Double: Extended:

Tema 2. Calcularea numeric a irurilor i seriilor (2 ore)


a) Calcularea numeric a sumelor i produselor. Calcularea numeric a expresiilor matematice cu sume i produse imbricate. b) Calcularea numeric a seriilor Taylor. c) Exemple de calculare a unor funcii speciale. d) Exemple de calculare a funciilor trigonometrice, exponeniale, logaritmice. a) Calcularea numeric a sumelor i produselor. Calcularea numeric a expresiilor matematice cu sume i produse imbricate. Fie irul de numere reale: . Cu ajutorul lor putem s formm irurile:

................................... ................................... Dac irul este convergent i are limita s, atunci putem scrie : . Se obinuiete a scrie aceast egalitate astfel: . Partea dreapt a egalitii respective se numete serie i operaia de adunare reprezentat de o infinitate de ori capt astfel un sens. Rezultatul acestei operaii care este numrul s se numete suma seriei. O serie se noteaz astfel:

Numerele se numesc termenii seriei iar se numesc irul sumelor pariale ale seriei Spunem c seria este converjent, divergent sau oscilant, dup cum irul sumelor pariale este convergent (are o limit), divergent (are o limit infinit) sau oscilant (nu are limit sau are mai multe puncte limit). Teorem: O condiie necesar ca seria s fie convergent este ca irul format cu termenii seriei s fie convergent ctre 0. Exemplu: Numrul e este definit ca sum a seriei: ( suma seriei ( ) ( ) 5 ) . Fie c limita irului este (

) . S considerm mai nti de toate numrul e ca criteriul raportului,

care este convergent deoarece, dup

Dac notm [ . Pentru avem ] [

i ]. Deci,

rezult c

. Dac gsim termeni, observm c : sau , cu . n Delphi 7

o limit superioar a erorii pe care o facem asupra lui e oprindu-ne la primii , deci rezult c

. Pentru a calcula valoarea lui e cu 15

zecimale exacte, trebuie s calculm suma a cel puin 17 termeni: : funciile sunt: function factorial(n: integer): integer; begin if (n = 1) then factorial := 1 else factorial := n * factorial(n - 1); end; function fe(n: integer): extended; begin if (n = 0) then fe := 1 else begin fe := 1/factorial(n) + fe(n - 1); end; end; n final trebuie s obinem .

b) Calcularea numeric a seriilor Taylor. n matematic, o serie Taylor este o reprezentare a unei funcii ca o sum infinit de termeni calculai din valorile derivatelor acelei funcii ntr-un punct i poate fi privit ca limit a polinoamelor Taylor. n matematic se demonstreaz c orice funcie continu poate fi reprezentat astfel: , unde: reprezint polinomul lui Taylor de gradul n; reprezint restul. este aproximativ egal cu dar exist totui o diferen mic. Aceasta este restul Polinomul lui Taylor de grad pentru un punct este:

adic: unde este factorialul lui i este derivata de ori a funciei n punctul . Primul termen al seriei rezult din derivata zero a funciei , care este prin definiie nsi, i i 0! Sunt amndou 6

prin definiie 1. Cu ct

este mai aproape de

cu att

este mai aproape de

, adic

Restul n formula lui Lagrange are forma: = i restul n formula lui Cauchy are forma: = Pentru cazul particular cnd , unde este cuprins ntre se obine formula lui MacLaurin: i ; , unde este cuprins ntre i ;

adic:

c) Exemple de calculare a unor funcii speciale. Problema 1: S se dezvolte n serie Taylor funcia subprogramul respectiv n Delphi 7. Rezolvare: Conform formulei lui MacLaurin calculele urmtoare : 1) 2) ( ) , , , , , . , unde efectum , pentru i . Creai

3) 4) 5) ...................................................................... Deci Reprezentarea funciei ca sum este:

Deoarece n aceast problem se cere de calculat o sum cu un numr infinit de termeni, se introduce noiunea de eroare (sau precizie), n baza creia avem posibilitatea de a limita numrul de termeni care se calculeaz n sum. De regul n problemele de acest tip termenii se sumeaz pn cnd valoarea curent (de obicei notat cu vc) sau diferena absolut dintre valoarea curent i cea precedent (notat n Delphi | |) devine mai mic dect precizia . Subprogramul creat n Delphi 7 este: Procedure Polinom1(x, eps: extended; var rez: extended); var vc, vp, p: extended; i, k: integer; 7

begin vc:=1; k:=1; repeat p:=x; vp:=vc; for i:=1 to k do p:=p*x; vc:=vc+p; k:=k+1; until abs(vc-vp) < eps; rez:=vc; end; Problema 2: S se dezvolte n serie Taylor funcia subprogramul respectiv n Delphi 7. Rezolvare: Conform formulei lui MacLaurin calculele urmtoare : 1) 2) ................................... n) ................................... i deci . , , , . Fromula de dezvoltare n serie Maclaurin este: pentru i . Creai

efectum

Subprogramul creat n Delphi 7 este: function ExpLaPutereX(x, eps: extended): extended; var s, p: extended; i, j, f: integer; begin s:=1; i:=1; repeat p:=1; f:=1; for j:=1 to i do begin p:=p*x; f:=f*j; end; s:=s+p/f; i:=i+1; until abs(p/f)<= eps; ExpLaPutereX:=s; end;

Problema 3: s se dezvolte n serie Taylor funcia subprogramul respectiv n Delphi 7. Rezolvare: Conform formulei lui MacLaurin calculele urmtoare : 1) , 2) 3) 4) 5) ...................................................................... , iar pentru Tayor asociat este Subprogramul n Delphi 7 este: Function SinMetoda1(x,eps:extended):extended; var s, p, f, TC: extended; j, i, k: integer; begin s:=x; i:=1; repeat P:=1; for j:=1 to (2*i+1) do P:=P*x; f:=1; for k:=1 to(2*i+1) do f:=f*k; if odd(i) then TC:=-P/f else TC:=P/f; s:=s+TC; i:=i+1; until (abs(TC)<=eps); SinMetoda1:=s; end; Dac vom reprezenta grafic funcia obinem

pentru

. Creai

efectum

, , , , i . Deci, seria

Din calculele de mai sus observm c derivatele funciei sunt i . Sub form de sum putem scrie: .

i irul sumelor pariale ale seriei

, atunci vom observa c seriile taylor se apropie din ce n ce mai mult de funcia i aproximrile

corect, cu ct crete gradul. Imaginea de mai jos demonstreaz graficul funciei Taylor, cu polinomul de grad 1, 3, 5, 7, 9, 11 i 13:

Aceast metod de calculare a funciei se observ c pentru valoare a lui

este foarte nesigur. Din ecuaia sumei:

i dac se calculeaz

atunci pentru ultima

se obine raportul

, ceea ce reprezint mprirea a dou numere foarte

mari, iar calculele de asemenea gen efectuate n calculatorul numeric sunt nsoite de erori de calcul de asemenea foarte mari. Pentru a simplifica calculele se poate de folosit o alt metod de calculare a funciei . Din formula sumei se observ c termenul curent (notat TC) se poate deduce din termenul precedent (notat TP). Dac efectum raportul , atunci obinem:

10

Deci, putem scrie:

Subprogramul n Delphi 7 este: function SinMetoda2(x:extended;eps:extended):extended; var TC, TP, s:extended; n:integer; begin TP:=x; s:=x; n:=1; repeat TC:=-TP*sqr(x)/2/n/(2*n+1); s:=s+TC; TP:=TC; n:=n+1; until abs(TC)<=eps; SinMetoda2:=s; end; Problema 4: s se dezvolte n serie Taylor funcia subprogramul respectiv n Delphi 7. Rezolvare: Conform formulei lui MacLaurin calculele urmtoare : 1) , 2) 3) 4) 5) ...................................................................... Deci, seria Tayor asociat este este: . pentru i . Creai

efectum

, , , ,

. Reprezentarea funciei ca sum

11

Subprogramul n Delphi 7 este: Function SinMetoda1(x,eps:extended):extended; var s, p, f, TC: extended; j, i, k: integer; begin s:=x; i:=1; repeat P:=1; for j:=1 to (2*i+1) do P:=P*x; f:=1; for k:=1 to(2*i+1) do f:=f*k; if odd(i) then TC:=-P/f else TC:=P/f; s:=s+TC; i:=i+1; until (abs(TC)<=eps); SinMetoda1:=s; end; Problema 5: s se dezvolte n serie MacLaurin funcia subprogramul respectiv n Delphi 7. Rezolvare: 1) , 2) , 3) , 4) , 5) , ...................................................................... Deci . Fromula de dezvoltare n serie Maclaurin este: , unde , unde Creai

Subprogramul creat n Delphi 7 este: function LogNatural(x, eps: extended): extended; var s, sf, v, p: extended; i, j: integer; begin s:=0; i:=1; repeat p:=1; sf:=s; for j:=1 to i do p:=p*x; if odd(i) then v := p/i else v := -p/i; s:=s+v; i:=i+1; until abs(s-sf)<= eps; LogNatural:=s; end; 12

d) Exemple de calculare a funciilor trigonometrice, exponeniale, logaritmice. Dezvoltai n serie Taylor urmtoarele funcii reieind din exemplele de mai sus i scriei subprogramale pentru fiecare exemplu n Delphi: a) b) c) d) e) ; ; ; ; Rezolvare: a) Reieind din exemplul i obinem: . Reprezentarea funciei ca sum este: b) Reieind din exemplul i obinem: . Reprezentarea funciei ca sum este: c) Reieind din exemplul Taylor i obinem: cu , unde | | . cu , unde | | . , nlocuim pe cu n polinomul de dezvoltare n serie Taylor ;

, nlocuim pe

n polinomul de dezvoltare n serie Taylor

, nlocuim pe

n polinomul de dezvoltare n serie .

d) Reieind din exemplul cu , obinem:

, i nmulind fiecare termen din aceast sum

e) Pentru a dezvolta n serie Taylor funcia , putem utiliza formula . Reieind dina aceast formul deducem c: . Respectiv, dac nlocuim pe cu n polinomul de dezvoltare n serie Taylor: atunci obinem: ,

13

Tema 3. Rezolvarea numeric a ecuaiilor neliniare i transcendente (4 ore)


a) b) c) d) e) f) g) Metode analitice, grafice i numerice de localizare a soluiilor ecuaiilor neliniare. Metoda njumtirii intervalului. Descrierea algoritmului i implementarea lui ntr-un subprogram. Metoda coardelor. Descrierea algoritmului i implementarea lui ntr-un subprogram. Metoda Newton. Descrierea algoritmului i implementarea lui ntr-un subprogram. Metoda iterativ. Descrierea algoritmului i implementarea lui ntr-un subprogram. Exemple de programe complexe pentru determinarea soluiilor ecuaiilor neliniare. Determinarea rdcinilor polinoamelor.

Sub noiunea de ecuaii algebrice neliniare se nelege acele ecuaii care conin necunoscut la puterea diferit de unu, de exemplu: Sub noiunea de ecuaii algebrice transcendente se neleg acele ecuaii din care nu poate fi obinut soluie analitic n mod evident, se exemplu: Ecuaii iraionale de tipul: Ecuaii exponeniale: Ecuaiile logaritmice : ; ;

Ecuaiile trigonometrice: ; Pentru rezolvarea acestor ecuaii este necesar mai nti s se identifice printr-o anumit metod intervalele pe care se afl exact o rdcin a ecuaiei. ] este necesar ca funcia Pentru ca ecuaia s aib o soluie pe un interval [ s fie continu, ] i funcia s prezinte schimbarea de strict monoton, adic s aib acelai semn pe intervalul [ semn: . Aceste condiii pentru determinarea soluiilor sunt echivalente cu urmtoarele ipoteze: [ ] este o funcie continu i derivabil; { ;

]. are numai o singur soluie pe [ Metodele cele mai utilizate n calculul numeric aproximativ al soluiilor unei ecuaii care satisface ipotezele de mai sus sunt: Metoda njumtirii intervalului; Metoda coardei; Metoda tangentei (sau metoda Newton); Metoda iteraiilor;

14

a) Metode analitice, grafice i numerice de localizare a soluiilor ecuaiilor neliniare. Izolarea soluiilor prezint o importan practic deosebit, deoarece nu ne intereseaz gsirea tuturor soluiilor, ci numai a acelor soluii care prezint interes pentru problema tehnic respectiv. ] ] al axei reale. A Fie ecuaia , unde [ este o funcie continu pe intervalul [ izola cele rdcini ale ecuaiei nseamn a pune n eviden puncte consecutive , unde astfel nct n fiecare interval s existe cel mult o rdcin a ecuaiei. Metodele utilizate pentru izolarea soluiilor sunt metoda tabelrii, metaoda grafic i metoda analitic de localizare a soluiilor. Metoda tabelrii. Cu ajutorul acestei metode sunt separate numai rdcinile reale ale funciei ], unde a i b reprezint din interiorul domeniului delimitat de marginile rdcinilor. Intervalul [ marginile rdcinilor, se divide ntr-un numr n de subintervale egale, de lungime h, unde care sunt calculate valorile funciei n punctele Dac exist un numr , pentru care . , dup

, atunci n intervalul exist un numr impar de rdcini ale funciei , adic dac acest interval este suficient de mic, atunci pe acest interval exist obligatoriu o soluie a funciei . Dac ns , atunci n intervalul exist cel mult un numr par de rdcini, adic dac acest interval este suficient de mic, atunci pe acest interval funcia are zero soluii. Exemplu: S se izoleze rdcinile funciei ]. n intervalul [ Rezolvare. Se tabeleaz funcai n 20 de puncte, cu pasul . Programul Delphi ce ne poate ajuta la tabelarea funciei este: function f(x: extended): extended; begin f:=-0.02268*power(x, 3)+0.3108724*sqr(x)-0.6668459*x+0.209308; end; procedure TForm1.Button1Click(Sender: TObject); var a, b, k: integer; x, h: extended; begin a:=-5; b:=15; h:=(b-a)/20; for k:=0 to 20 do begin x:=a+k*h; Memo1.Lines.Add(FloatToStr(x)); Memo2.Lines.Add(FloatToStr(f(x))); end; end;

15

Rezultatele sunt prezentate n tabelul de mai jos: x f(x) x f(x) -5 14,1503475 6 2,500759 -4 9,30217 7 2,9948943 -3 5,6200573 8 3,1582144 -2 2,9679294 9 2,8546393 -1 1,2097063 10 1,948089 0 0,209308 11 0,3024835 1 -0,1693455 12 -2,2182572 2 -0,0623342 13 -5,7502131 3 0,3942619 14 -10,4294642 4 1,0643628 15 -16,3920905 5 1,8118885 Se observ c funcia are toate cele trei rdcini reale situate n intervalele: . Metoda grafic. Aceast metod presupune construirea graficului funciei ce reprezint partea stng a ecuaiei neliniare. Punctele de intersecie a acestui grafic cu axa de coordonate reprezint soluiile ecuaiei neliniare, pe care din grafic le putem determina foarte aproximativ, ns putem determina foarte exact care sunt intervalele concrete pe care este situat o soluie i numai una singur. Exemplu: S se izoleze rdcinile funciei . Rezolvare. Dac desenm graficul fuciei , atunci obinem parabola:

Se observ c funcia

are o singur rdcin real situat n intervalul:

16

Metoda analitic. Metoda analitic de determinare (localizare) a soluiilor unei funcii , presupune transformarea acestie funcii astfel: . Aceste transformri se realizeaz n aa mod nct s fie simplu de construit calitativ graficul funciilor . Punctele de intersecie ale acestor dou grafice reprezint soluiile ecuaiei neliniare. Prin aceast metod putem s localizm exact intervalele pe care se gsesc cel mult o soluie a funciei . | |. Exemplu: Aflai soluiile ecuaiei | | Rezolvare. Dac egalm aceast ecuaie neliniar cu zero, atunci obinem i se observ foarte uor c transformarea se poate de realizat doar prin trecerea unui termen din dreapta | |. Conform acestor transformri am obinut c | |. egalitii n stnga: i Reprezentarea grafic a funciilor i este simpl:

Dup analiza graficelor funciilor i se vede c ele se intersectez numai odat i soluia funciei este valoarea a punctului de intersecie a celor dou funcii, unde . b) Metoda njumtirii intervalului. Descrierea algoritmului i implementarea lui ntr-un subprogram. Metoda njumtirii intervalului (metoda bisciei sau dihotomiei) este cea mai simpl metod de ]. Pentru aplicarea acestei determinare a rdcinii unei ecuaii care se afl n intervalul [ metode se verific dac: [ ] este o funcie continu i derivabil; . Aceast metod se bazeaz pe urmtorul algoritm: 1) se calculeaz valoarea funciei la capetele intervalului [ ] i ntr-un punct situat la mijlocul intervalului: ; 17

2) se verific semnele funciei n cele trei puncte ale intervalului i subintervalul n care funcia prezint schimbarea de semn; acest subinterval este noul interval n care se afl rdcina. Sunt posibile urmtoarele variante prezentate n tabelul urmtor: f(a) + + f(c) + + f(b) + + Rdcina (xi)

3) pentru noul interval se procedeaz analog calculnd valorile funciei la capetele lui i la mijloc, din semnele funciei n cele trei puncte rezultnd subintervalul pentru care are loc schimbarea de semn;

4) procesul este iterativ i se ncheie atunci cnd se obine o eroare mai mic dect precizia impus rdcinii: | | . Exemplu: S se afle rdcina ecuaiei algebrice: , cu o eroare mai mic de tiind c se afl n intervalul [ ]. Rezolvare. Pentru determinarea soluiei ecuaiei se aplic algoritmul prezentat mai sus i rezult valorile din tabelul urmtor: Nr. 1. 1 1,5 2 -2 0,155465 3,693 2. 1 1,25 1,5 -2 -1,089 0,155465 3. 1,25 1,375 1,5 -1,089 -0,50967 0,155465 4. 1,375 1,4375 1,5 -0,50967 -0,1878 0,155465 5. 1,4375 1,46875 1,5 -0,1878 -0,0189 0,155465 6. 1,46875 1,484375 1,5 -0,0189 0,0676 0,155465 7. 1,46875 1,4765625 1,484375 -0,0189 0,0241772 18

Se observ din rezultatele obinute c aceast metod este slab convergent. Soluia aproximativ a ecuaiei este calculat cu o eroare: . Implementarea n Delphi 7: function F(x: extended): extended; begin F:=ln(x)+3*sqr(x)-4*x-1; end; procedure Metoda_Dihotomiei(a, b, eps: extended; var rez: extended); var c: extended; begin repeat c:=(a+b)/2; if F(a)*F(c)<0 then b:=c else a:=c; until abs(b-a)<eps; rez:=(a+b)/2; end; c) Metoda coardelor. Descrierea algoritmului i implementarea lui ntr-un subprogram. Fie o funcie continu i derivabil avnd pe intervalul [ ] o singur rdcin . Aceast metod se bazeaz pe urmtorul algoritm: 1) deoarece , soluia n prima aproximare se paote egala cu abscisa punctului de intersecie a coardei (secantei) care trece prin punctele [ ] i [ ] cu axa (soluia n prima aproximare este punctul ). 2) se verific semnele funciei n cele trei puncte ale intervalului i subintervalul n care funcia prezint schimbarea de semn, acest subinterval este noul interval n care se afl rdcina. 3) pentru noul interval se procedeaz analog: soluia n a doua aproximare se poate egala cu abscisa punctului de intersecie a coardei care trece prin punctele [ ] i [ ] cu axa (soluia n a doua aproximare este punctul ). 4) procesul este iterativ i se ncheie atunci cnd se obine o eroare mai mic dect precizia impus rdcinii: | | , unde valoarea curent calculat i valoarea precedent.

19

Formula de lucru o determinm din asemnarea

Respectiv, dac contrar soluia se afl n subinterval [ subinterval.

atunci noul subinterval [ ] va cuprinde soluia ecuaiei, n caz ] . Procedeul de aproximare se repet n acelai mod pentru noul

Exemplu: S se afle rdcina ecuaiei algebrice: , cu o eroare mai mic de tiind c se afl n intervalul [ ]. Rezolvare. Pentru determinarea soluiei ecuaiei se aplic algoritmul prezentat mai sus i rezult valorile din tabelul urmtor: Pas 1. 2. 3. 4. ) -0.626100 -0.146033 -0.031635 -0.006742

1.000000 1.351300 1.445332 1.466431

1.351300 1.445332 1.466431 1.470962

2.000000 2.000000 2.000000 2.000000

-2.000000 -0.626100 -0.146033 -0.031635

3.693147 3.693147 3.693147 3.693147

Dup numrul de pai parcuri, se observ c i acest metod este slab convergent ns este mai rapid dect n cazul metodei de njumtire a intervalului. Soluia aproximativ a ecuaiei calculat prin metoda coardei este calculat cu o eroare: . Implementarea n Delphi 7: function F(x: extended): extended; begin F:=ln(x)+3*sqr(x)-4*x-1; end; procedure Metoda_Coardelor(a, b, eps: extended; var rez: extended); 20

var vc, vp: extended; begin vc:=a; repeat vp:=vc; vc:=(a*F(b)-b*F(a))/(F(b)-F(a)); if F(a)*F(vc)<0 then b:=vc else a:=vc; until abs(vc-vp)<eps; rez:=vc; end; d) Metoda Newton. Descrierea algoritmului i implementarea lui ntr-un subprogram. Fie o funcie continu i derivabil pe intervalul [ ], care satisface condiia are o singur rdcin pe intervalul [ ]. Dac se dezvolt n serie Taylor funcia n jurul punctului se obine:

Reinnd doar primii doi termeni ai dezvoltrii (1.1) se obine o relaie aproximativ de calcul a lui n funcie de i :

Aceast funcie reprezint tangenta la graficul funciei ]:

n punctul [

] respectiv n punctul

Punnd condiia

se obine intersecia cu axa

i rezult o soluie aproximativ de forma:

(1.3)

Alegerea lui sau trebuie s se fac astfel nct s nu se obin o valoare a lui n afara intervalului [ ]. n exemplul nostru se observ c tangenta dus din punctul [ ] la funcia se intersecteaz cu axa n punctul , care este cuprins n intervalului [ ]. Pe cnd tangenta dus din 21

punctul [ ] la funcia intersecteaz axa n punctul , care nu este cuprins n intervalul [ ]. Pentru a satisface aceast condiie, trebuie s fie luat acel capt al intervalului [ ] la care semnul funciei coincide cu semnul primei derivate. Deci, dac atunci punctul iniial este limita dreapt, adic , iar dac atunci punctul iniial va fi limita stng, adic . Formula de recuren a metodei tangentelor utilizat este modifica aceast formul nlocuind derivata funciei n punctul . Dup cum se tie: . De asemenea putem

Din (1.4) rezult c pentru calcularea numeric a derivatei n punctul trebuie s cunoatem o valoare destul de mic , unde cu ct aceast valoare este mai mic, cu att se calculeaz mai exact derivata. n calitate de valoarea se poate utiliza precizia de rezolvare a ecuaiei neliniare. Formula final este:

Procesul de calculare a rdcinii ecuaiei neliniare este unul iterativ i calculul se oprete atunci cnd | se realizeaz condiia: | . Exemplu: S se afle rdcina ecuaiei algebrice: tiind c se afl n intervalul [ ]. Rezolvare. Dac notm , cu o eroare mai mic de , atunci derivata funciei . Pentru determinarea soluiei aproximative prin metoda Newton, vom construi n Delphi 7 trei funcii: 1) Funcia denumit care returneaz funcia pentru care aproximm soluia ntr-un anumit interval; 2) Funcia denumit care returneaz derivata funciei date; 3) Funcia denumit care aplic metoda lui Newton asupra funciei date. Pentru determinarea soluiei ecuaiei rezult valorile din tabelul urmtor: Pas 1. 2. 3. 4. 5. 2,0000000000000 3,69314718055995 1,5655135659914 1,5655135659914 0,538657839287026 1,47621171090188 1,47621171090188 0,0222353540668164 1,47219427118359 1,47219427118359 4,48208875967237E-5 1,47218614033879 1,47218614033879 4,08248314928E-10 Implementarea n Delphi 7: function Functie(x: extended): extended; begin Functie:=ln(x)+3*(x*x)-4*x-1; end; 0,538657839287026 0,0222353540668164 4,48208875967237E-5 4,08248314928E-10 este:

function Derivata(x: extended): extended; begin Derivata:=1/x+6*x-4; end; function Metoda_Newton(a, b, eps:extended): extended; 22

var xc, xp, x: extended; begin if (Functie(a)*Derivata(a)>0) then x:=a else x:=b; xc:=x; repeat xp:=xc; xc:=x-Functie(x)*eps/(Functie(x+eps)-Functie(x)); x:=xc; until abs(xc-xp)<eps; Metoda_Newton:=xc; end; Dac iniial se cunoate care limit a intervalului [ ] trebuie luat, adic se satisface una din condiiile sau , atunci funcia principal se modific astfel: function Metoda_Newton(x, eps:extended): extended; var xc, xp: extended; begin xc:=x; repeat xp:=xc; xc:=x-Functie(x)*eps/(Functie(x+eps)-Functie(x)); x:=xc; until abs(xc-xp)<eps; Metoda_Newton:=xc; end; Metoda Newton are o vitez de convergen mai superioar dect celelalte metode. Principalul dezavantaj const n faptul c aceast metod nu poate fi aplicat la orice funcie sau pentru orice domeniu [ ]. Dac punctul iniial nu este ales n mod corespunztor, atunci nu ava avea loc convergena spre rdcina . De aceea n practic se recomand s nceap cutarea rdcinii folosind metoda njumtirii sau metoda coardelor, iar dup un anumit numr de pai pentru accelerarea convergenei se trece la metoda Newton. e) Metoda iterativ. Descrierea algoritmului i implementarea lui ntr-un subprogram. Fie o funcie continu i derivabil pe intervalul [ ]. Deoarece , presupunem c ecuaia are o singur rdcin . O rdcin aproximativ a ecuaiei se poate obine dac aceasta se poate scrie ca o relaie de recuren echivalent cu . Variabila de obicei se extrage din ecuaia funciei , astfel obinnd echivalena . Formal acest lucru se poate de obinut dac adugm i totodat scdem valoarea lui din ecuaia noastr iniial: Dezavantajul acestei metode este c ea nu conduce ntotdeauna la relaii iterative convergente. Relaia de recuren a metodei se scrie:

23

Respectiv, dac

iniial este valoarea

, atunci:

Valoarea iniial poate fi luat oricare punct din intervalul [ ], cu condiia ca el s fie ct mai aproape de rdcina exact a ecuaiei (adic n practic se recomand s nceap cutarea rdcinii folosind o alt metod, iar dup un anumit numr de pai s se trac la metoda iterativ). Exemplu: S se afle rdcina ecuaiei algebrice: , cu o eroare mai mic de tiind c se afl n intervalul [ ]. Rezolvare. n cazul acestei metode trebuie s indicm valoarea lui . Deci, pentru simplitate putem scrie . Implementarea n Delphi 7: function Functie(x: extended): extended; begin Functie:= x-sin(x)-0.25; end; function Metoda_Iterativa(x, eps: extended): extended; var dx: extended; begin repeat dx:=Functie(x); x:=x-dx; if (x<>0) then dx:=dx/x; until abs(dx)<eps; Metoda_Iterativa:=x; end;

Tema 4. Aproximarea funciilor de o variabil (4 ore)


a) Aproximarea prin interpolare. Interpolarea liniar i parabolic. b) Interpolarea polinomial global. Convergena interpolrii polinomiale globale. c) Forma Newton i Lagrange a polinoamelor de interpolare global. Descrierea algoritmului i implementarea lui ntr-un subprogram. d) Interpolarea cu funcii spline de ordinul unu, doi i trei. Descrierea algoritmului i implementarea lui ntr-un subprogram. e) Interpolarea cu funcii trigonometrice. Convergena interpolrii trigonometrice. Descrierea algoritmului i implementarea lui ntr-un subprogram. f) Aproximare funciilor n sensul celor mai mici ptrate. Regresia liniar i parabolic. Descrierea algoritmului i implementarea lui ntr-un subprogram.

24

25

S-ar putea să vă placă și