Lineer enterpolasyon

**Lineer interpolasyon,** lineer polinomlar kullanarak, verilerin bilindiği noktalardan yeni verilerin üretilmesini sağlayan bir eğri uydurma metodudur.

## Bilinen iki nokta arasında lineer interpolasyon

Koordinatları (x_0,y_0) ve (x_1,y_1) olan bilinen iki nokta arasındaki düz çizgi, **lineer interpolant** olarak isimlendirilir. (x_0, x_1) aralığındaki bir *x* değeri için, düz çizgi üzerindeki *y* değeri aşağıdaki denklem ile verilir:

:\frac{y - y_0}{x - x_0} = \frac{y_1 - y_0}{x_1 - x_0}

Bu denklem, geometrik olarak sağdaki figürden türetilebilir. Lineer interpolasyon, polinom interpolasyonunun *n* = 1'e ait özel çözümüdür.

Yukarıdaki denklem *x*'e ait bir bilinmeyen olan *y* değeri için çözülürse:

:y = y_0 + (x-x_0)\frac{y_1 - y_0}{x_1-x_0}  

Bu formül, (x_0,x_1) aralığı için lineer interpolasyon formülüdür. Aralığın dışında ise, formül lineer ekstrapolasyon formülü haline gelir.

Bu formül, aynı zamanda, *ağırlıklı ortalama* (İng. *"weighted average"*) olarak düşünülebilir. *Ağırlıklar* değer aralığı uç noktalarından bilinmeyen noktaya olan uzaklıkla ters orantılıdır. Bir başka deyişle, yakın bir nokta uzak bir noktaya göre daha fazla *ağırlığa* (etkiye) sahiptir.

Ağırlıklar, \frac{x-x_0}{x_1-x_0} ve \frac{x_1-x}{x_1-x_0} olarak ifade edilebilir. Bu terimler, bilinmeyen noktadan, değer aralığı uç noktalarına olan normalize uzaklıktır. Terimlerin toplamı 1'e eşit olduğundan, yukarıda elde edilen lineer interpolasyon formülü şu şekilde türetilebilir:

:y = y_0  \left(1-\frac{x - x_0}{x_1-x_0}\right) + y_1 \left(1-\frac{x_1 - x}{x_1-x_0}\right) = y_0 \left(1-\frac{x - x_0}{x_1-x_0}\right) + y_1 \left(\frac{x - x_0}{x_1-x_0}\right)  

## Bir data setinin interpolasyonu
 
(x0, y0), (x1, y1), ..., (xn, yn)'den oluşan bir data setinin lineer interpolasyonu, dataya ait nokta çiftlerinden oluşan *lineer interpolant*ların uç uca eklenmesi olarak tanımlanır. Bu, türevi (genellikle) süreksiz, *diferansiyellenebilirlik sınıfı* C^0 olan bir sürekli eğriyi üretir.

## Yaklaşım (approximation) olarak lineer interpolasyon

Lineer interpolasyon, sıkça, iki noktada değeri bilinen bir *f* fonksiyonunun bir değerini yaklaşık olarak hesaplamakta kullanılır. Bu yaklaşıma ait *hata* (İng. "error") aşağıdaki gibi tanımlanır:

:R_T = f(x) - p(x) \,\!

Bu denklemde, *p* lineer interpolasyonun polinomudur:

:p(x) = f(x_0) + \frac{f(x_1)-f(x_0)}{x_1-x_0}(x-x_0). \,\!

*Hata sınırları,* eğer *f* sürekli bir ikinci türeve sahipse, Rolle teoremi kullanılarak aşağıdaki gibi hesaplanabilir:

:|R_T| \leq \frac{(x_1-x_0)^2}{8} \max_{x_0 \leq x \leq x_1} |f*(x)|. \,\!</math>

Görüleceği üzere, bir fonksiyona ait iki nokta arasındaki bir yaklaşımın niteliği, fonksiyonun ikinci türevine bağlıdır. Dolayısıyla, *sert ve çok kıvrımlara* sahip bir fonksiyon, *az kıvrımlara* sahip bir fonksiyona göre, lineer interpolasyonla, daha az bir nitelikte bir (*kötü*) yaklaşımı üretilebilir.

==Uygulamalar==

Lineer interpolasyon, genellikle bir değer tablosundaki ara boşlukları doldurmak için kullanılır. Örneğin, bir ülkenin 1970, 1980, 1990 ve 2000 yılındaki nüfusunu veren bir tablodan, 1994 senesi nüfusunu tahmin etmek, lineer interpolasyon ile mümkün olabilir.

