2010/11 Güz Teknoloji, Algoritma ve Bilgisayar Tarihi Nümerik Analiz Teknoloji insan gereksinimleri ile şekillenmektedir. Đnsan doğduğu andan itibaren yaşamını sürdürmesi için bir şeyler öğrenme çabası içindedir. Böylece insanlar yeni düşünceler ve yeni fikirler geliştirir. Bu da yeni bilgilerin ve buna bağlı olarak yeni teknolojilerin doğmasına neden olur. Đnsanlar bilimsel araştırmaları doğası gereği merak edip sorgulamaları sonucu yaptıkları çalışmalarla meydana getirirler. ’technoslogos’ teknolojinin Latince karşılığıdır. ’techne’ yapmak, ‘logos’ bilmek anlamına gelmektedir. Alet ve edevatın yapılması için gerekli olan bilgi ve yetenektir. Sanayinin en belirgin ögesi teknoloji üretebilmektir. Uluslar teknoloji üretip, bilgiyi ürün tasarlamada kullanabildiği ölçüde ticarette rekabet üstünlüğünü sağlayabilir. Bu yüzden ülkelerin teknoloji üretmesi gelişmişlikleriyle doğrudan ilgilidir. • Đnsan yaşamını kökten etkileyen ve onların daha rahat ve güvenli yaşamalarını sağlayan unsurlar bilgi ve onun teknik birikimi olan teknolojidir. Đnsan yaşadıklarından, gözlemlediklerinden, yaptıklarından, hissettiklerinden, istek ve gereksinimlerinden yararlanarak yaşamını kolaylaştıracak, kendisine yardımcı olacak unsurları üretmiştir. Đnsan bilgisini, becerisini ve merakını karıştırarak araç-gereç, silah, barınak, tarım araçları vb. gereksinimlerini çevrelerinde bulunan kil, taş, tahta gibi malzemelerden yapmıştır. Đnsan gereksinimleri, teknolojinin gelişmesinde en önemli rolü oynamıştır. Đnsan, doğanın yasalaştırdığı evrensel ihtiyaçları değil, kendimize ait olarak algıladığımız ihtiyaçları karşılamak amacıyla teknolojiyi geliştirir. Prof.Dr. Nurettin UMURKAN 1 / 89 Nümerik Analiz 2010/11 Güz • Bilgisayarın tarihi günümüzden yaklaşık 5000 sene evveline dayanmaktadır. Bilgisayar tarihi bilgi işlem, hesaplama ve depolama işlemleri üzerinde gelişme göstermiştir. Bunun nedeni eski çağlardan beri, başka bir değişle insanların birbirleri ile olan ilişkilerinden itibaren sözü edilen işlemler de gelişme göstermiştir. Bu ilişkilerin başında ticari ilişkiler gelmektedir. Üreticinin, ürün miktarı, üretim alanı, üretim maliyeti vb., tüketicinin alım gücü gibi değişkenler, ticareti etkileyen ve bilinmesi gereken önemli bilgilerdir. Ancak bütün bu değişkenler sürekli olarak değişir. Bu nedenle de ticaretle uğraşanların bilgisayarın gelişiminde de önemli yere sahiptir. Bilgisayarlar ilk olarak hesaplama işlemi üzerine geliştirilmişlerdir. • Đlk hesap makinesi ellerdi. Zamanla aynı dili konuşmayan tüccarlar ve diğerleri arasında el-sayı dili gelişti. Sayısal rakamlar on parmağımızı aşınca yeni yöntemler araştırılmaya başlandı. Çakıl taşlarıyla sayıların belli gruplara ayrılmasına "Çakıl Taşı Yöntemi" dendi. Ama bu yöntemle işin çoğunu insan yapıyordu. Bu sıralarda taşınabilir bir çakıl taşı aleti yapma düşüncesi ortaya çıktı. Bundan Abaküs geliştirildi. Çin, Eski Yunan ve Roma'da değişik tür abaküsler kullanıldı. Günümüzde de Asya'nın birçok yöresinde Abaküs kullanılmaktadır. Abaküs, çalışma mantığı olarak ilk bilgisayar olarak nitelendirilebilir. • Abaküs; çağdaş hesap makinelerinin ve bilgisayarların atası sayılan hesap aygıtıdır. Abaküs'te amaç; toplama, çıkarma, çarpma ve bölme yapmaktır. Babilliler'in buluşu olan abaküs, yüzyıllar boyunca ticarette büyük önem taşımıştır. Abaküsün temeli Girit ve Miken'e Prof.Dr. Nurettin UMURKAN 2 / 89 Nümerik Analiz 2010/11 Güz dayanır. Đlk lk yazılı rakamlar 5000 yıl önce Mısırlılar ve Sümerlerde görülüyor. En eski ve yaygın hesap makinesi elin kullanımı ise Mısır'dan Eski Yunan'a, Avrupa, Đslam Ülkeleri, Çin, Hindistan ve Amerika'ya kadar bir çok yerde görülebilir. Çince ismi suan phan olan Çinlilerin kullandığıı Abaküs, toplama çıkarma işlemlerinin i lemlerinin yanı sıra çarpma bölme ve kök alma gibi diğer di er işlemlerin de yapılmasına olanak sa sağlar. Abaküs-1 tirilerek kullanımı M.S. 1000’e kadar • Abaküsün geliştirilerek devam etmiştir. Prof.Dr. Nurettin UMURKAN 3 / 89 Nümerik Analiz 2010/11 Güz • Abaküsün geliştirilmesi ve hesaplama işlemlerinde daha sıklıkla kullanılmaya başlamasının ardından matematiği oldukça yakından ilgilendiren ve gelecek yıllarda bilgisayar mantığını oluşturacak olan “0” sayısı bulunarak kullanılmaya başlandı. “0” ın Harezmi tarafından keşfedilmesi ondalık sayı sistemlerinin ve ileri matematiğin de gelişmesinde en önemli paya sahiptir. Bugün, bütün Batı dünyasında sıfırı anlatmak için kullanılan "zero" kelimesi Arapça "sıfır " kelimesinden geliyor. Algoritma kavramı ilk defa, 780-850 yılları arasında Bağdat’ta yaşamış, matematik, astronomi ve coğrafya alanlarında mühim çalışmalara imza atmış, dünyaca ünlü âlim Harezmî tarafından kullanılmıştır. Harezmî’nin? Hisabü’l-Cebr ve’l-Mukabele? isimli eseri, aynı zamanda ilk algoritma koleksiyonunu oluşturur. Eserin Lâtince tercümesi Avrupa’da da büyük dikkat çekmiştir. Avrupalılar, Prof.Dr. Nurettin UMURKAN 4 / 89 Nümerik Analiz 2010/11 Güz ‘algorizma’yı ‘Arapça sayıları kullanarak aritmetik problemleri çözme kuralları’ mânâsında kullanmışlar, terim daha sonra ‘algoritma’ya dönüşmüştür. Başlangıçta matematiğin bir dalı olarak gelişen algoritma, ‘belli bir problemi çözmek veya bir fiili gerçekleştirmek için takip edilen yol, işlemler dizisi, basamaklar kümesi’ veya ‘insanların problemlere getirdikleri değişik çözüm metotları’ olarak tarif edilir. Sonlu sayıdaki bu işlemler, adımlar veya basamaklar bir noktada başlar ve tarif edilmiş bir netice durumunda sonlanır. Günümüzde algoritma dendiğinde ise, daha çok bilgisayar programlarında kullanılan, sıralama, arama vb. işlemlerde takip edilen yollar akla gelmektedir. Bilgisayarların her alanda problem çözmede kullanılmasına paralel olarak, algoritmalar oldukça yaygınlaşmıştır. Günümüzde fizik, kimya, biyoloji, müzik dâhil birçok sahada algoritmalar kullanılmaktadır. • 15.yy’dan itibaren dünyanın ticari, kültürel, politik ve askeri merkezi Avrupa’ya kaymaya başlamıştır. Bilimsel çalışmalar Avrupa’da odaklanmaya ve yayılmaya başlamıştır. Avrupalı bilim adamları çeşitli alanlardaki bilimsel çalışmalar için, giderek artan bir yoğunlukta aritmetiksel işlemler ile ilgileniyorlardır. 17.yy’ın ilk yarısında (1600) Đskoç Matematikçi John Napier hesaplama işlemlerini çok kısa sürede yapabilen ve her biri 20 cm uzunluğunda 10 çubuktan oluşan, “Napier’s Rods or Bones – Napier’in Çubukları veya Kemikleri” ismini verdiği aracı geliştirdi. Prof.Dr. Nurettin UMURKAN 5 / 89 Nümerik Analiz 2010/11 Güz Napier’in Çubukları (Kemikleri) • Napier’in geliştirmiş geliş olduğuu bu araç çarpma işlemlerinin erinin çok daha hızlı ve basit bir biçimde gerçekleştirilmesini tirilmesini sağlıyordu. sa lıyordu. Özellikle birden çok basamaklı sayılarla yapılan çarpma iş işlemlerinde i oldukça yararlı bir araçtı. Örneğin Örne in 63 ile 6 sayısının çarpımını verelim. Öncelikle 6 ve 3 rakamlarının üzerindee bulunduğu bulundu u çubuklar yan yana konuyor. Çarpılacak olan rakamın (6) çubuğu çubu u ile aynı hizada olan rakamlar çapraz olarak toplanıyor ve sonuç bulunuyor. • 63 x 6 = 378 dir. Prof.Dr. Nurettin UMURKAN 6 / 89 Nümerik Analiz • 63 x 65 = 4095 dir. 2010/11 Güz • 1617’de John Napier, bölmenin çıkarma işlemi i mantı mantığı ile, çarpmanın nın ise toplama işlemi i mantığıı ile yapıldı yapıldığını kanıtlamıştır. Prof.Dr. Nurettin UMURKAN 7 / 89 2010/11 Güz Nümerik Analiz • 1621 yılında William Oughtred, logaritmik hesaplamalarda kullanılmak üzere Slide Rule (Sürgülü cetvel)’u geliştirmiştir. Bu araç da John Napier’in geliştirdiği araç gibi çarpma ve bölme işlemlerini kolaylaştırmak amacıyla geliştirilmiştir. Sürgülü cetvel, önceleri çok karmaşık ve zor kullanımlı bir araç olarak kabul edilmesine rağmen daha sonraları tüm matematik işlemlerinde yoğun olarak kullanılan bir araç haline gelmiştir. • Oughtred, matematikte kullanılan birçok sembolün de öncüsü olmuştur. Çarpma işlemi için “x”, bölme işlemi için “:” sayısal karşılaştırmalarda “<, >” gibi sembolleri geliştirmiştir. John Napier William Oughtred Prof.Dr. Nurettin UMURKAN 8 / 89 Nümerik Analiz 2010/11 Güz • 1624 yılında Wilhelm Schickard ilk kez dör dört işlemi bir arada yapabilen hesap makinesini Almanya’daki Heidelberg Üniversitesinde geliştirdi. geli tirdi. Schickard geliştirmiş olduğuu araç ile astronomi, matematik, alan ölçümleri, yüz ölçümü hesaplama ve haritacılık işlemlerinde lemlerinde kullanmıştır. kullanmı Geliştirmiş oldu olduğu cihaz oldukça karmaşık karma ık ve herkesin kolaylıkla kullanamayacağı ğı bir çalışma çalı ma sistemine sahipti. Prof.Dr. Nurettin UMURKAN 9 / 89 2010/11 Güz Nümerik Analiz Wilhelm Schickard Schickard’ın 1642’de geliştirdiğii hesap makinesinin taslağı 1957’de yeniden dizayn edilen Schickard’ın hesap makinesi • 1642 yılında Fransız bilim adamı Blaise Pascal, kendisinden daha önce geliştirilmiş geli olan hesaplama makinelerini de inceleyerek Arithmetic Arithmetic Machine Pascaline adıyla tanınan bir hesap makinesi geliştirmiştir. tir. Blaise Pascal, bir vergi dairesinde çalışmaktaydı. maktaydı. Yapmı Yapmış olduğu iş,, tekrarlı işlemlerin i çabuk ve güvenilir bir biçimde yapılmasını gerektiriyordu. Pascal işini i ini daha kolay ve hızlı yyapmak amacıyla bir hesaplama makinesi geliştirdi. geli tirdi. Toplanacak Prof.Dr. Nurettin UMURKAN 10 / 89 2010/11 Güz Nümerik Analiz sayılar telefon ahizesindeki gibi çevrilerek belirleniyordu. Bu işlem araç içerisindeki dişlileri harekete geçiriyor ve sonuçlar bir pencereden izleniyordu. Ayrıca, Pascal üçgenini de yaratan bilim adamıdır. Blaise Pascal Pascaline (Sayıların girildiği ve hesaplamaların okunduğu kapağın üstü) Prof.Dr. Nurettin UMURKAN Pascaline (Đç görünüm) 11 / 89 2010/11 Güz Nümerik Analiz Pascaline’nın kullanımı Pascal Üçgeni (Pascal Triangle) Nümerik Analizin Amacı Matematiksel problemlerin çözümlenebilmesi için uygun ve en iyi yaklaşım ım veren yöntemleri bulmak, ayrıca bunlardan anlamlı ve faydalı sonuçlar çıkarmaktır. Çözümü istenenn problemi tanımlamak ve sonuca varacak yöntemi saptamak genellikle aynı bilim adamının iişidir. Bu nedenle problemi tanımlayanın bir nümerik analizcinin sahip olduğuu bilgilerin en azına sahip olması gerekir. Problemin çözümünde bir takım aşamalardan a geçilerek rek sonuca varılır. Bu aşamalardan amalardan ilki problemin formüle edilmesidir. Fiziksel bir olayın matematiksel modelinin formüle edilmesinde nümerik analizci, problemini bilgisayar ile çözümleyece çözümleyeceğini gözönünde bulundurmalıdır. Formülasyon yapıldıktan sonra problemin problemin çözümü için hata analizi ile birlikte nümerik yöntem en iyi yaklaş yakla yaklaşımla sonuç elde edilecek şekilde ekilde seçilmelidir. Nümerik çözüm yöntemi, Prof.Dr. Nurettin UMURKAN 12 / 89 Nümerik Analiz 2010/11 Güz belirtilen ya da istenilen hassaslıktaki yaklaşımla ve belli sayıda ardışık tekrar işlemlerinden sonra matematiksel probleme çözüm getirmelidir. Nümerik çözüm yöntemleri genellikle önceden saptanmış aritmetik ve mantıksal işlemlerden oluşur. Bu işlemlerin tümüne çözüm algoritması denir. Algoritma belli sayıda işlemlerden sonra probleme çözüm getirir. Problemin bilgisayar ile çözümünde üçüncü aşama, algoritmanın bilgisayarda çözümünü sağlayacak programlama aşamasıdır. Programlama; C, Pascal, Basic, Cobol, Fortran gibi bilgisayar dillerinden birisi ile yapılır. Nümerik Analizde Problem Türleri: 1. Yaklaşık hesaplamalar • Enterpolasyon • Đntegrasyon • Türev ve diferansiyel • Serilerin toplamı • Eğri Uydurulması 2. Fonksiyonel Denklemler • Adi Diferansiyel Denklemler • Kısmi Türevli Diferansiyel Denklemler • Minimizasyon • Đntegral Denklemler • Benzeşim (Simulation) 3. Cebir Prof.Dr. Nurettin UMURKAN 13 / 89 Nümerik Analiz • Kök Bulma • Lineer Denklem Sistemleri • Lineer Olmayan Denklem Sistemleri 2010/11 Güz 4. Matris Problemleri • Lineer Denklemler • Determinant • Bir Matrisin Đnversi • Öz değer ve öz vektörler Hatalar Veri Hataları Hesaplamalarda kullanılacak verilerde bulunan hatalardır. Ölçme ile elde edilen verilerde, ölçme hatasından veya aletlerin ölçüm hassasiyetleri kaynaklı hatalar meydana gelmektedir. Kesme Hataları Hesaplamalarda kullanılan sonsuz terimli serilerin belli bir yerden kesilmesi ve geri kalan terimlerin atılması sonucunda oluşan hatalardır. Π, e ve 7 gibi büyüklükler sonlu sayıda basamakla tam olarak ifade edilemezler. Π=3.141592653589793238462643…. Prof.Dr. Nurettin UMURKAN 14 / 89 2010/11 Güz Nümerik Analiz Şeklinde sonsuza kadar gider. Sayısal işlemler sonlu sayıda rakamla yapıldıkları için bu tip sayılar hiçbir zaman işlemlerde tam olarak ifade edilemez. x x 2 x3 xn e = 1 + + + ⋅⋅⋅ + 1! 2! 3! n! x Örneğin yukarıdaki Maclaurin Serisi açılımında herhangi bir x değerine karşılık gelen ex değerinin, sonsuz sayıda terim kullanılarak hesaplanamaması nedeniyle, ancak belirli terimler kesilerek hesaplanabilirler. Yuvarlama Hataları Bu tür hatalar genellikle ondalık yazılımın son hanesini etkiler. Bilgisayarlar kendisine veri olarak girilen ya da işlem sonucu elde edilen sayıları sınırlı sayıda basamaklı çalışır. Bazı rakamların yuvarlama ile basamak sayısının azaltılması, yuvarlama hatasına neden olur. Mutlak Hata Gerçek değeri y olan bir büyüklüğün yaklaşık değeri p ise, y-p farkı p yaklaşık ifadesinin hatasını gösterir. p nin mutlak hatası ∆(p), y − p ≤ ∆( p ) Prof.Dr. Nurettin UMURKAN 15 / 89 2010/11 Güz Nümerik Analiz p sayısının y sayısını ∆(p) kadar bir hata ile temsil etmesi, y ≈ p[∆( p )] şeklinde ifade edilir. Ayrıca mutlak hata ε(p) şeklinde de gösterilebilir. Mutlak hata ifadesinden, hata sayısal olarak belirlenir ancak yaklaşım hassaslığı açısından fikir vermez. Örneğin, A≈9999[0.01] B≈9[0.01] sayıları incelendiğinde her iki sayı için yapılan mutlak hata 0.01 dir. Birinci sayı büyük olduğundan, bu sayıdaki hata ikinciye göre önemsizdir. Bu nedenle ölçümün veya hesaplamanın hassasiyeti ölçülen ya da hesaplanan büyüklüğe de bağlıdır. Bağıl Hata Yaklaşık değeri p olan bir büyüklüğün mutlak hatası ∆(p) ise, εp = ∆( p ) %100 p şeklinde ifade edilir. ε p ye yaklaşımın (p) yüzde bağıl hatası denir. ε t ise gerçek (y) bağıl yüzde hatası olarak, εt = ∆( p ) %100 y ile ifade edilir. Sayısal yöntemlerdeki zorluklardan biri de, gerçek değer hakkında bilgi sahibi olmadan hata tahmini yapmaktır. Prof.Dr. Nurettin UMURKAN 16 / 89 2010/11 Güz Nümerik Analiz Đteratif hesaplamalar yapan sayısal yöntemlerde hata analizi genellikle son elde edilen yaklaşım ile bir önceki yaklaşım arasındaki fark olarak yapılır. Bu durumda bağıl yüzde hata, son yaklaşım - bir önceki yaklaşım %100 son yaklaşım εa = ile ifade edilir. Çoğu zaman hesap yapılırken hatanın işareti ile ilgilenilmez, ancak yüzde hatanın mutlak değerinin önceden verilen tolerans yüzdesinden daha küçük olup olmadığına bakılır. εs εa < εs Bu sağlanırsa sonucun önceden belirlenmiş kabul edilebilir hata sınırları içinde kaldığı kabul edilir. Sonlu Farklar Sonlu farklar hesabı nümerik analizde geniş kullanılma alanına sahiptir. Matematiksel problemler değişkenlerin sürekli fonksiyonları olarak verilir ve bu fonksiyonlar kapalı bir formülle tanımlanır (örneğin; y = f ( x) = 3x 2 + 5 x − 6 ). Bağımsız değişkenlerin verilmiş değerleri için fonksiyonların değerleri hesaplanabilir. Bir başka şekilde de fonksiyon, bağımsız değişkenlerin her bir değerine karşılık gelen değerlerin bir cümlesi (örneğin; x1 , y1; x2 , y 2 ; x3 , y 3 ) olarak tanımlanabilir. Bu durumda süreklilik aralığında herhangi bir noktada formülle tanımlama yoktur. Sonlu farklar kullanılarak, aralığın içinde herhangi bir noktada fonksiyonun değeri için iyi bir yaklaşım bulmak mümkündür. Prof.Dr. Nurettin UMURKAN 17 / 89 Nümerik Analiz Đleri Farklar Bir y = f (x) fonksiyonu verildiğinde, 2010/11 Güz ∆f ( x) = f ( x + h) − f ( x) şeklinde tanımlanan işlemi yaptıran ∆ sembolüne ileri fark operatörü denir. Burada h, “fark aralığı, adım” olarak adlandırılmıştır. ∆f (x) yada ∆y ifadesine f(x) fonksiyonunun birinci mertebeden ileriye farkı denir. 2 f(x) fonksiyonunun ikinci mertebeden ileriye farkı, ∆ f ( x) şeklinde gösterilir ve ∆2 f ( x) = ∆[∆f ( x)] = ∆[ f ( x + h) − f ( x)] şeklinde ifade edilir. En genel halde, f ( x) = f i ve f ( x + kh) = f i+k ile gösterilmek üzere ∆n f ( x ) = ∆(∆n −1 f i ) = ∆n −1 f i +1 − ∆n −1 f i şeklinde tanımlanır. Bir Polinomun Farkları Bir polinomun y0 , y1 , y2 ,..., yn +1 gibi n+2 değerinin verilmiş olduğu kabul edilirse, bu değerler yardımıyla oluşturulan ∆y0 = y1 − y0 ∆y1 = y2 − y1 ∆y2 = y3 − y2 . . . . . . . . . ∆y n = y n+1 − yn Prof.Dr. Nurettin UMURKAN 18 / 89 2010/11 Güz Nümerik Analiz farklarına verilen polinomun birinci dereceden ileri farkları denir. Birinci dereceden ileri farklar ile, ∆2 y0 = ∆y1 − ∆y0 ∆2 y1 = ∆y2 − ∆y1 ∆2 y2 = ∆y3 − ∆y2 . . . . . . . . . ∆2 y n −1 = ∆y n − ∆y n−1 şeklinde elde edilen farklara verilen polinomun ikinci dereceden ileri farkları denir. y = f (x) polinomunda x = a + kh dönüşümü yapıldığında y ‘ ler yk ile gösterilsin. Yani yk = f (a + kh) olur ki bu durumda, ∆yk = yk +1 − yk farkı k ‘ıncı birinci mertebeden ileri fark olarak adlandırılır. k = 0, 1, 2, . . . alınırsa x ‘in ardışık değerleri için y fonksiyonunun ileri fark tablosu aşağıdaki gibi hesaplanır. x a y y0 = f ( a ) a+h a + 2h y1 = f ( a + h ) a + 3h y3 = f (a + 3h ) a + 4h y4 = f ( a + 4 h ) y2 = f ( a + 2h ) ∆y ∆2 y ∆3 y ∆y0 = y1 − y0 2 ∆y1 = y2 − y1 ∆ y0 = ∆y1 − ∆y0 ∆3 y = ∆2 y − ∆2 y 0 1 0 2 ∆y2 = y3 − y2 ∆ y1 = ∆y 2 − ∆y1 ∆3 y = ∆2 y − ∆2 y 1 2 1 2 ∆ y = ∆ y − ∆ y 2 3 2 ∆y 3 = y 4 − y 3 Prof.Dr. Nurettin UMURKAN 19 / 89 Nümerik Analiz Bölünmüş Farklar 2010/11 Güz x ‘in x0 , x1 , . . ., xn değerleri için sırasıyla f(x0), f(x1), . . ., f(xn) değerlerini alan bir fonksiyon için f(x) ‘in herhangi iki ardışık değeri f(xi) ve f(xj) ise birinci bölünmüş fark, f ( xi , x j ) = f ( x j ) − f ( xi ) x j − xi formülü ile tanımlanır. Benzer şekilde f(x) ’in iki tane birinci bölünmüş farkı f(xi, xj) ve f(xj, xk) ise ikinci bölünmüş fark, f ( xi , x j , xk ) = f ( x j , xk ) − f ( xi , x j ) xk − xi olur. Bölünmüş farklar başka notasyonlarla da gösterilebilirler. Örneğin, f(xi, xj, xk ) yerine [xi, xj, xk] gibi. Bir başka örnek olarak üçüncü dereceden f(x0, x1, x2, x3 ) bölünmüş farkını alırsak, f ( x0 , x1 , x2 , x3 ) = f ( x1 , x2 , x3 ) − f ( x0 , x1 , x2 ) x3 − x0 formülü ile hesaplanır. y = f ( x ) fonksiyonu için bölünmüş fark tablosu, Prof.Dr. Nurettin UMURKAN 20 / 89 2010/11 Güz Nümerik Analiz x f (x) x0 f (x0 ) f (x0 , x1 ) x1 f (x1 ) f (x0 , x1, x2 ) f (x1, x2 ) x2 f (x2 ) f (x0 , x1, x2 , x3 ) f (x1, x2 , x3 ) f (x2 , x3 ) x3 f (x3 ) L L L L L şeklinde ifade edilebilir. ÖRNEK: y = x2 fonksiyonunun x = 0, 1, 3, 4, 7 değerleri için bölünmüş fark tablosunu oluşturunuz. Prof.Dr. Nurettin UMURKAN 21 / 89 2010/11 Güz Nümerik Analiz x 0 f (x) 0 1 1 1 1 4 3 9 1 7 4 16 1 11 7 49 ENTERPOLASYON Matematiksel problemler değişkenlerin sürekli fonksiyonları olarak ifade edilebilir. Bu fonksiyonlar kapalı bir formülle tanımlanır ve bağımsız değişkenlerin değerleri için fonksiyonların değerleri hesaplanır. Fonksiyonlar, bağımsız değişkenlerin her bir değerine karşılık gelen fonksiyon değerlerinin bir cümlesi olarak da tanımlanabilir. Bu durumda kapalı bir formül verilmemiştir. Sonlu farklar kullanılarak, değişkenlerin herhangi bir ara değerine karşılık gelen fonksiyon değerleri için iyi bir yaklaşım bulunabilir. Pratikte karşılaşılan problemlerin çoğunu kapalı bir formül şeklinde tanımlamak mümkün ise de, ayrık noktalar cümlesinde sonlu farklar kullanılarak çözüm elde etmek daha kolay olduğu için daha fazla tercih edilir. Veri noktaları arasında ara değer hesabı gereksinim problemi fen ve mühendislikte sıkça karşılaşılır. Örneğin, bir bina için bilgisayarlı enerji kontrol sistemi dizaynında giriş verisi olarak, hergün binada meydana gelen tipik ısı değişimi gerekebilir. Örnek ısı değerleri ayrık zaman noktalarında bina içinde ölçülmelidir. Prof.Dr. Nurettin UMURKAN 22 / 89 2010/11 Güz Bununla birlikte enerji kontrol sistemi bilgisayar programı için, Nümerik Analiz örnek olarak saatlik artışlarla ısı ölçümleri gerekebilir. Bu problemi çözmenin bir yolu ölçülen ısı değerlerinin, ölçüm zamanları arasındaki ara değerleri için bir eğri ile tarif edilmesidir. Bütün enterpolasyon algoritmalarının temeli, veri çizelgesinin bir alt kümesi için bazı fonksiyonlar ya da eğri tipleri uydurmaktır. Enterpolasyon algoritmalarının eğrileri, gerçek fonksiyon eğrilerinden farklıdır. Genel anlamda enterpolasyon, bilinmeyen bir f (x ) fonksiyonunun gibi ayrık noktalarda bilinen x0 , x1 , x 2 ,..., xn f ( x0 ), f ( x1 ), f ( x 2 ),..., f ( x n ) değerlerini kullanarak, bu fonksiyonun daha basit ve bilinen bir P( x) fonksiyonu ile ifade edilmesi işlemidir. Bu P( x) fonksiyonuna, enterpolasyon fonksiyonu adı verilir. Enterpolasyon fonksiyonunun kullanılır. seçiminde, başlıca iki teorem f (x ) 1. Eğer fonksiyonu [a, b] aralığında sürekli enterpolasyon fonksiyonu olarak polinom kullanılabilir. 2. Periyodu 2π olan herhangi bir sürekli fonksiyon için n n k =0 k =1 ise, P(x ) = ∑ ak cos kx + ∑ bk sin kx şeklinde sonlu bir trigonometrik seri enterpolasyon fonksiyonu olarak kullanılabilir. Prof.Dr. Nurettin UMURKAN 23 / 89 Nümerik Analiz Lineer Enterpolasyon Enterpolasyon fonksiyonu düz enterpolasyon fonksiyonu, 2010/11 Güz bir çizgiden oluşur. Lineer P( x ) = b0 + b1 x şeklinde ifade edilebilir. Burada iki adet bilinmeyen katsayı (b0, b1) bulunmaktadır. Katsayı değerlerini elde etmek için en az iki adet değişken değeri ve bu değişkenlere karşılık gelen gerçek fonksiyon değerleri bilinmelidir. Bilinen değişken değerleri xi ve xi+1, fonksiyon değerleri de sırasıyla f(xi) ve f(xi+1) olsun, denklemde xi , f(xi) ve xi+1, f(xi+1) değerleri kullanılarak, f ( xi ) = b0 + b1 xi f ( xi +1 ) = b0 + b1 xi +1 elde edilen iki bilinmeyenli iki denklem çözülerek f ( xi ) − f ( xi +1 ) b0 = f ( xi ) − xi xi − xi +1 b1 = f ( xi ) − f ( xi +1 ) xi − xi +1 denklemin katsayıları bulunarak, f ( xi ) − f ( xi +1 ) f ( xi ) − f ( xi +1 ) P ( x) = f ( xi ) − x + i x xi − xi +1 xi − xi +1 elde edilir. Prof.Dr. Nurettin UMURKAN 24 / 89 2010/11 Güz Nümerik Analiz ÖRNEK : f ( x) = x 3 fonksiyonunun değerleri tabloda verilmiştir. x = 2.2 için enterpolasyon fonksiyonunun değerini bulalım. x f(x) 0 0 1 1 2 8 3 4 27 64 Burada xi ve xi+1 için 2 ve 3 değerleri, f(xi) ve f(xi+1) için de 8 ve 27 değerleri tablodan alınır. (5) denklemi kullanılarak, 8 − 27 8 − 27 P( x) = 8 − 2+ x 2−3 2−3 olur ve lineer enterpolasyon fonksiyonu P ( x) = −30 + 19 x olarak elde edilir. Enterpolasyon fonksiyonu x = 2.2 nin küpünü 11.8 olarak bulmuştur. Gerçek değer olarak 2.2 nin küpü 10.648 dir. Enterpolasyon hatası 1.152 ya da % 10.8 olarak gerçekleşti. Aynı denklemde x = 4 için enterpolasyon değeri % 28 hata ile 46 olarak hesaplandı. Bu durum şekilden de görülmektedir. Lineer enterpolasyon fonksiyonu elde edilirken daima hesaplanacak değerin arada kaldığı bilinen sınır değerleri kullanılmalıdır. Sınır değerlerin dışında kalan bölge için hesaplanan fonksiyon değerlerinde hata oranı artabilmektedir. Prof.Dr. Nurettin UMURKAN 25 / 89 Nümerik Analiz Gregory-Newton Enterpolasyon Yöntemi 2010/11 Güz Bir f (x ) fonksiyonunun x1 , x2 , K xn+1 gibi aralıkları eşit olan ayrık noktalarda bilinen f (x1 ), f (x2 ), K , f (xn+1 ) değerleri varsa ve bu f (x ) fonksiyonunun, enterpolasyon fonksiyonu P(x) ‘i veren GregoryNewton enterpolasyon yönteminde, n. dereceden bir enterpolasyon polinomu, P( x ) = a1 + a2 ( x − x1 ) + a3 ( x − x1 )( x − x2 ) + a4 ( x − x1 )( x − x2 )( x − x3 ) + ... + an ( x − x1 )( x − x2 )...( x − xn −1 ) + an + 1 ( x − x1 )( x − x2 )...( x − xn ) şeklinde ifade edilmiştir. Buradaki bilinmeyen katsayılardan a1 için, eşitlikte x ve P(x) yerine sırasıyla x1 ve f (x1 ) değerleri yazılırsa, a1 = f ( x1 ) olarak elde edilir. a2 bilinmeyen katsayısının çözümü için, eşitlikte x ve P(x) yerine sırasıyla x2 ve f (x2 ) değerleri yazılırsa, a2 = f ( x2 ) − a1 f ( x2 ) − f ( x1 ) = x2 − x1 x2 − x1 şeklindedir. Elde edilen a1 ve a 2 değerleri ile x3 , f ( x3 ) kullanılarak a3 için denklemden, f ( x3 ) = a1 + a2 ( x3 − x1 ) + a3 ( x3 − x1 )( x3 − x2 ) bulunur, buradan a3 çözülerek, a3 = f (x3 ) − a1 − a2 (x3 − x1 ) (x3 − x1 )(x3 − x2 ) şeklinde elde edilir. Prof.Dr. Nurettin UMURKAN 26 / 89 Nümerik Analiz ÖRNEK : 2010/11 Güz x 1 2 3 4 f(x) 1 8 27 64 Tablo değerleri kullanılarak Gregory-Newton yöntemiyle ikinci dereceden bir polinom için, önce [1, 1] kullanılarak, a1 = f ( x1 ) = 1 ve [2, 8] kullanılarak denklemden, a2 = 8 −1 =7 2 −1 ve son olarak [3, 27] değeri kullanılarak denklemden, a3 = 27 − 1 − 7(3 − 1) =6 (3 − 1)(3 − 2) şeklinde katsayılar elde edilir. Katsayılar yerine yazılarak, P ( x) = 1 + 7( x − 1) + 6( x − 1)( x − 2) olur. Denklem düzenlendiğinde enterpolasyon polinomu, P ( x) = 6 − 11x + 6 x 2 olarak elde edilmiştir. x = 2.2 için P ( 2.2) = 10.84 değeri elde edilir. ÖRNEK : 40o ve 72o C sıcaklık değerleri arasındaki suyun buhar basıncı verileri aşağıdaki tabloda verildiği gibidir. T(oC) 40 48 56 64 72 P(mm Hg) 55.3 83.7 123.8 179.2 254.5 Enterpolasyon polinomunda 52oC için buhar basıncı ? Prof.Dr. Nurettin UMURKAN 27 / 89 2010/11 Güz Gregory-Newton ifadesindeki katsayıların elde edilişi aşağıda tabloda Nümerik Analiz verilmiştir. i T(oC) P(mm Hg) 1 2 3 4 5 40 48 56 64 72 Eşitlik ‘den ai 55.3 83.7 123.8 179.2 179.2 = a1 + a2 (64 − 40) + a3 (64 − 40)(64 − 48) 55.3 3.55 0.0914063 0.001172 254.5 + a4 (64 − 40)(64 − 48)(64 − 56) 254.5 = a1 + a2 (72 − 40) + a3 (72 − 40)(72 − 48) 0.00001017 55.3 = a1 83.7 = a1 + a2 (48 − 40) 123.8 = a1 + a2 (56 − 40) + a3 (56 − 40)(56 − 48) + a4 (72 − 40)(72 − 48)(72 − 56) + a5 (72 − 40)(72 − 48)(72 − 56)(72 − 64) Katsayılar yerine yazıldığında, P (T ) = 55.3 + 3.55(T − 40) + 0.0914063(T − 40)(T − 48) + 0.001172(T − 40)(T − 48)(T − 56) + 0.00001017(T − 40)(T − 48)(T − 56)(T − 64) şeklindedir. Enterpolasyon polinomunda 52oC için buhar basıncı, P(52) = 102.0 mm Hg olarak elde edilir. n=5; % for i=1:n % m=input('x degeri: '); % x(i)=m; % end % for i=1:n % k=input('y degeri: '); % y(i)=k; % end x(1)=40; x(2)=48; x(3)=56; x(4)=64; x(5)=72; y(1)=55.3; y(2)=83.7; y(3)=123.8; y(4)=179.2; y(5)=254.5; for i=1:n switch i case 1 Prof.Dr. Nurettin UMURKAN 28 / 89 2010/11 Güz Nümerik Analiz a(1)=y(1); case 2 a(2)=(y(2)-y(1))/(x(2)-x(1)); case 3 a(3)=(y(3)-a(1)-a(2)*(x(3)-x(1)))/((x(3)-x(1))*(x(3)-x(2))); case 4 a(4)=(y(4)-a(1)-a(2)*(x(4)-x(1))-a(3)*(x(4)-x(1))*(x(4)x(2)))/((x(4)-x(1))*(x(4)-x(2))*(x(4)-x(3))); case 5 a1=y(5)-a(1)-a(2)*(x(5)-x(1))-a(3)*(x(5)-x(1))*(x(5)-x(2))a(4)*(x(5)-x(1))*(x(5)-x(2))*(x(5)-x(3)); a2=(x(5)-x(1))*(x(5)-x(2))*(x(5)-x(3))*(x(5)-x(4)); a(5)=a1/a2; end end for i=1:n f=a(i); fprintf(' %12.8f\n', f); end 55.30000000 3.55000000 0.09140625 0.00117188 0.00001017 >> Newton Đleri Fark Enterpolasyon Formülü x1 , x2 ,... xn +1 gibi aralıkları eşit olan ayrık noktalarda bilinen f ( x1 ), f ( x2 ),..., f ( xn +1 ) değerleri için enterpolasyon fonksiyonu P (x ) , s n s s 2 P( x ) = y0 + ∆y0 + ∆ y0 + ... + ∆ y0 1 2 n şeklinde ifade edilir. Burada, s katsayısına, binom katsayısı adı verilir ve i s s( s − 1)(s − 2)...(s − i + 1) = i! i Prof.Dr. Nurettin UMURKAN 29 / 89 2010/11 Güz Nümerik Analiz şeklindedir. Đfade düzenlendiğinde, s( s − 1) 2 s( s − 1)(s − 2) 3 ∆ y0 + ∆ y0 + ... 2! 3! s(s − 1)...(s − n + 1) n + ∆ y0 n! x − x0 s = dir. Đfade de yerine yazıldığında, olur. Burada h x − x0 x − x0 − 1 x − x0 h h ∆2 y + P( x ) = y0 + ∆y0 + 0 2! h x − x0 x − x0 x − x0 − 1 − 2 h h h ∆3 y + ... + 0 3! olur. Đfade düzenlendiğinde, P(x ) = y0 + s∆y0 + x − x0 ( x − x0 )( x − ( x0 + h)) 2 ( x − x0 )( x − x1)( x − x2 ) 3 ∆ y0 ∆y0 + ∆ y0 + 2 3 h 2! h 3! h ( x − x0 )...( x − xn −1) n + ... + ∆ y0 n! hn P(x ) = y0 + olarak elde edilir. Aynı ifade, Gregory-Newton enterpolasyon yönteminin ifadesinde katsayılar ileri farklar ile yeniden düzenlenerek, a0 , a1,..., an katsayıları, a0 = y0 ; y −y ∆y a1 = 1 0 = 0 x1 − x0 h ∆2 y a2 = 2 0 h 2! ; a3 = ∆3 y0 h3 3! Prof.Dr. Nurettin UMURKAN an = ∆n y0 h n n! 30 / 89 2010/11 Güz olarak elde edilir. Formülde yerine yazıldığında, Newton Đleri Fark Nümerik Analiz Enterpolasyon Formülü elde edilir. Newton Đleri Fark Enterpolasyon Formülü en genel anlamda, ∆y0 ∆2 y0 ∆3 y0 P( x ) = y0 + ( x − x0 ) + ( x − x0 )( x − x1 ) + ( x − x0 )( x − x1 )( x − x2 ) h 2! h 2 3! h3 ∆n y0 + ... + ( x − x0 )...( x − xn −1 ) n! h n şeklinde ifade edilir. h=1 ve x0=0 ise ifade, ∆2 y0 ∆3 y0 P( x ) = y0 + ∆y0 x + x( x − 1) + x( x − 1)( x − 2) 2! 3! ∆n y0 + ... + x( x − 1)...( x − xn −1 ) n! ÖRNEK: x y 0 1 1 2 2 4 y 1 ∆y ∆2y x=0.5 için P(x)=? Đleri fark tablosu, x 0 1 1 2 1 2 2 4 şeklinde elde edilir. Tablo değerleri formüle uygulandığında, ∆2 y0 P( x ) = y0 + ∆y0 x + x( x − 1) 2! Prof.Dr. Nurettin UMURKAN 31 / 89 Nümerik Analiz P( x ) = 1 + x + 1 1 1 x( x − 1) = x 2 + x + 1 2 2 2 2010/11 Güz P(0.5) = 1.37 ÖRNEK: x y 2 10 4 50 6 122 8 226 10 362 Yukarıdaki tabloyu kullanarak enterpolasyon polinomunu ve x=3 noktasındaki değerini bulunuz. Đleri fark tablosu, x y 2 10 ∆y ∆2y ∆3y 40 4 50 32 72 6 122 0 32 104 8 226 0 32 136 10 362 şeklinde elde edilir. Tablo değerleri formüle uygulandığında, ∆y 0 ∆2 y 0 ( x − x0 ) + ( x − x0 )( x − x1 ) P( x ) = y0 + 2 h 2! h 40 32 P( x ) = 10 + ( x − 2) + ( x − 2)( x − 4 ) 2 2 2! 2 2 P( x ) = 4 x − 4 x + 2 P(3) = 26 clc n=8; x(1)=1; x(2)=2; x(3)=3; Prof.Dr. Nurettin UMURKAN 32 / 89 2010/11 Güz Nümerik Analiz x(4)=4; x(5)=5; x(6)=6; x(7)=7; x(8)=8; y(1)=1; y(2)=8; y(3)=27; y(4)=64; y(5)=125; y(6)=216; y(7)=343; y(8)=512; for i=1:n-1 a(i)=y(i+1)-y(i); e=a(i); fprintf('%f\n', e); end for i=1:n-2 f=a(i+1)-a(i); b(i)=f; if f~=0 fprintf(' %f\n', f); end end for i=1:n-3 c(i)=b(i+1)-b(i); g=c(i); if g~=0 fprintf(' end %f\n', g); end for i=1:n-4 k(i)=c(i+1)-c(i); g=k(i); if g~=0 fprintf(' end end %f\n', g); for i=1:n-5 m(i)=k(i+1)-k(i); g=m(i); if g~=0 fprintf(' end Prof.Dr. Nurettin UMURKAN %f\n', g); 33 / 89 Nümerik Analiz end 2010/11 Güz for i=1:n-6 k(i)=m(i+1)-m(i); g=k(i); if g~=0 fprintf(' end end %f\n', g); for i=1:n-7 r(i)=k(i+1)-k(i); g=r(i); if g~=0 fprintf(' end %f\n', g); end 7.000000 19.000000 37.000000 61.000000 91.000000 127.000000 169.000000 12.000000 18.000000 24.000000 30.000000 36.000000 42.000000 6.000000 6.000000 6.000000 6.000000 6.000000 >> Đleri Farklar Enterpolasyon formülü sadece sabit adım aralıklı değişkenli problemlere uygulanabilir. Adım aralığının sabit olmadığı durumlarda, değişken dönüşümü yapılarak adım aralığı sabit hale getirildikten sonra yöntem uygulanabilir. Prof.Dr. Nurettin UMURKAN 34 / 89 2010/11 Güz Nümerik Analiz ÖRNEK: x y -1 2 0 1 3 10 8 65 15 226 24 577 Yukarıdaki tabloyu kullanarak enterpolasyon polinomunu bulunuz. Değişkenin adım aralığı sabit olmadığı için x , z ‘nin fonksiyonu olarak tanımlanır. x= f(z) z x y 0 -1 2 1 0 1 2 3 10 Đleri fark tablosu, z x 0 -1 3 8 65 ∆x 4 15 226 5 24 577 ∆2x 1 1 0 2 3 2 3 2 5 3 8 2 7 4 15 2 9 5 24 şeklinde elde edilir. Tablo değerleri formüle uygulandığında, değişken x ve fonksiyon y için formül, ∆2 y0 P( x ) = y0 + ∆y0 x + x( x − 1) 2! Prof.Dr. Nurettin UMURKAN 35 / 89 2010/11 Güz Nümerik Analiz olacaktı, değişken z ve fonksiyon x için aynı ifade ∆2 x0 f ( z ) = x0 + ∆x0 z + z ( z − 1) 2! şeklinde ifade edilir. Tablo değerleri yerine yazıldığında, x = f ( z ) = −1 + z + z ( z − 1) = z 2 − 1 z = x +1 olarak örnek problem için değişken dönüşüm ifadesi elde edilir. z değişkeni ve y fonksiyonu için ileri fark tablosu, z 0 y 2 ∆y ∆2y ∆3y ∆4y -1 1 1 10 9 2 10 36 46 55 3 65 60 106 161 4 24 226 24 84 190 351 5 577 Formül z değişkeni ve y fonksiyonu için düzenlendiğinde, ∆2 y0 ∆3 y0 P( z ) = y0 + ∆y0 z + z ( z − 1) + z ( z − 1)( z − 2) + 2! 3! ∆4 y0 + z ( z − 1)( z − 2)( z − 3) 4! Prof.Dr. Nurettin UMURKAN 36 / 89 2010/11 Güz Nümerik Analiz 10 36 24 z ( z − 1) + z ( z − 1)( z − 2) + z ( z − 1)( z − 2)( z − 3) 2! 3! 4! parantez çarpımları yapılarak, P( z ) = 2 − z + P( z ) = z 4 − 2 z 2 + 2 ara enterpolasyon fonksiyonu elde edilir. Değişken dönüşüm ifadesi yerine yazıldığında x değişkenine bağlı enterpolasyon polinomu, P( x ) = ( x + 1) 2 − 2( x + 1) + 2 P( x ) = x 2 + 1 olarak elde edilir. Lagrange Enterpolasyon Formülü Bir f (x ) fonksiyonunun x0 , x1, x2 ,... xn gibi (aralıkları eşit olan veya olmayan) ayrık noktalarda bilinen f (x0 ), f ( x1 ), f (x2 ),..., f ( xn ) değerleri varsa ve bu f (x ) fonksiyonunun, enterpolasyon fonksiyonu P (x ) ‘i veren Lagrange Enterpolasyon Formülü, n P ( x ) = ∑ Li ( x ) f ( xi ) i =0 şeklinde verilir. P( x) = L0 ( x) f ( x0 ) + L1( x) f ( x1) + L2 ( x) f ( x2 ) + ... + Ln ( x) f ( xn ) genel ifadesi kullanılır. Burada Li, Lagrange enterpolasyon katsayıları, n x−xj Li ( x ) = ∏ j = 0 xi − x j j≠i ifadesi ile tanımlanmıştır. n. dereceden Li katsayısı, Prof.Dr. Nurettin UMURKAN 37 / 89 2010/11 Güz Nümerik Analiz ( x − x0 )( x − x1 )( x − x2 )...( x − xn −1 )( x − xn ) Li ( x) = ( xi − x0 )( xi − x1 )...( xi − xi −1 )( xi − xi +1 )...( xi − xn ) ile hesaplanır. ÖRNEK Aşağıda tabloda verilen noktalardan geçen polinomu bulunuz. x f(x) 0 1 1 2 2 4 Bu problem için denklemden, P ( x) = L0 ( x ) f ( x0 ) + L1 ( x) f ( x1 ) + L2 ( x) f ( x2 ) elde edilir. Burada Lagrange enterpolasyon katsayıları, ( x − x1 )( x − x2 ) ( x0 − x1 )( x0 − x2 ) L0 ( x ) = ( x − x0 )( x − x2 ) ( x1 − x0 )( x1 − x2 ) ( x − x0 )( x − x1 ) L2 ( x) = ( x2 − x0 )( x2 − x1 ) L1 ( x) = şeklindedir. Sayısal değerler P (x ) ifadesinde yerine yazılırsa, P( x) = ( x − 1)( x − 2) ( x − 0)( x − 2) ( x − 0)( x − 1) ⋅1 + ⋅2+ ⋅4 (0 − 1)(0 − 2) (1 − 0)(1 − 2) (2 − 0)(2 − 1) elde edilir. Bu ifade düzenlendiğinde enterpolasyon polinomu olarak P( x ) = 1 2 1 x + x +1 2 2 bulunur. Prof.Dr. Nurettin UMURKAN 38 / 89 Nümerik Analiz 2010/11 Güz ÖDEV f ( x ) = sin (x ) fonksiyonunun bazı değişkenler için değerleri aşağıda tabloda verilen gibidir. sin 12 o nin enterpolasyon değerini bulunuz. x 10 11 13 f(x) 0.17365 0.19081 0.22495 ÖRNEK Aşağıda tabloda verilen noktalardan geçen Lagrange Enterpolasyon polinomunun x = 3 için değeri, x 0 1 2 4 5 f(x) 4 6 10 48 94 Lagrange enterpolasyon formülü, P ( x) = L0 ( x) f ( x0 ) + L1 ( x) f ( x1 ) + L2 ( x) f ( x2 ) + L3 ( x) f ( x3 ) + L4 ( x) f ( x4 ) şeklinde düzenlenir, bu ifadedeki L(x) katsayıları, ( x − x1 )( x − x2 )( x − x3 )( x − x4 ) L0 ( x) = ( x0 − x1 )( x0 − x2 )( x0 − x3 )( x0 − x4 ) (3 − 1)(3 − 2)(3 − 4)(3 − 5) L0 (3) = = 0.1 (0 − 1)(0 − 2)(0 − 4)(0 − 5) L1 ( x ) = ( x − x0 )( x − x 2 )( x − x3 )( x − x 4 ) ( x1 − x0 )( x1 − x 2 )( x1 − x3 )( x1 − x4 ) L1 (3) = (3 − 0)(3 − 2)(3 − 4)(3 − 5) = −0.5 (1 − 0)(1 − 2)(1 − 4)(1 − 5) L2 ( x ) = ( x − x0 )( x − x1 )( x − x3 )( x − x4 ) ( x2 − x0 )( x2 − x1 )( x2 − x3 )( x2 − x4 ) L2 (3) = (3 − 0)(3 − 1)(3 − 4)(3 − 5) = 1.0 (2 − 0)(2 − 1)(2 − 4)(2 − 5) Prof.Dr. Nurettin UMURKAN 39 / 89 Nümerik Analiz L3 ( x) = ( x − x0 )( x − x1 )( x − x2 )( x − x4 ) ( x3 − x0 )( x3 − x1 )( x3 − x2 )( x3 − x4 ) L3 (3) = (3 − 0)(3 − 1)(3 − 2)(3 − 5) = 0.5 (4 − 0)(4 − 1)(4 − 2)(4 − 5) L4 ( x) = ( x − x0 )( x − x1 )( x − x2 )( x − x3 ) ( x4 − x0 )( x4 − x1 )( x4 − x2 )( x4 − x3 ) 2010/11 Güz (3 − 0)(3 − 1)(3 − 2)(3 − 4) = −0.10 (5 − 0)(5 − 1)(5 − 2)(5 − 4) olarak bulunur. Böylece enterpolasyon polinom değeri, P (3) = (0.1)( 4) + ( −0.5)(6) + (1.0)(10) + (0.5)( 48) + ( −0.10)(94) = 22.0 L4 (3) = clc n=input('n degeri: '); for i=1:n m=input('x degeri: '); x(i)=m; end for i=1:n k=input('y degeri: '); y(i)=k; end b=3; a=1; pp=0; for i=1:n m(i)=1; k(i)=1; for j=1:n if i~=j m(i)= m(i)*(b-x(j)); k(i)=k(i)*(x(i)-x(j)); end end s(i)=m(i)/k(i); pp=pp+s(i)*y(i); end for i=1:n l=s(i); fprintf('\n L(x)= %6.3f',l); Prof.Dr. Nurettin UMURKAN 40 / 89 2010/11 Güz Nümerik Analiz end fprintf('\n p(a)= %10.3f',pp) Bölünmüş Farklar Enterpolasyon Formülü x ‘in x0 , x1 , . . ., xn değerleri için sırasıyla f(x0), f(x1), . . ., f(xn) değerlerini alan bir fonksiyon için enterpolasyon polinomu P(x), bölünmüş farklar ile, P ( x) = f ( x0 ) + ( x − x0 ) f ( x0 , x1 ) + ( x − x0 )( x − x1 ) f ( x0 , x1 , x2 ) + ... + ( x − x0 )( x − x1 )...( x − xn −1 ) f ( x0 , x1 ,..., xn ) formülü ile tanımlanır. ÖRNEK: x 1.0 1.1 1.2 1.3 cos x 0.5403 0.4536 0.3624 0.2675 x = 1.12 için enterpolasyon polinomu değerini bulunuz. x 1.0 f(x) 0.5403 -0.8670 1.1 0.4536 -0.2250 -0.9120 1.2 0.3624 0.1333 -0.1850 -0.9490 1.3 0.2675 P (1.12) = 0.5403 + (1.12 − 1.0)(−0.8670) + (1.12 − 1.0)(1.12 − 1.1)(−0.2250) + + (1.12 − 1.0)(1.12 − 1.1)(1.12 − 1.2)(0.1333) = 0.4357 Prof.Dr. Nurettin UMURKAN 41 / 89 2010/11 Güz Nümerik Analiz ÖRNEK: X 1.1 1.2 1.0 1.3 cos x 0.4536 0.3624 0.5403 0.2675 x = 1.12 için enterpolasyon polinomu değerini bulunuz. x 1.1 f(x) 0.4536 -0.9120 1.2 0.3624 -0.2250 -0.8895 1.0 0.5403 0.1333 -0.1983 -0.9093 1.3 0.2675 P (1.12) = 0.4536 + (1.12 − 1.1)(−0.9120) + (1.12 − 1.1)(1.12 − 1.2)(−0.2250) + + (1.12 − 1.1)(1.12 − 1.2)(1.12 − 1.0)(0.1333) = 0.4357 clc n=input('n degeri: '); for i=1:n m=input('x degeri: '); x(i)=m; end for i=1:n k=input('y degeri: '); y(i)=k; end for i=1:n-1 a(i,i+1)=(y(i)-y(i+1))/(x(i)-x(i+1)); e=a(i,i+1); fprintf('%f\n', e); end for i=1:n-2 b(i,i+1)=(a(i,i+1)-a(i+1,i+2))/(x(i)-x(i+2)); e=b(i,i+1); fprintf(' %f\n') fprintf('%f\n', e); end for i=1:n-3 Prof.Dr. Nurettin UMURKAN 42 / 89 Nümerik Analiz c(i,i+1)=(b(i,i+1)-b(i+1,i+2))/(x(i)-x(i+3)); e=c(i,i+1); fprintf(' %f\n') fprintf('%f\n', e); 2010/11 Güz end for i=1:n-4 d(i,i+1)=(c(i,i+1)-c(i+1,i+2))/(x(i)-x(i+4)); e=d(i,i+1); fprintf(' %f\n') fprintf('%f\n', e); end En Küçük Kareler Yöntemi Enterpolasyon fonksiyonu P(x) gerçek fonksiyon f(x) ‘i ancak belirli bir aralıkta tanımlar. Bazı hallerde gerçek fonksiyon ile enterpolasyon fonksiyonu verilen aralık dışında birbirinden çok farklı olabilir. Enterpolasyon ile elde edilen eğri, gerçek fonksiyonun değişimine çok yakın olmalıdır. Meydana gelen fark ile gerçek fonksiyon değeri, yi = P( x)+ε i ifadesi ile verilebilir. ε i , hata miktarıdır. Fiziksel olayların çoğunda iki veya daha fazla birbirine bağlı değişken bulunur. Bir olayın deneysel sonucunun analitik incelenmesi olayın formüle bağlanması ile mümkündür. Örneğin, zamana göre değişen bir olayda çeşitli zamanlarda yapılan ölçümlerde f(x) değerleri elde edilmiş olsun. Gözlemlenen olayın doğrusal bir değişim göstermesi bekleniyorsa beklenen doğru denklemi y= A+Bx olarak ifade edilir. Bu durumda j. inci gözlemdeki xj değerinden hesaplanan y j = A+Bx j değeri ile gözlemden Prof.Dr. Nurettin UMURKAN 43 / 89 2010/11 Güz Nümerik Analiz elde edilen gerçek y değeri arasındaki farkı minimum olacak şekilde bir doğru denklemi bulmak istenirse, i. inci gözlemdeki fark, d i = yi − ( A + Bxi ) şeklinde ifade edilir. Ancak bu fark (+) veya (–) olabileceğine göre teorik fonksiyonun göstereceği doğru en uygun doğru olmayabilir. Bu nedenle farklar yerine farkların kareleri toplamının minimum olması şartını sağlayan fonksiyonu belirlemek gerekir. n Si = ∑ d i2 = 0 i =1 Si = d12 + d 22 + d 32 + ... + d n2 = 0 n Si = ∑ ( yi − ( A + Bxi )) 2 = 0 i =1 Bu ifade de S, A ve B ye bağlı olarak değişecektir. S ‘nin A ve B ‘ye göre kısmi türevleri alınıp sıfıra eşitlenirse, ∂S ∂S =0 =0 ∂A ∂B n n n ∂S n = ∑ 2( A + Bxi − yi ) = 0 ⇒ ∑ A + ∑ Bxi = ∑ yi ∂A i =1 i =1 i =1 i =1 n n n ∂S n 2 = ∑ 2( A + Bxi − yi ) xi = 0 ⇒ ∑ Axi + ∑ Bxi = ∑ xi yi ∂B i =1 i =1 i =1 i =1 n n A n x y ∑ ∑ i i i =1 i =1 = n n n x xi2 B ∑ xi yi ∑ ∑ i i =1 i =1 i =1 matrisi elde edilir ve Prof.Dr. Nurettin UMURKAN 44 / 89 2010/11 Güz Nümerik Analiz n ∆= n x i ∑ i =1 n n xi y x ∑ ∑ ∑ i i i =1 i =1 i =1 ∆A = n n n xy xi2 xi2 ∑ ∑ ∑ i i i =1 i =1 i =1 n n y ∑ i i =1 ∆B = n n x xi yi ∑ ∑ i i =1 i =1 ∆A A= ∆ ∆B B= ∆ şeklinde matris çözülerek A ve B katsayıları elde edilir. n ÖRNEK: x 0 2 4 6 8 10 f(x) 1 5.1 9 13 17 21 Tablodan geçen doğru denkleminin A ve B katsayılarını en küçük kareler yöntemiyle bulunuz. n n x i ∑ i =1 xi 0 2 4 6 n A x y ∑ i ∑ i i =1 = ni =1 n xi2 B ∑ xi yi ∑ i =1 i =1 n yi 1 5.1 9 13 xi2 0 4 16 36 Prof.Dr. Nurettin UMURKAN x i yi 0 10.2 36 78 45 / 89 Nümerik Analiz 8 + 10 30 17 + 21 66.1 64 + 100 220 136 + 210 470.2 2010/11 Güz 6 30 A 66.1 30 220 B = 470.2 ∆ = 420 ∆A = 436 ∆B = 838.2 A= 1.03809 B= 1.99571 y = 1.03809 + 1.99571 x clc n=6; tx=0; ty=0; tx2=0; txy=0; x(1)=0; x(2)=2; x(3)=4; x(4)=6; x(5)=8; x(6)=10; y(1)=1; y(2)=5.1; y(3)=9; y(4)=13; y(5)=17; y(6)=21; for i=1:n tx=tx+x(i); ty=ty+y(i); tx2=tx2+x(i)^2; txy=txy+x(i)*y(i); % ty=sum(x); % tx=sum(y); end fprintf('\n Ex= %6.3f',tx); fprintf('\n Ey= %10.3f',ty); fprintf('\n Ex2= %10.3f',tx2); fprintf('\n Ex2= %10.3f',txy); a=(tx2*ty-txy*tx)/(n*tx2-tx^2); Prof.Dr. Nurettin UMURKAN 46 / 89 2010/11 Güz Nümerik Analiz b=(n*txy-tx*ty)/(n*tx2-tx^2); fprintf('\n fprintf('\n a= %10.6f',a); b= %10.6f',b); Ex= 30.000 Ey= 66.100 Ex2= 220.000 Ex2= 470.200 a= 1.038095 b= 1.995714 >> En Küçük Kareler Yöntemiyle Polinom Yaklaşımı Verilen noktalardan f(x)=A+Bx+Cx2 parabolü geçirilmek istenirse hata kareleri toplamının minimum olması için n Si = ∑ (( A + Bxi + Cxi2 ) − yi ) 2 = 0 i =1 olmalı, ∂S n = ∑ 2( A + Bxi + Cxi2 − yi ) = 0 ∂A i =1 ∂S n = ∑ 2 xi ( A + Bxi + Cxi2 − yi ) = 0 ∂B i =1 ∂S n = ∑ 2 xi2 ( A + Bxi + Cxi2 − yi ) = 0 ∂C i =1 n ∑ xi ∑ xi2 ∑x ∑x ∑x ∑x ∑x ∑x i 2 i 3 i 2 i 3 i 4 i A ∑ yi B = x y ∑ i i C ∑ xi2 yi ÖRNEK: x y 2 1 3 6 5 6 8 22 33 61 Prof.Dr. Nurettin UMURKAN 47 / 89 2010/11 Güz Nümerik Analiz Tablodan geçen f(x)=A+Bx+Cx2 denkleminin A, B ve C katsayılarını en küçük kareler yöntemiyle bulunuz. xi 2 3 5 6 + 8 24 yi 1 6 22 33 + 61 123 xi2 4 9 25 36 + 64 138 xi3 8 27 125 216 + 512 888 xi4 x i yi xi2 yi 16 2 4 81 18 54 625 110 550 1296 198 1188 + 4096 + 488 + 3904 6114 816 5700 24 138 A 123 5 24 138 888 B = 816 138 888 6114 C 5700 A = -3 B=0 C=1 clc n=5; tx=0; ty=0; tx2=0; txy=0; tx2y=0; tx3=0; tx4=0; x(1)=2; x(2)=3; x(3)=5; x(4)=6; x(5)=8; y(1)=1; y(2)=6; y(3)=22; y(4)=33; Prof.Dr. Nurettin UMURKAN 48 / 89 Nümerik Analiz y(5)=61; 2010/11 Güz for i=1:n tx=tx+x(i); ty=ty+y(i); tx2=tx2+x(i)^2; tx3=tx3+x(i)^3; tx4=tx4+x(i)^4; txy=txy+x(i)*y(i); tx2y=tx2y+x(i)^2*y(i); end fprintf('\n fprintf('\n fprintf('\n fprintf('\n fprintf('\n fprintf('\n fprintf('\n Ex= %10.3f',tx); Ey= %10.3f',ty); Ex2= %10.3f',tx2); Ex3= %10.3f',tx3); Ex4= %10.3f',tx4); Ex2= %10.3f',txy); Ex2y= %10.3f',tx2y); d=[n tx tx2;tx tx2 tx3;tx2 tx3 tx4]; aa=[ty txy tx2y;tx tx2 tx3;tx2 tx3 tx4]; bb=[n tx tx2;ty txy tx2y;tx2 tx3 tx4]; cc=[n tx tx2;tx tx2 tx3;ty txy tx2y]; d=det(d); aa=det(aa); bb=det(bb); cc=det(cc); a=aa/d; b=bb/d; c=cc/d; fprintf('\n fprintf('\n fprintf('\n a= %10.6f',a); b= %10.6f',b); c= %10.6f',c); Ex= 24.000 Ey= 123.000 Ex2= 138.000 Ex3= 888.000 Ex4= 6114.000 Ex2= 816.000 Ex2y= 5700.000 a= -3.000000 b= 0.000000 c= 1.000000 Prof.Dr. Nurettin UMURKAN 49 / 89 2010/11 Güz Nümerik Analiz En Küçük Kareler Yöntemiyle Lineer Olmayan Fonksiyonlar Verilen değerlerden lineer bir fonksiyon geçirilemiyorsa fonksiyonları f(x) = aebx veya f(x) = axb gibi katsayılar bakımından lineer olmayan şekilde tanımlanabilir. Lineer olmayan fonksiyonların çözümü güç olduğundan logaritmaları alınarak lineerleştirme işlemi yapılır. ÖRNEK: x 0 2 3 4 5 f(x) 5.2 56.628 186.872 616.679 2035.04 Tablodan geçen y = abx denkleminin a ve b katsayılarını en küçük kareler yöntemiyle bulunuz. y = abx ln y = ln a + x ln b Y = A + BX n n X i ∑ i =1 n A X Y ∑ i ∑ i i =1 = ni =1 n ⇒ X i2 B ∑ X iYi ∑ i =1 i =1 n xi 0 2 3 4 + 5 14 n n x i ∑ i =1 n xi A ∑ ln yi ∑ i =1 = ni =1 n xi2 B ∑ xi ln yi ∑ i =1 i =1 n yi xi2 ln yi 5.2 0 1.649 56.628 4 4.037 186.872 9 5.230 616.679 16 6.424 + 2035.04 + 25 + 7.618 54 24.958 Prof.Dr. Nurettin UMURKAN x i lnyi 0 8.074 15.690 25.696 + 38.090 87.550 50 / 89 Nümerik Analiz 5 14 A 24.958 14 54 B = 87.550 ∆ = 74 ∆A = 122.032 A= 1.649081 ∆B = 88.338 2010/11 Güz B= 1.19392 a = e A a = 5.19999 b = e B b = 3.3 x y ≅ 5.202 • 3.3 clc n=5; tx=0; ty=0; tx2=0; txy=0; x(1)=0; x(2)=2; x(3)=3; x(4)=4; x(5)=5; y(1)=5.2; y(2)=56.628; y(3)=186.872; y(4)=616.679; y(5)=2035.04; for i=1:n k=y(i); yy(i)=log(k); tx=tx+x(i); ty=ty+yy(i); tx2=tx2+x(i)^2; txy=txy+x(i)*yy(i); end fprintf('\n fprintf('\n fprintf('\n fprintf('\n EX= %10.3f',tx); EY= %10.3f',ty); EX2= %10.3f',tx2); EXY= %10.3f',txy); aa=(tx2*ty-txy*tx)/(n*tx2-tx^2); bb=(n*txy-tx*ty)/(n*tx2-tx^2); Prof.Dr. Nurettin UMURKAN 51 / 89 2010/11 Güz Nümerik Analiz fprintf('\n fprintf('\n A= %10.6f',aa); B= %10.6f',bb); a=exp(aa); b=exp(bb); fprintf('\n fprintf('\n EX= EY= EX2= EXY= A= B= a= b= a= %10.6f',a); b= %10.6f',b); 14.000 24.958 54.000 87.553 1.648658 1.193922 5.199998 3.300000 >> ÖRNEK: x f(x) 1 3 3 5 15.588 33.541 b Tablodan geçen y = a x denkleminin a ve b katsayılarını en küçük kareler yöntemiyle bulunuz. b y = ax ln y = ln a + b ln x Y = A + BX n n X i ∑ i =1 n A X Y ∑ ∑ i i i =1 = i =1 n n 2 X Y ⇒ X B ∑ i i i ∑ i =1 i =1 n xi 1 3 5 n n ln x i ∑ i =1 n A ln x ∑ i ∑ ln yi i =1 = n i =1 n 2 (ln xi ) B ∑ ln xi ln yi ∑ i =1 i =1 yi ln xi ln yi 3 0 1.099 15.588 1.099 2.747 33.541 + 1.609 + 3.513 2.708 7.359 Prof.Dr. Nurettin UMURKAN n (ln xi)2 lnx i lnyi 0 0 1.208 3.019 + 2.589 + 5.652 3.797 8.671 52 / 89 Nümerik Analiz 2.708 A 7.359 3 2.708 3.797 B = 8.671 ∆ = 4.057736 ∆A = 4.461053 A= 1.099395 ∆B = 6.084828 2010/11 Güz B= 1.4995623 a = e A a = 3.0023491 b=B b = 1.4995623 y ≅ 3 x 1.5 ÖRNEK: x 0 1 2 f(x) 1 2 6 bx Tablodan geçen y = a e denkleminin a ve b katsayılarını en küçük kareler yöntemiyle bulunuz. bx y = ae ln y = ln a + bx ln e Y = A + BX n n X i ∑ i =1 n X i A ∑ Yi ∑ i =1 = ni =1 n ⇒ 2 X i B ∑ X iYi ∑ i =1 i =1 n xi yi xi2 0 1 + 2 3 1 2 6 0 1 + 4 5 n n ∑ xi i =1 A n xi ∑ ln yi ∑ i =1 = ni =1 n 2 xi B ∑ xi ln yi ∑ i =1 i =1 n ln yi x i lnyi 0 0 0.693147 0.693147 1.791759 3.583519 2.4849066 4.276666 Prof.Dr. Nurettin UMURKAN 53 / 89 2010/11 Güz Nümerik Analiz 3 3 A 2.4849066 3 5 B = 4.276666 ∆=6 ∆A = −0.4054653 ∆B = 5.3752795 A= -0.0675775 B= 0.8958797 a = e A a = 0.9346552 b =B b = 0.8958797 y ≅ 0.9346552 e 0.8958797x En Küçük Kareler Yöntemiyle Trigonometrik Fonksiyonlar y = a0 + a1 cos x + a2 cos 2 x + a3 cos 3x + ... + an cos nx + b1 sin x + b2 sin 2 x + b3 sin 3x + ... + bn sin nx Verilen noktalardan y = a0 + a1 cos xi + b1 sin xi trigonometrik fonksiyonu geçirilmek istenirse hata kareleri toplamının minimum olması için n S i = ∑ ((a0 + a1 cos xi + b1 sin xi ) − yi ) 2 = 0 i =1 olmalı, n ∂S = ∑ 2( a0 + a1 cos xi + b1 sin xi − yi ) = 0 ∂a0 i =1 ∂S n = ∑ 2(a0 cos xi + a1 cos 2 xi + b1 sin xi cos xi − yi cos xi ) = 0 ∂a1 i =1 ∂S n = ∑ 2(a0 sin xi + a1 cos xi sin xi + b1 sin 2 xi − yi sin xi ) = 0 ∂b1 i =1 Prof.Dr. Nurettin UMURKAN 54 / 89 2010/11 Güz Nümerik Analiz n ∑ cos xi ∑ sin xi ∑ cos x ∑ sin x a ∑ y ∑ cos x ∑ cos x sin x a = ∑ y cos x ∑ cos x sin x ∑ sin x b ∑ y sin x i i i 0 2 i i i 1 i i 1 i i 2 i i i ÖRNEK: x 0 20 40 60 80 f(x) 2.5 3.526 4.428 5.098 5.454 y = a0 + b1 sin xi denkleminin a0 ve Tablodan geçen katsayılarını en küçük kareler yöntemiyle bulunuz. n ∑ cos xi ∑ sin xi b1 ∑ cos x ∑ sin x a ∑ y ∑ cos x ∑ cos x sin x a = ∑ y cos x ∑ cos x sin x ∑ sin x b ∑ y sin x i i i 0 2 i i i 1 i i 1 i i 2 i n ∑ sin xi xi 0 20 40 60 80 i i ∑ sin x a0 ∑ yi = 2 ∑ sin xi b1 ∑ yi sin xi yi 2.5 3.526 4.428 5.098 + 5.454 21.006 i sinxi sin2 xi yi sinxi 0 0 0 0.342 0.117 1.206 0.643 0.413 2.847 0.866 0.750 4.415 + 0.985 + + 5.290 0.970 2.836 2.25 13.758 2.836 a0 21.006 5 2.836 2.25 b = 13.758 1 Prof.Dr. Nurettin UMURKAN 55 / 89 2010/11 Güz Nümerik Analiz a0 = 2.500 b1 = 2.999 y ≅ 2.500 + 2.900 sin x clc n=5; tx=0; ty=0; tx2=0; txy=0; x(1)=0; x(2)=20; x(3)=40; x(4)=60; x(5)=80; y(1)=2.5; y(2)=3.526; y(3)=4.428; y(4)=5.098; y(5)=5.454; for i=1:n k=x(i)*pi/180; xx=sin(k); tx=tx+xx; ty=ty+y(i); tx2=tx2+xx^2; txy=txy+xx*y(i); end fprintf('\n fprintf('\n fprintf('\n fprintf('\n Esinx= %10.5f',tx); Ey= %10.5f',ty); Esin2x= %10.5f',tx2); Eysinx= %10.5f',txy); aa=(tx2*ty-txy*tx)/(n*tx2-tx^2); bb=(n*txy-tx*ty)/(n*tx2-tx^2); fprintf('\n fprintf('\n Esinx= Ey= ao= %10.6f',aa); b1= %10.6f',bb); 2.83564 21.00600 Esin2x= 2.25000 Eysinx= 13.83837 Prof.Dr. Nurettin UMURKAN 56 / 89 2010/11 Güz Nümerik Analiz ao= 2.500004 b1= 2.999667 >> Cebirsel Fonksiyon Köklerinin Bulunması Newton-Raphson Yöntemi Bir başlangıç noktası (x0) verilir. Eğer fonksiyonun tek bir değeri var ve türevi kolay alınabiliyorsa bu yöntem tercih edilir. Yöntemin esası seçilen başlangıç noktasından fonksiyona bir teğet çizilerek teğet eğiminin o noktadaki türeve eşit olduğunu kabul eden teoreme dayanır. Bulunan değer birinci iterasyon olarak adlandırılır. Ardışık iki iterasyon arasındaki fark verilen bir epsilon sayısından küçük yada eşit oluncaya kadar iterasyona devam edilir. Bu şart sağlandığında kök bulunmuş olur. α x2 x1 x0 teğet f(x) x1 = x0 − f ( x0 ) f ′( x0 ) Prof.Dr. Nurettin UMURKAN 1. iterasyon 57 / 89 2010/11 Güz Nümerik Analiz x0 − x1 = ε sağlanırsa kök x1 dir. Eğer bu şart sağlanmıyorsa iterasyona devam edilir ve başlangıç noktası olarak x1 alınır. f ( x1 ) x2 = x1 − 2. iterasyon f ′( x1 ) Şart sağlanana kadar iterasyona devam edilir, k iterasyon sayısını göstermek üzere, f ( xk ) xk +1 = xk − f ′( xk ) ÖRNEK: y = x 2 − sin x − 1 denkleminin kökünü başlangıç noktasını 1 ve epsilon 10-6 alarak çözünüz. x0 1 1.576469 1.422834 1.409720 1.409624 1.409624 kök olarak alınır. x1 1.576469 1.422834 1.409720 1.409624 1.409624 EPS farkı 0.576469 0.153634 0.013114 0.000096 0.000000 clc eps=1*10^-6; n=100000; x=1; for i=1:n y=x^2-sin(x)-1; dy=2*x-cos(x); a=x-(y/dy); d=a-x; delta=abs(d); x=a; fprintf('\n fprintf('\n x= %15.7f',x); delta= %15.7f',delta); Prof.Dr. Nurettin UMURKAN 58 / 89 2010/11 Güz Nümerik Analiz if delta<=eps break end end x= delta= x= delta= x= delta= x= delta= x= delta= 1.5764694 0.5764694 1.4228349 0.1536345 1.4097207 0.0131142 1.4096240 0.0000966 1.4096240 0.0000000 >> Regula-Falsi Yöntemi b a a f(a) > 0 f(b) < 0 b f(a) < 0 f(b) > 0 Yöntemin esası, <eğer sürekli bir f(x) fonksiyonunun x=a ve x=b noktalarında değerleri birbirinin ters işaretlisi ise f(x) sürekli fonksiyonunun (a,b) aralığında en az bir kökü vardır> Prof.Dr. Nurettin UMURKAN 59 / 89 2010/11 Güz Nümerik Analiz teoremine dayanır. Amaç f(a) ile f(b) yi birleştiren doğrunun x eksenini kestiği noktayı bulmaktır. Bu nokta, a c1 c2 b bf (a) − af (b) f (c1 ) ≤ ε f (a ) − f (b) ile hesaplanır. c1 kök ise şartını sağlamalıdır. Eğer bu şart sağlanmıyorsa iterasyona devam edilir. Kök aranan (a,b) aralığı daraltılır. Örneğin, c1 = f (a) < 0 a = c1 f (c1 ) < 0 ise kök aranan yeni aralık (c1,b) olur. Đkinci iterasyonda hesaplanacak c2, bf (c1 ) − c1 f (b) c2 = ile hesaplanır. f (c1 ) − f (b) Şart sağlanmıyorsa, üçüncü iterasyona geçilir. f (c 2 ) > 0 b = c2 f (c1 ) < 0 Prof.Dr. Nurettin UMURKAN 60 / 89 Nümerik Analiz 2010/11 Güz Đse aralık (c1,c2) olarak daraltılır. Şart sağlanana kadar iterasyona devam edilir ÖRNEK: y = x 3 − 5 x − 7 denkleminin kökünü (2,3) aralığında EPS= 0.001 alarak bulunuz. f(a) = f(2)= -9 <0 f(b) = f(3)= 5 >0 c1 = bf (a) − af (b) = 2.642857 f (a ) − f (b) f (c1 ) = − 1.754 ≤ 10 −3 şartı sağlanmadı c1 kök değil, f (a) < 0 a = c1 alarak (c1, b) aralığında işleme devam f (c1 ) < 0 edilir. c2 = bf (c1 ) − c1 f (b) = 2.735606 f (c1 ) − f (b) f (c2 ) = − 0.206 ≤ 10 −3 şartı sağlanmadı c2 kök değil, f (c 2 ) < 0 c1 = c2 alarak (c2, b) aralığında işleme devam f (c1 ) < 0 edilir. c3 = bf (c2 ) − c2 f (b) = 2.746067 f (c2 ) − f (b) Prof.Dr. Nurettin UMURKAN 61 / 89 Nümerik Analiz 2010/11 Güz f (c3 ) = − 0.0225 ≤ 10 − 3 şartı sağlanmadı o halde c3 kök değil, f (c 3 ) < 0 c 2 = c3 alarak (c3 ,b) aralığında işleme devam f (c2 ) < 0 edilir. bf (c3 ) − c3 f (b) c4 = = 2.747204 f (c3 ) − f (b) f (c4 ) = − 0.0025 ≤ 10 −3 şartı sağlanmadı o halde c4 kök değil, f (c 4 ) < 0 c 3 = c4 alarak (c4 , b) aralığında işleme devam f ( c3 ) < 0 edilir. c5 = bf (c4 ) − c4 f (b) = 2.747330 f (c4 ) − f (b) f (c5 ) = − 0.000291 ≤ 10 −3 şartı sağlandı o halde c5 kök. clc clear eps=1*10^-3; n=100000; a=2; b=3; for i=1:n for x=a:b y=x^3-5*x-7; if x==a aa=y; else bb=y; end end Prof.Dr. Nurettin UMURKAN 62 / 89 Nümerik Analiz 2010/11 Güz pay=b*aa-a*bb; payda=aa-bb; c(i)=pay/payda; x=c(i); cc=x^3-5*x-7; fprintf('\n (a,b)= %15.7f',a,b); if aa*cc>0 a=x; else b=x; end mcc=abs(cc); fprintf('\n c= %15.7f',x); fprintf('\n |f(c)|= %15.7f',cc); if mcc<=eps break end end (a,b)= (a,b)= c= |f(c)|= (a,b)= (a,b)= c= |f(c)|= (a,b)= (a,b)= c= |f(c)|= (a,b)= (a,b)= c= |f(c)|= (a,b)= (a,b)= c= |f(c)|= 2.0000000 3.0000000 2.6428571 -1.7547376 2.6428571 3.0000000 2.7356353 -0.2055015 2.7356353 3.0000000 2.7460718 -0.0224776 2.7460718 3.0000000 2.7472082 -0.0024400 2.7472082 3.0000000 2.7473315 -0.0002646 >> Prof.Dr. Nurettin UMURKAN 63 / 89 2010/11 Güz Nümerik Analiz Yarıya Bölme Yöntemi Yöntemin esası, <eğer sürekli bir f(x) fonksiyonunun x=a ve x=b noktalarında değerleri birbirinin ters işaretlisi ise f(x) sürekli fonksiyonunun (a,b) aralığında en az bir kökü vardır> teoremine dayanır. Amaç a ile b nin orta noktasını bulmaktır. a+b c1 = ile hesaplanır. c1 kök ise f (c1 ) ≤ ε şartını 2 sağlamalıdır. Eğer bu şart sağlanmıyorsa iterasyona devam edilir. Kök aranan (a,b) aralığı daraltılır. Örneğin, f (a) < 0 a = c1 f (c1 ) < 0 ise kök aranan yeni aralık (c1,b) olur. Şart sağlanana kadar iterasyona devam edilir. ÖRNEK: y = sinx − 0.75 denkleminin kökünü (0.7, 0.9) aralığında EPS= 0.001 alarak bulunuz. f(a) = f(0.7)<0 f(b) = f(0.9)>0 a+b c1 = = 0.8 f (c1 ) = 2 sağlanmadı o halde c1 kök değil, − 0.03264 ≤ 10 − 3 şartı Prof.Dr. Nurettin UMURKAN 64 / 89 2010/11 Güz Nümerik Analiz f (a) < 0 a = c1 f (c1 ) < 0 c2 = 0.85 (c1,b) f (c2 ) = 0.00128 ≤ 10 −3 f (b) > 0 b = c2 f (c2 ) > 0 c3 = 0.825 (c1,c2) f (c3 ) = − 0.15 ≤ 10 −3 f (c 3 ) < 0 c1 = c3 f (c1 ) < 0 c4 = 0.8375 f (c 3 ) < 0 c 3 = c4 f (c4 ) < 0 c5 = 0.8437 f (c 5 ) < 0 c 4 = c5 f (c4 ) < 0 (c3,c2) f (c4 ) = − 0.007 ≤ 10 −3 (c4,c2) f (c4 ) = − 0.0285 ≤ 10−3 (c5,c2) c6 = 0.8468 f (c6 ) = − 0.0008 ≤ 10 −3 şartı sağlandı o halde c6 kök. clc clear eps=1*10^-3; n=100000; a=0.7; b=0.9; for i=1:n for x=a:b Prof.Dr. Nurettin UMURKAN 65 / 89 Nümerik Analiz y=sin(x)-0.75; 2010/11 Güz if x==a aa=y; else bb=y; end end c(i)=(a+b)/2; x=c(i); cc=sin(x)-0.75; fprintf('\n (a,b)= %15.7f',a,b); if aa*cc>0 a=x; else b=x; end mcc=abs(cc); fprintf('\n c= %15.7f',x); fprintf('\n f(c)= %15.7f',cc); if mcc<=eps break end end (a,b)= (a,b)= c= f(c)= (a,b)= (a,b)= c= f(c)= (a,b)= (a,b)= c= f(c)= (a,b)= (a,b)= c= f(c)= (a,b)= (a,b)= c= f(c)= (a,b)= (a,b)= c= f(c)= 0.7000000 0.9000000 0.8000000 -0.0326439 0.8000000 0.9000000 0.8500000 0.0012804 0.8000000 0.8500000 0.8250000 -0.0154522 0.8250000 0.8500000 0.8375000 -0.0070279 0.8375000 0.8500000 0.8437500 -0.0028591 0.8437500 0.8500000 0.8468750 -0.0007857 Prof.Dr. Nurettin UMURKAN 66 / 89 Nümerik Analiz >> 2010/11 Güz Regula-Falsi Yönteminde verilen örneğin Yarıya Bölme Yöntemiyle çözülmesi (a,b)= 2.0000000 (a,b)= 3.0000000 c= 2.5000000 |f(c)|= 3.8750000 (a,b)= 2.5000000 (a,b)= 3.0000000 c= 2.7500000 |f(c)|= 0.0468750 (a,b)= 2.5000000 (a,b)= 2.7500000 c= 2.6250000 |f(c)|= 2.0371094 (a,b)= 2.6250000 (a,b)= 2.7500000 c= 2.6875000 |f(c)|= 1.0266113 (a,b)= 2.6875000 (a,b)= 2.7500000 c= 2.7187500 |f(c)|= 0.4978333 (a,b)= 2.7187500 (a,b)= 2.7500000 c= 2.7343750 |f(c)|= 0.2274818 (a,b)= 2.7343750 (a,b)= 2.7500000 c= 2.7421875 |f(c)|= 0.0908055 (a,b)= 2.7421875 (a,b)= 2.7500000 c= 2.7460938 |f(c)|= 0.0220910 (a,b)= 2.7460938 (a,b)= 2.7500000 c= 2.7480469 |f(c)|= 0.0123606 (a,b)= 2.7460938 (a,b)= 2.7480469 c= 2.7470703 |f(c)|= 0.0048731 (a,b)= 2.7470703 (a,b)= 2.7480469 c= 2.7475586 |f(c)|= 0.0037418 (a,b)= 2.7470703 (a,b)= 2.7475586 c= 2.7473145 |f(c)|= 0.0005661 Prof.Dr. Nurettin UMURKAN 67 / 89 2010/11 Güz Nümerik Analiz >> Lineer Cebirsel Denklem Sistemleri a11 x1 + a12 x2 + ... + a1n xn = c1 a21 x1 + a22 x2 + ... + a2 n xn = c2 M an1 x1 + an 2 x2 + ... + ann xn = cn AX=C A: katsayı matrisi X: bilinmeyen matrisi C: eşitlik matrisi Gauss Eleminasyon Yöntemi Bu yöntemde A katsayı matrisi kanonik forma getirilir. a11 a 21 a31 a12 a 22 a32 a13 a11 0 a 23 >>> 0 a33 a12 a22 0 a13 a11 a a23 21 veya a31 a33 0 a 22 a32 0 0 a33 A katsayılar matrisi üst üçgen matrisi haline dönüştürülür. Matris kullanılarak çözüme gidilir. Çözüme matrisin en son satırından başlanarak yerine yazma işlemiyle geriye doğru bilinmeyenler bulunur. Prof.Dr. Nurettin UMURKAN 68 / 89 2010/11 Güz Nümerik Analiz a11 x1 + a12 x2 + ... + a1n xn = c1 a21 x1 + a22 x2 + ... + a2 n xn = c2 ′ x2 + ... + a1′n xn = c1′ x1 + a12 x2 + ... + a2′ n xn = c2′ M M an1 x1 + an 2 x2 + ... + ann xn = cn a′nn xn = cn′ xn = cn′ / a′nn ⇒ bulunur. n-1 inci denklemde xn yerine yazılır xn-1 hesaplanır. ÖRNEK: 3.6 x1 + 2.4 x2 − 1.8 x3 = 6.3 4.2 x1 − 5.8 x2 + 2.1x3 = 7.5 0.8x1 + 3.5 x2 + 6.5 x3 = 3.7 Denklem sistemini çözünüz. 3.6 2.4 − 1.8 6.3 4.2 − 5.8 2.1 7.5 0.8 3.5 6.5 3.7 Arttırılmış katsayılar matrisi düzenir. 1.Đşlem: Matrisin 1. satırı a11 ile bölünür. 1 0.667 − 0.5 1.75 4.2 − 5.8 2.1 7.5 0.8 3.5 6.5 3.7 2.Đşlem: matrisin 1. satırı a21 ile çarpılır ve 2. satırdan çıkartılır. matrisin 1. satırı a31 ile çarpılır ve 3. satırdan çıkartılır. Prof.Dr. Nurettin UMURKAN 69 / 89 Nümerik Analiz 1 0.667 − 0.5 1.75 0 − 8.6 4.2 0.15 2.3 0 2.966 6.9 2010/11 Güz 3.Đşlem: matrisin 2. satırı a22 ye bölünür. matrisin 2. satırı a32 ile çarpılır ve 3. satırdan çıkartılır. 1.75 1 0.667 − 0.5 0 1 − 0 . 489 − 0 . 017 0 2.966 6.9 2.3 1.75 1 0.667 − 0.5 0 1 − 0 . 489 − 0 . 017 0 0 8.35 2.35 4.Đşlem: matrisin 3. satırı a33 e bölünür. 1.75 1 0.667 − 0.5 0 1 − 0 . 489 − 0 . 017 0 0 1 0.281 x3=0.281 x2+(-0.489)(0.281)=-0.017 ⇒ x2=0.12 benzer şekilde 1. denklemden x1=1.81 Prof.Dr. Nurettin UMURKAN 70 / 89 2010/11 Güz Nümerik Analiz clc clear n=3; a=[3.6 2.4 -1.8 6.3; 4.2 -5.8 2.1 7.5; 0.8 3.5 6.5 3.7]; for j=1:n+1 aa(1,j)=a(1,j)/a(1,1); b(1,j)=aa(1,j)*a(2,1); aa(2,j)=a(2,j)-b(1,j); b(1,j)=aa(1,j)*a(3,1); aa(3,j)=a(3,j)-b(1,j); end for j=1:n+1 aaa(2,j)=aa(2,j)/aa(2,2); bb(2,j)=aaa(2,j)*aa(3,2); aaa(3,j)=aa(3,j)-bb(2,j); a(1,j)=aa(1,j) a(2,j)=aaa(2,j) end for j=1:n+1 a(3,j)=aaa(3,j)/aaa(3,3) end x3=a(3,4) x2=a(2,4)-a(2,3)*x3 x1=a(1,4)-a(1,3)*x3-a(1,2)*x2 a = 1.0000 0.6667 -0.5000 1.7500 0 1.0000 -0.4884 -0.0174 0 0 1.0000 0.2817 x3 = 0.2817 x2 = 0.1201 x1 = 1.8108 >> Prof.Dr. Nurettin UMURKAN 71 / 89 Nümerik Analiz 2010/11 Güz Basit Đterasyon Yöntemi (Jacobi Đterasyonu) x1 = c1 − ( a12 x2 + a13 x3 + ... + a1n xn ) a11 x2 = c2 − ( a21 x1 + a23 x3 + ... + a2 n xn ) a22 M xn = cn − ( an1 x1 + an 2 x2 + ... + ann −1 xn −1 ) ann ÖRNEK: 2 x1 + 3x2 + 6 x3 = 31 8 x1 + 2 x2 + 3x3 = 30 x1 − 9 x2 + 2 x3 = 1 Denklem sistemini ε= 0.001 alarak çözünüz. x1 = (30 − 2 x2 − 3x3 ) / 8 x2 = (1 − x1 − 2 x3 ) /(−9) x3 = (31 − 2 x1 − 3x2 ) / 6 Prof.Dr. Nurettin UMURKAN 72 / 89 Nümerik Analiz x1 x2 x3 0 3.7500 1.8402 1.8969 2.0710 1.9951 1.9949 2.0028 1.9998 1.9997 0 -0.1111 1.4537 0.9760 0.9499 1.0181 0.9997 0.9977 1.0007 1.0000 0 5.1666 3.9722 3.8263 4.0462 4.0013 3.9925 4.0018 4.0001 3.9996 x1 ≅ 2 x2 ≅ 1 X3 ≅ 4 2010/11 Güz clc clear eps=0.001; n=100000; a=[8 2 3 30;1 -9 2 1;2 3 6 31]; x=0; y=0; z=0; for j=1:n xx(j)=(a(1,4)-a(1,2)*y-a(1,3)*z)/a(1,1); yy(j)=(a(2,4)-a(2,1)*x-a(2,3)*z)/a(2,2); zz(j)=(a(3,4)-a(3,1)*x-a(3,2)*y)/a(3,3); d=abs(x-xx(j)); e=abs(yy(j)-y); f=abs(zz(j)-z); x=xx(j); y=yy(j); z=zz(j); fprintf('%10.6f\n', x); fprintf('%18.6f\n', fprintf('%26.6f\n', y); z); Prof.Dr. Nurettin UMURKAN 73 / 89 Nümerik Analiz if d<=eps if e<=eps if f<=eps 2010/11 Güz fprintf('%10.2f=iterasyon sayisi', j); break end end end end 3.750000 -0.111111 5.166667 1.840278 1.453704 3.972222 1.896991 0.976080 3.826389 2.071084 0.949974 4.046296 1.995145 1.018186 4.001318 1.994959 0.999754 3.992525 2.002865 0.997779 4.001804 1.999879 1.000719 4.000156 1.999762 1.000021 3.999681 9.00=iterasyon sayisi >> Prof.Dr. Nurettin UMURKAN 74 / 89 2010/11 Güz Nümerik Analiz Gauss-Seidel Đterasyon Yöntemi x x ( k +1) ( k +1) 2 1 = c1 − (a12 x2 (k ) (k ) (k ) + a13 x3 + ... + a1n xn ) a11 c2 − (a21 x1( k +1) + a23 x3 = a22 (k ) + ... + a2 n x ( k ) n ) M x ( k +1) n = cn − (an1 x1 ( k +1) ( k +1) + a n 2 x2 ann + ... + ann−1 xn( k−1+1) ) ÖRNEK: x1 + 6 x2 + 3x3 = 20 2 x1 + x2 + 4 x3 = 14 5 x1 − 2 x2 + x3 = 8 Denklem sistemini ε= 0.001 alarak çözünüz. x1 = (8 + 2 x2 − x3 ) / 5 x2 = (20 − 3x3 − x1 ) /(6) x3 = (14 − 2 x1 − x2 ) / 4 Prof.Dr. Nurettin UMURKAN 75 / 89 Nümerik Analiz x1 x2 x3 1.6000 2.4400 2.0260 2.0479 2.0097 2.0062 2.0019 2.0009 0 3.0666 1.9600 2.1006 2.0111 2.0117 2.0028 2.0016 2.0005 0 1.9333 1.7900 1.9618 1.9732 1.9921 1.9961 1.9986 1.9994 x1 ≅ 2 x2 ≅ 2 x3 ≅ 2 2010/11 Güz clc clear eps=0.001; n=100000; a=[5 -2 1 8;1 6 3 20;2 1 4 14]; y=0; z=0; for j=1:n xx(j)=(a(1,4)-a(1,2)*y-a(1,3)*z)/a(1,1); x=xx(j); yy(j)=(a(2,4)-a(2,1)*x-a(2,3)*z)/a(2,2); y=yy(j); zz(j)=(a(3,4)-a(3,1)*x-a(3,2)*y)/a(3,3); d=abs(x-xx(j)); e=abs(yy(j)-y); f=abs(zz(j)-z); z=zz(j); fprintf('%10.6f\n', x); fprintf('%18.6f\n', fprintf('%26.6f\n', if d<=eps if e<=eps if f<=eps y); z); Prof.Dr. Nurettin UMURKAN 76 / 89 Nümerik Analiz 2010/11 Güz fprintf('%10.2f=iterasyon sayisi', j); break end end end end 1.600000 3.066667 1.933333 2.440000 1.960000 1.790000 2.026000 2.100667 1.961833 2.047900 2.011100 1.973275 2.009785 2.011732 1.992175 2.006258 2.002870 1.996154 2.001917 2.001604 1.998641 2.000913 2.000528 1.999411 8.00=iterasyon sayisi >> Prof.Dr. Nurettin UMURKAN 77 / 89 2010/11 Güz Nümerik Analiz Sayısal Türev Bir takım ayrık noktalarda değeri bilinen bir f(x) fonksiyonunun bir noktadaki türevini yaklaşık olarak bulma işlemidir. yaklaşık Q P gerçek L+ L- x0 -∆x x0 x0 +∆x x = x0 da f(x) ‘in birinci türevi, f ′( x0 ) = lim ∆x →0 f ( x0 + ∆x ) − f ( x ) ∆x şeklinde tanımlanır. f′(x0) , x0 ‘da ki eğrinin eğimine eşittir. L+ doğrusunun eğimi = f ( x0 + ∆x ) − f ( x ) ∆x L- doğrusunun eğimi = f ( x0 − ∆x ) − f ( x ) − ∆x 2∆x = h ⇒ ∆x = h / 2 L+ + L− P ve Q dan geçen doğru eğimi = 2 Prof.Dr. Nurettin UMURKAN 78 / 89 2010/11 Güz Nümerik Analiz f ′( x0 ) = f ′′( x0 ) = f ( x0 + h / 2 ) − f ( x0 − h / 2 ) merkezi farktan 1. türev h f ( x0 + h ) − 2 f ( x0 ) + f ( x0 − h ) h2 merkezi farktan 2.türev ÖRNEK: f(x)=2 x 2- 3 x + 4 x = 4 de h = 0.01 için Birinci Türevini Merkezi Fark formülü ile hesaplayınız. f ′( x ) = f( x + h/ 2)− f( x −h/ 2) h f ′( 4 ) = f ( 4 + 0.005 ) − f ( 4 − 0.005 ) = 13 (gerçek değer = 13 ) 0.01 Sayısal Đntegral y=f(x) fonksiyonu [a,b] aralığında sürekli olmak üzere, fonksiyonun [a,b] aralığındaki integrali, f(x) eğrisinin altında ve [a,b] aralığındaki bölgenin alanına eşittir. Dikdörtgenler Yöntemi Prof.Dr. Nurettin UMURKAN 79 / 89 2010/11 Güz Nümerik Analiz S3 S2 S1 S4 a b b n −1 a i =0 S = ∫ f ( x) dx ≅ ∑ f i ⋅ hi hi = b−a n Yamuklar Yöntemi S1 S2 Sn 1 1 1 S1 = h( y0 + y1 ) a=x , S2 = x h( y1 x+ y2...) , b=x ... , Sn −1 = h( yn − 2 + yn −1 ) 0 2 n 2 21 2 Sn = 1 h( y n −1 + y n ) 2 n −1 y + yn S = h( 0 + yi ) 2 i =1 ∑ ÖRNEK: y= 1 1 + x2 denkleminin x0 = 0 , xn = 1 aralığında integral değerini n=4 alarak Yamuklar Yöntemiyle hesaplayınız. Prof.Dr. Nurettin UMURKAN 80 / 89 2010/11 Güz Nümerik Analiz hi = b−a n xi yi 0 1 0.25 0.94118 0.5 0.8 0.75 0.64 y0 + y4 3 S = h( + yi ) ⇒ ⇒ ⇒ 2 i =1 ∑ 1 0.5 S= 0.782794 gerçek değer 1 1 ∫1+ x 1 dx =arctg x 2 = arctg 1 − arctg 0 = 0 0 π 4 = 0.78539 Simpson Yöntemi f ( x ) = ax 2 + bx + c S y0 a=-h h 0 ∫ S = ( ax 2 + bx + c )dx y1 y2 b=+h ⇒ ⇒ ⇒ −h 3 S =( 2 ax bx + + cx ) 3 2 h S = ( 2 ah 2 + 6 c ) 3 h −h (∗) integralin çözümüdür. a ve c katsayılarını bulmak için f(x)denklemi sınır koşulları (-h, 0, +h) için düzenlenir. Prof.Dr. Nurettin UMURKAN 81 / 89 2010/11 Güz Nümerik Analiz x = − h için f(x) = ah 2 − bh + c = y0 x =0 f(x) = c = y1 için x = h için ⇒ ⇒ (∗) ‘de yerine ve f(x) = ah 2 + bh + c = y2 y0 + y2 = 2 ah 2 + 2c ⇒ ⇒ 2ah2 çekilir ve (∗) ‘de yerine yazılır. h S = ( y0 + 4 y1 + y2 ) 3 h= b−a n n çift aralık için; S = S1 + S 2 + ... + S n h S1 = ( y0 + 4 y1 + y2 ) 3 h S2 = ( y2 + 4 y3 + y4 ) 3 ................ h S n = ( yn − 2 + 4 y n − 1 + y n ) 3 ÖRNEK: f(x)= Sin x 2 x +1 denkleminin ( 0 , 1 ) aralığında integral değerini n=4 alarak Simpson Yöntemiyle hesaplayınız. xi yi 0 0.25 0.5 0.75 1 0 0.24549 0.45201 0.57164 0.59501 h S = ( y0 + 4 y1 + 2 y2 + 4 y3 + y4 ) = 0.397297 3 Prof.Dr. Nurettin UMURKAN 82 / 89 2010/11 Güz Nümerik Analiz Diferansiyel Denklemlerin Sayısal Çözümü Taylor Yöntemi Bu yöntemin esası Taylor Serisine dayanmaktadır. Daha çok birinci mertebe diferansiyel denklemlere uygulanır. dy = f ( x, y ) diferansiyel denkleminin çözümü y=y(x) olsun, dx y=y(x) çözümüne ilişkin başlangıç koşulları x=x0 için y(x0)=y0 olur, x’ in her değerindeki artma sabit kabul edilirse, ∆xi = xi +1 − xi = h , i = 0, 1, 2, 3, … bu durumda y = y(x) fonksiyonunun Taylor Serisine açılımı, h2 h3 hn (n) y ( x + h ) ≅ y ( x) + h y′( x ) + y′′( x ) + y′′′( x ) + L + y (x) 2! 3! n! dır. x yerine başlangıç değeri x0 yazıldığında ve dördüncü mertebeden türevli terimden sonrası ihmal edildiğinde, h2 h3 h 4 ( 4) y ( x0 + h ) = y ( x1 ) ≅ y ( x0 ) + h y′( x0 ) + y′′( x0 ) + y′′′( x0 ) + y ( x0 ) 2! 3! 4! denklem x1 için yazıldığında, Prof.Dr. Nurettin UMURKAN 83 / 89 Nümerik Analiz 2010/11 Güz h2 h3 h 4 (4) y ( x1 + h ) = y ( x2 ) ≅ y ( x1 ) + h y′( x1 ) + y′′( x1 ) + y′′′( x1 ) + y ( x1 ) 2! 3! 4! elde edilir. En genel halde xi için yazılırsa, h2 h3 h 4 ( 4) y ( xi + h ) = y ( xi +1 ) ≅ y ( xi ) + h y′( xi ) + y′′( xi ) + y′′′( xi ) + y ( xi ) 2! 3! 4! şeklinde elde edilir. ÖRNEK: dy = x y1 3 şeklinde verilen diferansiyel denklemi başlangıç dx koşulları x0 = 1 ve y(x1) = 1 olduğuna göre h=0.1 alarak y(1.1) değerini hesaplayınız. Fonksiyonun türevleri, y′( x ) = x y1 3 1 y′′( x ) = x 2 y −1 3 + y1 3 3 1 y′′′( x ) = − x3 y −1 + x y −1 3 9 1 2 y ( 4) ( x ) = x 4 y −5 3 − x 2 y −1 + y −1 3 9 3 olarak elde edilir. y (1.1) = 1 + 0.1 + 2 (0.1)2 + 4 (0.1)3 + 1 (0.1)4 = 1.10682 3 27 54 Prof.Dr. Nurettin UMURKAN 84 / 89 Nümerik Analiz 2010/11 Güz Euler Yöntemi y′( x) = dy = f ( x, y ) diferansiyel denkleminin çözümü y=y(x) dx olsun, y=y(x) çözümüne ilişkin başlangıç koşulları x=x0 için y(x0)=y0 olarak verildiğine göre y′( x0 ) = f ( x0 , y0 ) olur ve Taylor Serisinin ilk iki teriminin kullanılmasıyla y(x0+h) için bir yaklaşık değer bulunabilir. y ( x0 + h) = y0 + h y′( x0 ) y ( x0 + h) = y ( x1 ) = y1 y1 = y0 + h f ( x0 , y0 ) olarak elde edilir. Benzer şekilde, y ( x0 + 2h) = y ( x2 ) = y2 y2 = y1 + h f ( x1, y1 ) en genel hal için, n=0, 1, 2, . . . yn +1 = yn + h f ( xn , yn ) olarak tanımlanır. Prof.Dr. Nurettin UMURKAN 85 / 89 Nümerik Analiz 2010/11 Güz ÖRNEK: y ′ = − y diferansiyel denkleminin başlangıç değeri y(0)=1 olarak verildiğine göre h=0.01 için y(0.04) değerini hesaplayınız. y(0.01)=1+0.01(-1)=0.99 y(0.02)=0.99+0.01(-0.99)=0.9801 y(0.03)=0.9801+0.01(-0.9801)=0.9703 y(0.04)= 0.9703+0.01(-0.9703)=0.9606 Euler yöntemine ikinci bir yaklaşımda yamuk yöntemi uygulanarak elde edilen Düzenlenmiş Euler Formülüdür. Düzenlenmiş Euler Formülü y′( x) = dy = f ( x, y ) diferansiyel denkleminin çözümü y=y(x) dx olsun, y=y(x) çözümüne ilişkin başlangıç koşulları x=x0 için y(x0)=y0 olarak verildiğine göre, f(x,y) fonksiyonunun x’e göre integrali alındığında xi +1 xi +1 xi +1 dy x dx = ∫ dy = y xi +1 = y ( xi +1 ) − y ( xi ) ∫ f ( x, y )dx = ∫ i xi xi dx xi Prof.Dr. Nurettin UMURKAN 86 / 89 2010/11 Güz Nümerik Analiz elde edilir. Buradan xi +1 y ( xi +1) = ∫ f ( x, y )dx + y ( xi ) xi buradaki integral ifadesine yamuk kuralı ile yaklaşım sağlandığında, y ( xi +1 ) = y1 = y0 + y1(i +1) = y0 + h [ f ( x0 , y0 ) + f ( x1, y1)] 2 [ h f ( x0 , y0 ) + f ( x1, y1(i ) ) 2 ] i=0, 1, 2, . . . Burada y1(i ) , y1için i’ nci yaklaşımdır. Yukarıdaki y1(i +1) iterasyon formülündeki y1(0) değeri başlagıç koşulları için Euler formülünden hesaplanır. y1(0) = y0 + h f ( x0 , y0 ) ÖRNEK: y′ = x 2 + y diferansiyel denkleminin başlangıç değeri y(0)=1 olarak verildiğine göre h=0.05 için y(0.1) değerini hesaplayınız. x0 = 0 ve y0 = 1.0 f(x0, y0)=1.0 alınır, önce y(0.05) bulunur, ikinci iterasyonda y(0.1)değeri hesaplanır. Euler formülünden y1(0) = y0 + h f ( x0 , y0 ) Prof.Dr. Nurettin UMURKAN 87 / 89 2010/11 Güz Nümerik Analiz y1(0) = 1 + 0.05 (1) = 1.05 Bir sonraki adımda f ( x1, y1(0) ) verilen diferansiyel denklemden hesaplanır. f ( x1 , y1(0) ) = x 2 + y = 0.052 + 1.05 = 1.0525 Bulunan değerler Düzenlenmiş Euler Formülünde yerine yazılırsa y(0.05) değeri, [ ] h f ( x0 , y0 ) + f ( x1 , y1(0) ) 2 0.05 [1 + 1.0525] = 1.0513125 = 1+ 2 olarak hesaplanır. y(0.1) değerinin hesaplanması için işlemler ikinci iterasyon için tekrarlanır. y1(1) = y0 + Euler formülünden [ ] y 2(1) = y1(1) + h y ′ = 1.0513125 + 0.05 0.05 2 + 1.0513125 y2(1) = 1.1040 Bir sonraki adımda f ( x2 , y 2(1) ) verilen diferansiyel denklemden hesaplanır. f ( x2 , y2(1) ) = x 2 + y = 0.12 + 1.1040 = 1.114 Bulunan değerler Düzenlenmiş Euler Formülünde yerine yazılırsa y(0.1) değeri, Prof.Dr. Nurettin UMURKAN 88 / 89 Nümerik Analiz [ ] h y ′( x2 ) + y ( x2 (1) ) 2 0.05 [1.114 + 1.1040] = 1.05545 = 1+ 2 y 2( 2) = y0 + 2010/11 Güz olarak hesaplanır. KAYNAKLAR • • • • • • • • • • • Sayısal Analiz, Behiç Çağal, Birsen Yayınevi, http://merichrd.wordpress.com/2006/12/30/bilim-ve-teknolojinintarihsel-gelisim-oykusu/ http://www.batl.k12.tr/dokumanlar/ders_notlari/dokumanlar/bilgisayara _giris/01bil_tanitimi.pdf http://bilgibelge.humanity.ankara.edu.tr/ogrelfiles/ha/sunum2.ppt http://www.teknolojide.com/teknoloji-nedir.aspx Ana Britannica. 1987. Ankara: Ana Yayıncılık-Encyclopedia Britannica. Basalla, George. 1996. Teknolojinin Evrimi. Ankara: TÜBİTAK. ”Abaküs(SayıBoncuğu)”, http://olasilikuzayi.sitemynet.com/ist_dosyalar/abakus.HTM Sayma Tahtası Abaküs.http://www.google.com.tr/search?q=cache:8dWVEZUZTsJ:www.turkiyeonline.com/teknoloji/uzay_ve_populer_bilim/abakus/ index.php+%22abak%C3%BCs%22&hl=tr&ie=UTF-8 [03.07.2003]. “William Ougthred.”http://www.thocp.net/biographies/oughtred_william.htm Taşçı, Cemalettin ve M. Emin Mutlu. 1991. Bilgisayar Tarihi. İstanbul: Ağaç Yayıncılık. • Prof.Dr. Nurettin UMURKAN 89 / 89