Interpolare liniară
| Deși acest articol conține o listă de referințe bibliografice, sursele sale rămân neclare deoarece îi lipsesc notele de subsol. Puteți ajuta introducând citări mai precise ale surselor. Întrucât este un articol tradus, a se vedea pagina de discuție, iar articolul de origine nu are nici el note de subsol, puteți ajuta și supraveghind acel articol, iar când acolo apar note de subsol, copiați-le și aici. |

În matematică interpolarea liniară este o metodă de aproximare a unei curbe folosind polinoame de gradul întâi pentru a obține noi valori ale curbei în intervalele dintre un set discret de puncte în care valorile curbei sunt cunoscute.
Istoric
[modificare | modificare sursă]Interpolarea liniară a fost utilizată încă din antichitate pentru completarea golurilor din tabele. Fie un tabel care prezintă populația unei țări în 1970, 1980, 1990 și 2000 și că se dorește estimarea populației din 1994. Interpolarea liniară este o modalitate ușoară de a face acest lucru. Se crede că metoda a fost utilizată în Imperiul Seleucid (ultimele trei secole î.Hr.) și de către astronomul și matematicianul grec Hiparh (secolul al II-lea î.Hr.). O descriere a interpolării liniare poate fi găsită în textul de matematică antic chinez numit Cele nouă capitole despre arta matematică (în chineză: 九章算術),[1] datând din 200 î.Hr. până la 100 d.Hr. și în Almageste (din secolul al II-lea) de Ptolemeu.
Interpolare liniară între două puncte cunoscute
[modificare | modificare sursă]
Dacă cele două puncte cunoscute au coordonatele și funcția de interpolare liniară este dreapta care trece prin aceste puncte. Pentru o valoare în intervalul valoarea de-a lungul dreptei este dată din ecuația pantelor
care poate fi obținută geometric din figura din dreapta. Este un caz particular de interpolare polinomială cu
Rezolvarea acestei ecuații pentru y, care este valoarea necunoscută în x, dă:
care este formula pentru interpolarea liniară în intervalul În afara acestui interval formula este o extrapolare liniară.
Această formulă poate fi înțeleasă și ca o medie ponderată. Ponderile sunt invers proporționale cu distanțele de la punctele cunoscute la punctul necunoscut; punctul mai apropiat are o influență mai mare decât punctul mai îndepărtat. Astfel, ponderile sunt și care sunt distanțe normalizate între punctul necunoscut și fiecare dintre punctele cunoscute. Deoarece suma acestor ponderi este 1,
rezultând formula de interpolare liniară de mai sus.
Interpolare într-un set de date
[modificare | modificare sursă]
Interpolarea liniară într-un set de date (x0, y0), (x1, y1), ..., (xn, yn) este definită ca o funcție liniară pe porțiuni, rezultată din concatenarea segmentelor dintre fiecare pereche de puncte succesive. Aceasta are ca rezultat o funcție continuă, cu o derivată în general discontinuă, deci de clasa de derivabilitate
Interpolarea liniară ca aproximare
[modificare | modificare sursă]Interpolarea liniară este adesea utilizată pentru a aproxima o valoare a unei funcții, f, folosind două valori cunoscute ale acelei funcții în alte puncte. Eroarea acestei aproximări este definită drept:
unde p reprezintă polinomul de interpolare liniară definit mai sus:
Se poate demonstra folosind teorema lui Rolle că dacă f are o derivată de ordinul al doilea continuă, atunci eroarea este mărginită de:
Adică, aproximarea dintre două puncte ale unei funcții date se înrăutățește odată cu derivata de ordinul al doilea a funcției aproximate. Acest lucru este corect și din punct de vedere intuitiv: cu cât funcția este mai „curbă”, cu atât aproximările făcute cu interpolare liniară simplă devin mai proaste.
Aplicații
[modificare | modificare sursă]Operația de bază a interpolării liniare între două valori este utilizată în mod obișnuit în grafica digitală. Operațiile de interpolare liniară sunt încorporate în hardware-ul tuturor procesoarelor grafice moderne. Acestea sunt adesea folosite ca elemente constitutive pentru operații mai complexe: de exemplu, o interpolare biliniară poate fi realizată prin trei interpolări liniare. Deoarece această operație este ieftină, este o modalitate bună de a implementa tabele precise de funcții netede, cu căutare rapidă, fără a avea prea multe intrări în tabel.
Extensii
[modificare | modificare sursă]
Punctele negru și roșii/galbene/verzi/albastre corespund punctului interpolat, respectiv celor învecinate. Înălțimile lor față de planul de bază corespund valorilor lor.
Exactitate
[modificare | modificare sursă]Dacă o funcție din clasa de derivabilitate C0 este insuficientă, de exemplu, dacă procesul care a produs punctele de date este cunoscut a fi mai neted decât C0, se poate înlocui interpolarea liniară cu o interpolare spline sau cu una polinomială.
Multivariabilă
[modificare | modificare sursă]