Yanı sıra, [[Bilgisayar grafikleri|bilgisayar grafik]] uygulamalarında lineer interpolasyon sıklıkla kullanılır. Lineer interpolasyon, bu konunun teknik jargonunda, bazen *'lerp** olarak adlandırılır. Bu terim, İngilizcede [[fiil]] ya da [[isim]] olarak kullanılabilir: ör. "[[Bresenham'ın çizgi algoritması|Bresenham's algorithm]] ***lerps**' incrementally between the two endpoints of the line."

Lerp fonksiyonu, tüm modern bilgisayar grafik işlemcilerinin donanımına yükleniktir. Sıklıkla, bunlar daha karmaşık fonksiyonların yapıtaşı olarak kullanılır: örneğin, bir  [[bilineer interpolasyon]] üç lerp ile tamamlanır. Bu fonksiyonun kullanılmasına, (kaynakları kullanma seviyesi olarak) ucuz ve kolay olduğu için, sürekli fonksiyonlarda hızlıca arabul için çok fazla maddeye (elemana ya da data noktasına) ihtiyaç duymadan doğruluk seviyesi yüksek bir [[başvuru çizelgesi]] yaratılmasında başvurulabilir.

==Ek konular==


===Doğruluk===

Eğer bir [[Düzgünlük#Türevlenebilirlik sınıfları|*C0*]] fonksiyonu yetersiz ise, örneğin [[Düzgünlük#Türevlenebilirlik sınıfları|*C0*]]'dan daha çalkantısız data değerleri üreten bir process varsa, lineer interpolasyon çoğunlukla [[bağ interpolasyonu]] ile ya da bazı hallerde [[polinom interpolasyonu]] yer değiştirir.

===Çok değişkenlilik===
Lineer interpolasyon, buraya kadar sadece bir konumsal boyutlu (İng. "spatial dimension") data noktaları için açıklandı. İki konumsal boyut için ([[düzlem]]), lineer interpolasyon [[bilineer interpolasyon]]a; üç konumsal boyut için ([[hacim]]) [[trilineer interpolasyon]]a evrilir. Dikkat edilmesi gereken husus ise, *bu interpolantların* artık konumsal koordinatların [[doğrusal fonksiyon|lineer fonksiyon]]u olmadığıdır. Aksine, lineer fonksiyonların çarpımlarından müteşekkildirler.

Lineer interpolasyonun diğer dönüşmüş tanımlarına, üçgensel ve dörtyüzlü meşlerde, örneğin [[Bézier yüzeyi|Bézier yüzeyleri]]'nde rastlanabilir. Bu dönüşümler, çok-boyutlu [[Parçalı fonksiyon|parçalı lineer fonksiyon]] olarak adlandırılır (en alt figüre bakınız).




==Tarihçe==

Antik dönemlerden beri lineer interpolasyon kullanılmaktadır. Başlıca kullanım gereği [[astronomi]] data setlerindeki boşlukların doldurulmasıdır.

[[Babil]]li astronom ve matematikçilerin [[Seleukos İmparatorluğu|Seleukos]] [[Mezopotamya]]sı'nda (milattan önce son üç yüzyıl) ve Yunan astronom ve matematikçi [[Hipparkos]]'un (M.Ö. 200 civarı) lineer interpolasyon kullanmış olduğu düşünülmektedir.

Lineer interpolasyonun bir tanımı/açıklaması, [[Batlamyus|Ptolemy]]'nin *Almagest* adlı eserinde (MS. 200 civarı) yer alır.

==Programlama dillerinde==
Pek çok *library*, lerp fonksiyonunu içerir: ör. verilen iki girdiden (v0,v1) kapalı birim aralık [0,1] içinde yer alan bir parametre (t) için interpolasyon çıktı edilebilir:

<syntaxhighlight lang="cpp">
// Imprecise method which does not guarantee v = v1 when t = 1, due to floating-point arithmetic error.
// 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.
float lerp(float v0, float v1, float t) {
  return (1-t)*v0 + t*v1;
}
</syntaxhighlight>
Bu lerp fonksiyonu *alpha blending* için (parametre *t*, *alpha* değeridir) sıklıkla kullanılan bir fonksiyondur. Bu formülasyon, bir vektörün çoklu bileşenlerinin harmanlanması için genişletilebilir (ör. konumsal olarak *x, y, z* eksenlerinde veyahut *r, g, b'' renk bileşenlerinde).

## Ayrıca bakınız
* Bilineer interpolasyon
* Trilineer interpolasyon

## Kaynakça

* .

## Dış bağlantılar
* Lineer İnterpolasyon Çevrimiçi Hesap Makinesi ve Görüntüleme Aracı 
* Doğru denklemi 
* Microsoft Excel'de lineer interpolasyon uygulaması
* 
* 
* CUDA uygulamasının lineer interpolasyonu için bakınız: OrangeOwlSolutions 
* Kullanılabilir hesap makineleri'nden bir örnek uygulama için: APLJaK Lineer İnterpolasyon Hesap Makinesi