thumb|upright=1.5|Estimarea derivatei cu diferențe finite În analiza numerică, algoritmii de derivare numerică estimează derivata unei funcții sau folosind valorile funcției. Spre deosebire de derivarea analitică, care oferă expresii exacte pentru derivate, derivarea numerică se bazează pe valorile funcției într-un set de puncte discrete pentru a estima valoarea derivatei în acele puncte sau în puncte intermediare. Această abordare este utilă în special atunci când se lucrează cu date obținute experimental, sau simulări și situații în care funcția este definită doar pe intervale specifice.
Diferențe finite
Cea mai simplă metodă este utilizarea aproximărilor cu diferențe finite.
O estimare simplă în două puncte constă în calcularea pantei unei secante din apropiere prin punctele și Richard L. Burden, J. Douglas Faires (2000), Numerical Analysis, (7th Ed), Brooks/Cole. . Alegând un număr mic , care reprezintă o mică modificare a lui și poate fi fie pozitiv, fie negativ, panta acestei drepte este:
Această expresie este câtul diferenței lui Isaac Newton (cunoscut și ca diferență divizată de ordinul întâi).
Pentru a obține o estimare a erorii pentru această aproximare, se poate utiliza dezvoltarea în serie Taylor a lui f(x) în jurul punctului de pentru a da:
pentru între și . Rearanjând se obține:
Panta acestei secante diferă de panta tangentei cu o valoare aproximativ proporțională cu Pe măsură ce se apropie de zero, panta secantei se apropie de panta tangentei, iar termenul de eroare dispare. Prin urmare, adevărata „derivată a lui în ” este limita valorii câtului diferenței, pe măsură ce secantele se apropie din ce în ce mai mult de tangentă:
Întrucât înlocuirea imediată a lui 0 cu are ca rezultat formă nedeterminată, calcularea directă a derivatei poate fi neintuitivă.
Echivalent, panta ar putea fi estimată utilizând pozițiile și .
O altă formulă între două puncte este calcularea pantei unei secante apropiate prin punctele și Panta acestei drepte este:
Această formulă este cunoscută sub numele de câtul diferenței simetrice. În acest caz, erorile de ordinul întâi se anulează, astfel încât panta acestor secante diferă de panta tangentei cu o valoare aproximativ proporțională cu . Prin urmare, pentru valori mici ale lui , aceasta este o aproximare mai precisă a tangentei decât estimarea pe o parte. De notat că deși panta este calculată în , valoarea funcției în nu este implicată.
Eroarea estimării este dată de:
unde este un punct între și Această eroare nu include eroarea de rotunjire datorată faptului că numerele sunt reprezentate și calculele sunt efectuate cu precizie limitată.
Câtul diferenței simetrice este utilizat ca metodă de aproximare a derivatei într-o serie de calculatoare, cum ar fi TI-82, TI-83, TI-84, TI-85, toate utilizând această metodă cu
Dimensiunea pasului thumb|upright=1.65|Exemplu care arată dificultatea alegerii din cauza erorii de rotunjire și a erorii formulei
O considerație importantă în practică atunci când funcția este calculată folosind aritmetica în virgulă mobilă cu precizie finită, este alegerea dimensiunii pasului . Pentru ilustrare, fie formula de aproximare în două puncte cu termenul de eroare:
unde este un punct între și Fie eroarea de rotunjire la evaluarea funcțiilor și valoarea calculată a lui Prin urmare:
Eroarea totală în aproximare este:
Presupunând că erorile de rotunjire sunt mărginite de un număr și derivata de ordinul al treilea a lui este mărginită de un număr , se obține:
Pentru a reduce eroarea de trunchiere, trebuie redus Dar pe măsură ce este redus, eroarea de rotunjire crește. Datorită necesității de a împărți cu valoarea mică , toate formulele cu diferențe finite pentru derivare numerică sunt . Numerical Differentiation of Analytic Functions, B Fornberg – ACM Transactions on Mathematical Software (TOMS), 1981.
Dacă, în schimb, derivata este aproximată folosind și se presupune că eroarea de aproximare relativă datorată rotunjirii este mărginită de epsilonul mașinii, iar valorile și sunt mărginite pe de și respectiv se poate demonstra că:
Prin minimizarea acestei limite superioare se poate obține o estimare pentru dimensiunea optimă a pasului. Totuși, utilizarea acestei metode ar necesita cunoașterea limitelor și Însă dacă se utilizează o limită superioară aproximativă – una în care și sunt înlocuite cu și – eroarea poate fi estimată ca:
Prin minimizarea se poate găsi o estimare pentru dimensiunea optimă a pasului :
(deși nu și atunci când ). Dacă nu se cunosc informații despre funcția , uneori se utilizează aproximarea oferind o opțiune pentru un mic fără a produce o eroare mare de rotunjire: , unde epsilonul mașinii este de obicei de ordinul pentru precizie dublă. Following Numerical Recipes in C, Chapter 5.7 . În practică, nu se poate calcula valoarea care minimizează limitele de eroare de mai sus, prin urmare nu se poate calcula o aproximare a dimensiunii optime a pasului fără informații despre derivatele de ordin superior.Richard L. Burden, J. Douglas Faires (2000), Numerical Analysis, (7th Ed), Brooks/Cole.
Exemplu Pentru a demonstra această dificultate, fie aproximarea derivatei funcției:
în punctul . Derivata este:
a cărei valoare în punctul este:
Calculând în virgulă mobilă pe 64 de biți, următoarele aproximări sunt generate cu formula de aproximare în două puncte și cu pași din ce în ce mai mici. Cea mai mică eroare absolută este produsă pentru un pas de după care eroarea absolută crește constant pe măsură ce erorile de rotunjire domină calculele. Pasul (h) Aproximarea Eroarea absolută
În calculele pe calculator, problemele sunt exacerbate deoarece, deși conține în mod necesar un număr reprezentabil în virgulă mobilă cu o anumită precizie (32 sau 64 de biți etc.), aproape sigur nu va fi exact reprezentabil cu acea precizie. Aceasta înseamnă că va fi schimbat (prin rotunjire sau trunchiere) într-un număr apropiat reprezentabil în mașină, cu consecința că nu va fi egal cu . Cele două evaluări ale funcțiilor nu vor fi separate la exact . În acest sens, deoarece majoritatea fracțiilor zecimale sunt secvențe recurente în binar (la fel cum 1/3 este în zecimal), un pas aparent rotund, cum ar fi , nu va fi un număr rotund în binar; este 0,000110011001100...2 O posibilă abordare este următoarea: h := sqrt(eps) * x; xph := x + h; dx := xph - x; slope := (F(xph) - F(x)) / dx;
Totuși, în cazul computerelor, facilitățile de pot să nu acorde atenție detaliilor aritmeticii computerizate propriu-zise, ci să aplice axiomele matematicii pentru a deduce că și sunt identice. În C și limbaje similare, o directivă conform căreia este o va preveni acest lucru.
Metode în trei puncte Pentru a obține formule de aproximare a derivatelor mai generale pentru o anumită funcție fie un număr pozitiv apropiat de zero. Dezvoltarea în serie Taylor a funcției în punctul este:
Înlocuind cu se obține:
Înmulțind prima relație cu 4 se obține:
Scăzând această relație din precedenta se elimină termenul în
care poate fi scrisă ca:
Rearanjând termenii se obține:
care este diferența finită înainte în trei puncte pentru derivată. Folosind o abordare similară, se poate arăta că:
care este diferența finită centrală în trei puncte și
care este diferența finită înapoi în trei puncte.
Printr-o abordare similară, formula de aproximare a punctului median în cinci puncte poate fi obținută astfel: Abramowitz and Stegun, Table 25.2.
Exemplu numeric Fie aproximarea derivatei lui în punctul Deoarece , valoarea exactă este:
Formula Pasul (h) Aproximarea Eroarea absolută Diferența finită înainte în trei puncte Diferența finită înapoi în trei puncte Diferența finită centrală în trei puncte
Derivate de ordin superior Folosind seria Taylor, este posibil să se obțină formule pentru a aproxima derivatele de ordinul al doilea (și de ordin superior) ale unei funcții generale. Pentru o funcție și un număr oarecare dezvoltarea acesteia pentru și dă:
și
unde
Sumând aceste două ecuații se obține:
Dacă este continuă pe atunci este între și garantează existența unui număr între și pentru care se poate scrie:
unde
Exemplu numeric Fie aproximarea derivatei de ordinul al doilea a funcției în punctul Deoarece valoarea exactă este Pasul (h) Aproximarea Eroarea absolută
Derivate oarecare Cu câtul diferenței al lui Newton:
se poate arăta că (pentru ):
Cuadratură diferențială Cuadratura diferențială este aproximarea derivatelor folosind sume ponderate ale valorilor funcțiilor. Differential Quadrature and Its Application in Engineering: Engineering Applications, Chang Shu, Springer, 2000, . Advanced Differential Quadrature Methods, Yingyan Zhang, CRC Press, 2009, . Cuadratura diferențială este de interes practic deoarece permite calcularea derivatelor din date cu zgomot. Numele provine prin analogie cu „cuadratură”, adică integrare numerică, unde sumele ponderate sunt utilizate în metode precum cea a lui Simpson sau a trapezului. Există diverse metode pentru determinarea coeficienților de ponderare, de exemplu, filtrul Savitzky-Golay. Cuadratura diferențială este utilizată pentru a rezolva ecuații cu derivate parțiale. Există și alte metode pentru calcularea derivatelor din date afectate de zgomot.
Metode cu variabile complexe Aproximările clasice cu diferențe finite pentru derivarea numerică sunt slab condiționate. Totuși, dacă este o funcție olomorfă de variabilă reală, care poate fi evaluată în puncte din planul complex în vecinătatea lui atunci există metode stabile. De exemplu, Using Complex Variables to Estimate Derivatives of Real Functions, W. Squire, G. Trapp – SIAM REVIEW, 1998. prima derivată poate fi calculată cu relația cu pas complex: Differentiation With(out) a Difference by Nicholas Higham article from MathWorks blog, posted by Cleve Moler
Mărimea pasului recomandată pentru a obține derivate precise pentru o serie de condiții este . Această relație poate fi obținută dintr-o dezvoltare în serie Taylor:
Formula derivatelor cu pas complex este valabilă doar pentru calcularea derivatelor de ordinul întâi. O generalizare a celor de mai sus pentru calcularea derivatelor de orice ordin utilizează , rezultând derivate multicomplexe.
unde sunt unitățile imaginare din spațiul multicomplex; . Operatorul extrage a -a componentă a numărului multicomplex de ordinul de exemplu extrage componenta reală iar extrage ultima componentă, „cea mai imaginară”. Metoda poate fi aplicată derivatelor mixte, de exemplu pentru o derivată de ordinul al doilea:
În general, derivatele de orice ordin pot fi calculate folosind : Ablowitz, M. J., Fokas, A. S.,(2003). Complex variables: introduction and applications. Cambridge University Press. Check theorem 2.6.2
inde integrarea se face .
Utilizarea variabilelor complexe pentru derivarea numerică a fost inițiată de Lyness și Moler în 1967. Algoritmul lor este aplicabil derivatelor de ordin superior.
O metodă bazată pe inversarea numerică a unei transformate Laplace complexe a fost dezvoltată de Abate și Dubner. Fornberg a dezvoltat un algoritm care poate fi utilizat fără a fi necesare cunoștințe despre metodă sau despre caracterul funcției.
În C++ este disponibilă o implementare a aritmeticii multicomplexe.
Note
Legături externe Numerical Differentiation from wolfram.com NAG Library numerical differentiation routines Boost. Math numerical differentiation, including finite differencing and the complex step derivative Differentiation With(out) a Difference by Nicholas Higham, SIAM News.
Categorie:Analiză numerică Categorie:Calcul diferențial