Interpolarea liniară, așa cum este descrisă aici, este pentru puncte situate spațial într-un plan. Pentru puncte situate în spațiu, extensia interpolării liniare se numește „interpolare biliniară”, respectiv „triliniară”. De observat că aceste interpolări nu mai sunt funcții liniare ale coordonatelor spațiale, ci mai degrabă produse ale funcțiilor liniare. Acest lucru este ilustrat de exemplul evident neliniar de interpolare biliniară din figura de mai jos. Alte extensii ale interpolării liniare pot fi aplicate altor tipuri de rețele, cum ar fi rețelele triunghiulare și tetraedrice, inclusiv suprafețele Bézier(d). Acestea pot fi definite ca funcții liniare pe porțiuni în dimensiuni superioare (v. următoarea figură de mai jos).
Suportul în limbajele de programare
[modificare | modificare sursă]Multe biblioteci și limbaje de umbrire au o funcție care furnizează o interpolare între două valori (v0, v1) pentru un parametru t în intervalul unitate închis [0, 1]. Semnăturile dintre funcțiile „lerp” (din engleză Linear intERPolation) sunt implementate în mod variat, în ambele forme (v0, v1, t) și (t, v0, v1).
// Imprecise method, which does not guarantee v = v1 when t = 1, due to floating-point arithmetic error.
// This method is monotonic. This form may be used when the hardware has a native fused multiply-add instruction.
float lerp(float v0, float v1, float t) {
return v0 + t * (v1 - v0);
}
// Precise method, which guarantees v = v1 when t = 1. This method is monotonic only when v0 * v1 < 0.
// Lerping between same values might not produce the same value
float lerp(float v0, float v1, float t) {
return (1 - t) * v0 + t * v1;
}
Această funcție „lerp” este utilizată în mod obișnuit pentru combinarea (variația) lui „alfa” (parametrul t este „valoarea alfa”), iar formula poate fi generalizată pentru a combina mai multe componente ale unui vector (cum ar fi axele spațiale x, y, z sau componentele de culoare r, g, b) în paralel.
Note
[modificare | modificare sursă]- ↑ en Joseph Needham (). Science and Civilisation in China: Volume 3, Mathematics and the Sciences of the Heavens and the Earth. Cambridge University Press. pp. 147–. ISBN 978-0-521-05801-8.
Lectură suplimentară
[modificare | modificare sursă]- en Meijering, Erik (), „A chronology of interpolation: from ancient astronomy to modern signal and image processing”, Proceedings of the IEEE, 90 (3): 319–342, doi:10.1109/5.993400
Vezi și
[modificare | modificare sursă]Legături externe
[modificare | modificare sursă]- en Equations of the Straight Line la cut-the-knot
- en Well-behaved interpolation for numbers and pointers
- en Hazewinkel, Michiel, ed. (), „Linear interpolation”, Encyclopaedia of Mathematics, Kluwer Academic Publishers, ISBN 978-1556080104
- en Hazewinkel, Michiel, ed. (), „Finite-increments formula”, Encyclopaedia of Mathematics, Kluwer Academic Publishers, ISBN 978-1556080104