sayisal yÖntemler ders notlari - ozgurertugrul.gen.trozgurertugrul.gen.tr/212/docs/ders...

141
ATATÜRK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MAKİNE MÜHENDİSLİĞİ BÖLÜMÜ SAYISAL YÖNTEMLER DERS NOTLARI ERZURUM 2012 Doç. Dr. Cihat ARSLANTÜRK Doç. Dr. Yusuf Ali KARA

Upload: others

Post on 19-Sep-2019

33 views

Category:

Documents


0 download

TRANSCRIPT

ATATÜRK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

MAKİNE MÜHENDİSLİĞİ BÖLÜMÜ

SAYISAL YÖNTEMLER

DERS NOTLARI

ERZURUM 2012

Doç. Dr. Cihat ARSLANTÜRK Doç. Dr. Yusuf Ali KARA

ozgur ertugrul
Text Box
ozgur ertugrul
Text Box
ozgur ertugrul
Text Box

1

BÖLÜM 1

MATEMATİKSEL TEMELLER ve HATA ANALİZİ 1.1. GİRİŞ Sayısal yöntemler, matematik problemlerinin, aritmetik işlemlerle çözülebilmelerini sağlayacak şekilde formüle edildiği tekniklerdir. Çeşitli sayısal yöntemler olmasına karşın, hepsinin ortak bir özelliği vardır: hepsi, değişmez bir şekilde çok sayıda zahmetli aritmetik işlem içerir. Bu nedenle, hızlı ve verimli sayısal bilgisayarların gelişmesiyle son yıllarda mühendislik problemlerinin çözümünde sayısal yöntemlerin önemli bir rol alması hiç de şaşırtıcı değildir. Sayısal yöntemleri öğrenmemizi gerektiren birçok neden sayılabilir.

1. Mühendislik uygulamalarında hiç de nadir olmayan ve analitik yollardan çözülmesi çoğu zaman olanaksız olan büyük sayıda denklem sistemlerini, doğrusallıktan sapmaları ve karmaşık geometrileri çözmeyi başarabilirler.

2. Mühendislikte, çoğu zaman ticari olarak sunulan ve sayısal yöntemleri içeren paket bilgisayar programlarını kullanmak zorunluluğu ortaya çıkar. Bu programların akılcı bir şekilde kullanılması genellikle yöntemlerin arkasındaki temel kuramı bilmekle mümkündür.

3. Eğer sayısal yöntemlerden anlıyorsanız ve bilgisayar programlamada ustaysanız, pahalı yazılımlara para ödemeye gerek kalmadan problemlerinizi çözebilirsiniz.

4. Sayısal yöntemlerle uğraşırken, bilgisayar programcılığınız da buna paralel olarak gelişecektir.

5. Sayısal yöntemler matematik anlayışınızı güçlendirecek araçlardır. Sayısal yöntemlerin bir işlevi de yüksek matematiği basit aritmetik işlemlere indirgemek olduğundan, başka zaman belirsiz kalan bazı konuların ayrıntılarına girer. Bu alternatif bakış açısıyla daha derinlemesine bir kavrayış ve açıklayıcı bilgi edinilebilir.

1.2. MATEMATİK MODELLEME ve MÜHENDİSLİK PROBLEMLERİNİN ÇÖZÜMÜ

Matematik bir model, en genel anlamıyla, fiziksel bir sistemin veya bir sürecin ana özelliklerini matematik terimlerle ifade eden bir eşitlik veya formül olarak tanımlanabilir. En genel halde matematik model aşağıdaki biçimde bir fonksiyonel ilişki olarak gösterilebilir. Bağımlı değişken=f (bağımsız değişkenler, parametreler, zorlayıcı fonksiyonlar) (1.1) Burada bağımlı değişken sistemin davranışını veya konumunu belirten bir özelliktir, bağımsız değişkenler genellikle zaman veya konum gibi sistemin davranışını

2

belirleyen boyuttur, parametreler sistemin özelliklerini ve yapısını yansıtırlar, zorlayıcı fonksiyonlar ise sistemi etkileyen dış etkenlerdir. (1.1) eşitliği ile verilen fonksiyonun gerçek matematiksel ifadesi, basit bir cebirsel bağıntı olabileceği gibi çok uzun karmaşık diferansiyel denklem takımları da olabilir. Tablo 1.1 bu fonksiyonları ve bunlara ait örnekleri içermektedir.

Tablo 1.1 Bazı Mühendislik Problemleri ve bunlara ait örnekler Cebrik Denklemler Algebraic Equations

ε=σ= E ;maF

Adi Diferansiyel Denklemler, ADD (Ordinary Differential Equation, ODE)

2

2

dtxdm

dtdvmF ==

Kısmi Diferansiyel Denklemler, KDD (Partial Differential Equation, PDE) q

yT

xT

2

2

2

2=

∂∂

+∂∂

(1.1) eşitliği ile verilen matematiksel modele, “bir cismin momentumundaki zamana göre değişiminin cisme etki eden bileşke kuvvetle orantılıdır” ifadesi ile verilen Newton’un ikinci yasası örnek olarak verilebilir. Bu ifade matematiksel olarak aşağıdaki şekilde yazılabilir. a.mF = (1.2) Burada F, cisme etkiyen net kuvvet (N), m, cismin kütlesi (kg) ve a, cismin ivmesidir (m/s2). İkinci yasa, her iki taraf m’ye bölünerek Eşitlik (1.1)’e benzer şekilde aşağıdaki gibi yeniden yazılabilir.

mFa = (1.3)

Burada a, sistemin davranışını yansıtan bağımlı değişken; F, zorlayıcı fonksiyon ve m, sistemin bir özelliğidir. Bu basit durum için bağımsız değişken yoktur, çünkü henüz ivmenin konuma ya da zamana göre nasıl değiştiğini belirlemedik. Eşitlik (1.3) basit bir cebirsel ifadedir ve kolaylıkla çözülebilir. Ancak, diğer fiziksel olayların matematik modelleri çok daha karmaşık olabilir. Bunlar ya tam olarak çözülemez, ya da daha karmaşık matematiksel çözüm teknikleri gerektirirler. Yeryüzüne yakın bir yükseklikte serbest düşen bir cismin son hızını elde etmek için Newton’un ikinci yasasını kullanalım. Burada düşen cisim yüksek bir yerden atlayan “bungee jumper” (Şekil 1.1a) veya bir paraşütçü Şekil (1.1b) olsun. İvme, hızın zamana göre değişimi olarak ifade edilir ve (1.3) eşitliğinde yerine yazılırsa

mF

dtdv

= (1.4)

Cisme etkiyen net kuvvet, ağırlık ve ters yöndeki hava direncinin bileşkesidir.

3

Şekil 1.1 Serbest düşen cisimlere etki eden kuvvetler

UD FFF += (1.5) Eğer aşağı yön pozitif kabul edilirse, mgFD = (1.6) yazılabilir. Hava direncinin hızla doğru orantılı olarak değiştiği kabul edilebilir. cvFU −= (1.7) Burada c (kg/s), direnç katsayısı olarak isimlendirilir. Gerekli basitleştirmeler yapılarak aşağıdaki ADD elde edilir.

vmcg

dtdv

−= (1.8)

Eğer başlangıçta paraşütçü hareketsiz ise, (t=0 iken v=0) diferansiyel denklemin çözümü aşağıdaki şekilde elde edilir.

[ ]t)m/c(e1c

mg)t(v −−= (1.9)

4

Eşitlik (1.9) ile (1.1) karşılaştırılırsa; v(t), bağımlı değişken; t, bağımsız değişken, c ve m, parametreler ve g, zorlayıcı fonksiyon olarak karşımıza çıkar. Örnek 1.1 Kütlesi 68.1 kg olan bir paraşütçü, duran bir hava balonundan atlamaktadır. Paraşütçünün hızının zamanla değişimini bulunuz. Çözüm: Sayısal değerler (1.9) eşitliğinde yerlerine yazılırsa, hızın zamana göre değişimini veren ifade elde edilir. [ ]t18355.0e139.53)t(v −−= (1.10) Dikkat edilirse bu fonksiyonun alacağı maksimum değer v=53.39 m/s kadardır.

0 5 10 15 20 25 300

10

20

30

40

50

60

t,s

v, m

/s

Son hız

Şekil 1.2 Düşen paraşütçü probleminin analitik çözümü. Paraşütçünün hızı zamanla

artmakta ve asimptotik olarak bir son hız değerine ulaşmaktadır.

Eşitlik (1.9) orijinal diferansiyel denklemi tamamen sağladığından analitik veya tam çözüm olarak adlandırılır. Ancak ne yazık ki birçok matematik model tam olarak çözülemez. Birçok durumda tam çözüme yaklaşmak için tek seçenek, sayısal bir çözüm geliştirmektir. Daha önce anıldığı gibi sayısal yöntemler, matematiksel problemlerin cebirsel işlemlerle çözülebilmesi için yeniden ifade edildiği problemlerdir. Bu ise Newton’un ikinci yasasında hızın zamana göre türevinin yaklaşık olarak Şekil 1.3 te görüldüğü gibi ifade edilmesiyle gösterilebilir.

5

Şekil 1.3 v’nin t’ye göre birinci türevi için sonlu fark yaklaşımının kullanılması

i1i

i1i

tt)t(v)t(v

tv

dtdv

−−

=∆∆

≅+

+ (1.11)

Bu ifade türevin yaklaşık olarak hesaplanmasını sağlar. Burada, v(ti), ti başlangıç anındaki hız, v(ti+1) ise sonraki ti+1 anındaki hızı göstermektedir. Türevin bu değeri (1.8) denkleminde yerine yazılır ve ifade yeniden düzenlenirse,

)tt()t(vmcg)t(v)t(v i1iii1i −

−+= ++ (1.12)

Örnek 1.2 Örnek 1.1’deki hesaplamayı sayısal olarak yapın. Çözüm: (1.12) eşitliği kullanılarak istenen hesaplama yapılır. Başlangıçta t0=0 ve v(t0)=0 olarak bilinmektedir. Zaman adımı 2 saniye olarak alınırsa,

s/m60.19)02()0(1.68

25.18.90)t(v 1 =−

−+=

s/m00.32)02()60.19(1.68

25.18.960.19)t(v 2 =−

−+=

Zaman ilerletilerek diğer zamanlara ait çözümler elde edilir. Sayısal çözüm, tam çözüm ile birlikte Şekil 1.4’te gösterilmiştir. Sayısal çözümün de tam çözümün asıl karakteristiğini yakaladığını söylemek mümkündür. Ancak sürekli eğrisel bir fonksiyon için doğrusal parçalı bir yaklaşım kullanıldığından, tam ve sayısal

6

çözümler arasında bir fark vardır. Bu farkı küçültmenin yolu daha küçük bir zaman adımı kullanmaktır. Adımı küçültmenin daha fazla doğruluk sağladığı, ancak, hesaplama zamanını da artırdığının farkında olmak gerekir.

Şekil 1.4 Düşen paraşütçü probleminde analitik ve sayısal çözümlerin karşılaştırılması

1.3. YAKLAŞTIRMA ve YUVARLATMA HATALARI Her ne kadar, sayısal teknikler analitik çözüme yakın sonuçlar verse de, sayısal yöntem bir yaklaştırma içerdiğinden tam çözümle arada bir fark (hata) ortaya çıkmaktadır. Sayısal yöntemlerin iki ana hata türü yuvarlatma ve kesme hatalarıdır. • Yuvarlatma hatası, bilgisayarların büyüklükleri sadece belirli sayıda haneyle gösterebilmelerinden kaynaklanır (makineye bağlı). • Kesme hatası, sayısal yöntemlerin, gerçek matematik işlem ve büyüklükleri ifade edebilmek için yaklaştırma kullanabilmesi sonucunda oluşan farklılıklardır (yönteme bağlı). 1.3.1. Anlamlı Basamaklar Bir hesapta sayıyla çalışıyorsak bunu güvenle kullanabileceğimize dair garantimiz olmalıdır. Örneğin Şekil 1.1’de verildiği gibi bir otomobilin hız ve kilometre göstergelerini düşünelim. Hız göstergesinden otomobilin 49 ile 50 km/saat hızla gittiği anlaşılabilir.

7

87324540

20

4060

80

100

120

6040

Şekil 1.5 Anlamlı basamak kavramını göstermek için bir otomobilin hız ve kilometre

göstergeleri İbre gösterge üzerindeki işaretlerin orta noktasından daha uzun olduğu için, aracın yaklaşık olarak 50 km/saat hızla hareket ettiğini güvenle söyleyebiliriz. Bu okumaya güveniriz, çünkü bu göstergeyi okuyacak iki veya daha fazla kişi de aynı sonuca ulaşacaklardır. Ancak hızın okunmasında noktadan sonra bir ondalık basamak daha olmasında ısrar edilecek olursa, bir kişi 49.8, bir başkası 49.9 km/saat diyebilecektir. Dolayısı ile bu aletin sınırları nedeniyle okumanın sadece ilk iki basamağı güvenle kullanılabilir. Öte yandan kilometre göstergesi altı kesin basamak göstermektedir. Bir sayının anlamlı basamakları güvenle kullanılabilecek olan basamaklardır. Kesin bilinen basamak sayısına ek olarak bir de tahmin edilen basamağı ifade ederler. Buna göre hız göstergesi 3 anlamlı basamak, kilometre göstergesi ise 7 anlamlı basamak göstermektedir. Genellikle bir sayının anlamlı basamaklarını bulmak kolay olsa da, bazı karışık durumlar olabilmektedir. Örneğin, sıfırlar her zaman anlamlı basamak değildir, çünkü sadece ondalık noktanın yerini belirler. 0.00001845, 0.0001845 ve 0.001845 sayılarının hepsinde dört anlamlı basamak vardır. Benzer biçimde büyük sayılarda, sağ taraftaki sıfırların kaç tanesinin anlamlı olduğu açık değildir. Örneğin, 45300 sayısının sıfırlarının güvenle bilinip bilinmemesine bağlı olarak üç, dört veya beş anlamlı basamağı olabilir. Bu tür belirsizlikler bilimsel notasyon kullanılarak giderilebilir. 4.53×104, 4.530×104, 4.5300×104 sayıları sırasıyla üç, dört ve beş anlamlı basamağa kadar bilinmektedir. 1.3.2. Doğruluk ve Hassaslık Doğruluk, hesaplanan ya da ölçülen değerin gerçek değere ne kadar uyduğunu ifade eder. Hassaslık ise, hesaplanan ya da ölçülen değerlerin kendi aralarında ne kadar

8

uyumlu olduklarını ifade eder. Şekil 1.2 deki hedef tahtasındaki her bir mermi deliği, sayısal bir tekniğin tahminleri olarak, hedefin ortası da gerçek olarak düşünülebilir.

Şekil 1.6 Doğruluk ve hassaslık kavramlarını açıklamak için hazırlanmış hedefe atış örneği

(a) yanlış ve belirsiz (b) doğru ve belirsiz (c) yanlış ve hassas (d) doğru ve hassas

1.3.3. Hata Tanımları Sayısal hatalar gerçek matematik işlemlerin ve büyüklüklerin yaklaştırmalarla ifade edilmelerinden doğar. Bunlar kesme ve yuvarlatma hatalarıdır. Gerçek ve yaklaşık sonuç arasındaki ilişki, Gerçek değer = yaklaştırma + hata (1.13) Şeklinde ifade edilebilir. Bu durumda gerçek sayısal hata, Et, aşağıdaki şekilde ifade edilir. Et = gerçek değer – yaklaştırma (1.14) Bu tanımın eksikliği, incelenmekte olan değerin mertebesini hiç dikkate almamasıdır. Örneğin bir santimetrelik bir hata, iki şehir arasındaki mesafe için anlamlı değilken, bir kalemin boyunun ölçümü için anlamlıdır. Büyüklüklerin mertebelerini de dikkate almanın bir yolu hanın gerçek değere göre normalize edilmesidir. Gerçek oransal bağıl hata = gerçek hata / gerçek değer Gerçek bağıl yüzde hata aşağıdaki şekilde tanımlanır. εt = (gerçek hata/ gerçek değer) × %100 (1.15) Burada t indisi hatanın gerçek değerle normalize edildiğini göstermektedir. Ancak sayısal yöntem uygulamalarında gerçek değer bilinmediğinden bu hata

9

hesaplanamaz. Bu durumda hata, gerçeğin en iyi bilinen tahminine göre normalize edilir. εa = (yaklaşık hata/ yaklaştırma) × %100 (1.16) Burada a indisi hatanın bir yaklaştırma ile normalize edildiğini göstermektedir. Sayısal yöntemlerdeki zor işlerden biri de gerçek değer hakkında bilgi sahibi olmadan hata tahminleri yapmaktır. Örneğin belirli sayısal yöntemler, yanıtı hesaplamak için iteratif yaklaşım kullanır. Bunlarda mevcut yaklaştırma, bir önceki yaklaşım esas alınarak yapılır. Bu tip durumlarda hata, genellikle o andaki yaklaştırma ile bir önceki yaklaştırma arasındaki fark olarak tahmin edilir. Dolayısıyla, bağıl yüzde hata aşağıdaki ifadeyle bulunur: εa = (mevcut yaklaştırma-önceki yaklaştırma) /(mevcut yaklaştırma)× %100 Çoğu zaman hesap yaparken hatanın işareti ile ilgilenmeyebiliriz, ancak yüzdenin mutlak değerinin önceden verilen bir εs tolerans değerinden daha küçük olup olmadığı bizi ilgilendirir. Bu durumda aşağıdaki şart sağlanıncaya kadar hesaba devam edilir. sa ε<ε (1.17) Bu bağıntı sağlanırsa, sonucun daha önce belirlenmiş, kabul edilebilir hata sınırları içinde kaldığı kabul edilir. Hataları anlamlı basamak sayısıyla da ilişkilendirmek yararlı olacaktır. Aşağıdaki ölçüt gerçekleştiği takdirde sonucun en az n anlamlı basamak için kesinlikle doğru olduğu literatürde ispatlanmıştır. )105.0%( n2

s−×=ε (1.18)

1.3.4. Yuvarlatma Hataları Daha önce belirtildiği gibi, yuvarlatma hataları bilgisayarların hesaplar sırasında sadece belirli sayıda anlamlı basamağı saklamalarından kaynaklanır. π, e,√7 gibi sayılar sabit sayıda anlamlı basamakla yazılamaz. Bu nedenle bilgisayarda tam olarak ifade edilemezler. Ayrıca bilgisayarlar 2-tabanlı gösterim kullandıklarından bazı 10-tabanlı tamsayıları da hassas olarak ifade edemezler. Anlamlı basamakların bu şekilde ihmal edilmelerinden doğan farka yuvarlatma hataları denir. 1.3.4.1 Sayıların bilgisayarda gösterimi Sayısal yuvarlatma hataları doğrudan sayıların bilgisayarda saklanma şekliyle ilgilidir. Bilginin gösterildiği en temel birim kelime olarak bilinir. Bu büyüklük bir dizi iki tabanına göre yazılmış sayı veya bit’ten meydana gelir. Sayılar tipik olarak bir veya daha fazla kelime şeklinde saklanır. Bunun nasıl yapıldığını anlamak için, önce sayı sistemleriyle ilgili bazı bilgileri gözden geçirmek gerekir.

10

Sayı sistemleri. En bilinen sayı sistemi 10-tabanlı sayı sistemidir. On tabanlı sistem sayıları göstermek için on adet rakam kullanır. Bilgisayarlar ise 2-tabanlı sistem kullanır. Bunun durum, sayısal bilgisayarların mantık birimlerinin açık/kapalı konumlu elektronik elemanlar olmasıyla ilgilidir. Şekil 1.7 sistemlerin 10 ve 2 tabanlarına göre nasıl çalıştığı görülmektedir.

Şekil 1.7 (a) Ondalık (10 tabanlı) (b) İkili (2-tabanlı) sistemler

Tamsayıların gösterimi. İşaretli büyüklük yöntemi adı verilen en doğrudan yaklaştırmada, kelimenin ilk biti işareti gösterir, 0 pozitif 1 negatif anlamına gelir. Geri kalan bit’ler sayıyı saklamakta kullanılır. Örneğin -173 sayısının tamsayı değeri 16-bitli bir bilgisayarda Şekil 1.8’deki görüldüğü gibi saklanır.

Şekil 1.8 -173 ondalık tamsayısının 16-bitli bir bilgisayarda işaretli büyüklük yöntemiyle

gösterimi Örnek 1.3 16-bitli bir bilgisayarda gösterilebilecek 10-tabanlı tamsayıların aralığını bulunuz. Çözüm: 16 bitten ilki işareti gösterir. Geri kalan 15 bit sıfırdan 111111111111111’e kadar ikili sayıları içerir. Üst sınır ondalık bir sayıya aşağıdaki şekilde

11

dönüştürülebilir. 32767)21()21()21()21( 011314 =×+×++×+× O halde 16-bitli bir bilgisayar kelimesi -32767’den 32767’ye kadar bir aralıktaki sayıları saklayabilir. Dahası sıfır zaten 0000000000000000 olarak tanımlandığından eksi sıfırı tanımlamak için 1000000000000000 sayısını kullanmak gereksizdir. Bu nedenle sayı, ek bir negatif sayıyı, -32768’i göstermek için kullanılabilir. Bu durumda aralık [-32768, 32767] şeklindedir. Bu örnek, sayısal bilgisayarların tamsayıları göstermekteki sınırlı yeteneklerini iyi bir biçimde anlatır.

İşaretSayı

İşaretli üs

İşaret

Mantis

Şekil 1.9 Kayan noktalı bir sayının bir kelimede saklanma yolu

Kayan noktalı sayı gösterimi. Kesirli nicelikler, bilgisayarda tipik olarak kayan nokta yapısında gösterilir. Bu yaklaşımda sayı mantis denen kesirli kısım ile üs denen bir tamsayı kısım şeklinde gösterilir (m.be). Burada m=mantis, b=kullanılan sayı sisteminin tabanı ve e=üs’tür. Örneğin 156.78 sayısı, 10-tabanlı kayan nokta sisteminde, 0.15678 x 103 şeklinde gösterilebilir. Şekil 1.9, kayan noktalı bir sayının bir kelime olarak saklanabileceği yollardan birini göstermektedir. İlk bit işaret için, sonrakiler işaretli üs için, geri kalan bitler de mantis için ayrılır. Sayının başında sıfırlar olması halinde genellikle mantisin normalize edildiğine dikkat edin. Örneğin, 1/34=0.029411765... niceliğinin sadece dört ondalık basamağının saklanmasına izin veren 10-tabanlı kayan nokta sisteminde saklandığını varsayalım. Bu durumda sayı 0.0294 x 100 şeklinde saklanacaktır. Oysa bu işlemi yaparken, ondalık noktanın sağındaki gereksiz sıfırın yazılması bizi, beşinci ondalık basamaktaki 1 rakamını atmak zorunda bırakır. Sayı baştaki sıfırı kaldıracak şekilde mantisi 10 ile çarparak ve üssü bir azaltarak normalize edilebilir. 0.2941 x 101

Böylece sayı saklarken ek bir anlamlı basamak daha bırakılabilir. Normalizasyonun bir sonucu m’nin mutlak değerinin sınırlı olmasıdır. Yani,

1mb1

<≤ (1.19)

12

Burada b tabandır. Örneğin 10-tabanlı sistemde m, 0.1 ile 1 aralığında; 2-tabanlı sistemde 0.5 ile 1 aralığında değişecektir. Kayan nokta gösterimi, hem kesirlerin hem de çok büyük sayıların bilgisayarlarda gösterilmesine olanak tanır. Ancak bazı sakıncaları vardır. Örneğin, kayan noktalı sayılar tamsayılara göre daha fazla yer tutar ve işlemler daha uzun sürer. Daha da önemlisi, mantis sadece sonlu sayıda anlamlı basamak tutabildiğinden, bir hata kaynağı oluşturur. Böylece yuvarlatma hataları ortaya çıkar. Örnek 1.4 7-bitli kelimeler kullanarak bilgi saklayan bir makine için sanal kayan noktalı sayılar grubu oluşturun. İlk biti sayının işareti için ayırın, sonraki üç biti üssün işareti ve büyüklüğü, son üçünü de mantis için kullanın. Çözüm:

Şekil 1.10 Örnek 1.4 için mümkün olan en küçük pozitif kayan noktalı sayı

Mümkün olan en küçük pozitif sayı Şekil 1.10’da gösterilmiştir. İlk 0, sayının pozitif olduğunu gösterir. İkinci basamaktaki 1, üssün negatif olduğunu belirtir. Üçüncü ve dördüncü basamaktaki 1’ler ise üsse maksimum değerini verir.

32121 01 =×+×

Yani üs 3 olacaktır. Son olarak da mantis son üç basamaktaki 100 ile verilmiştir ve,

5.0202021 321 =×+×+× −−−

sonucunu verir. Daha küçük bir mantis kullanmak mümkünse de (000, 001, 010 gibi), normalizasyonla getirilen sınırlama nedeniyle 100 kullanılmıştır (Eşitlik 1.19). Dolayısıyla bu sistemde mümkün olan en küçük sayı +0.5x2-3, veya 10-tabanlı sistemde 0.0625’tir. Bir sonraki en büyük sayı ise mantisi artırarak aşağıdaki gibi bulunur.

103321 )078125.0(2)212021(0111101 =××+×+×= −−−−

10

3321 )093750.0(2)202121(0111110 =××+×+×= −−−−

13

103321 )109375.0(2)212121(0111111 =××+×+×= −−−−

10-tabanlı eşdeğerlerin 0.015625 büyüklüğündeki aralıklarla sıralandığına dikkat edin. Bu noktada artırmaya devam edebilmek için üssü 10 değerine azaltmalıyız. Bu da,

01 2021 ×+× −

değerine eşittir. Mantis yeniden en küçük değeri olan 100’e getirilir. Böylece bir sonraki sayı

102321 )125000.0(2)202021(0110100 =××+×+×= −−−−

olur. Bu durumda aralık hala 0.125000-0.109375=0.0115625 değerine eşittir. Ancak şimdi mantis artırılarak daha büyük sayılar oluşturuldukça aralık 0.03125 değerine erişmiştir.

102321 )156250.0(2)212021(0110101 =××+×+×= −−−−

10

2321 )187500.0(2)202121(0110110 =××+×+×= −−−−

10

2321 )218750.0(2)212121(0110111 =××+×+×= −−−−

Bu düzen daha büyük her değere ulaştıkça aşağıdaki maksimum sayı elde edilinceye kadar tekrarlanır.

103321 )7(2)212021(0011111 =××+×+×= −−−

Elde edilen son sayı grubu Şekil 1.11’de gösterilmiştir.

Şekil 1.11 Örnek 1.4’e geliştirilen sanal sayı sistemi. Her bir değer bir çentikle gösterilmiştir.

Sadece mümkün olan sayılar gösterilmiştir. Tümüyle eşdeğer bir grup ta negatif yönde uzanacaktır.

14

Şekil 11.1 kayan nokta gösteriminin bilgisayar yuvarlama hataları açısından önemli olan birçok yönünü ifade eder. 1. Gösterilebilecek büyüklüklerin aralığı sınırlıdır. Tamsayı durumunda olduğu gibi, gösterilemeyen büyük pozitif ve negatif sayılar vardır. Kabul edilen aralığın dışındaki sayıların kullanılmasına kalkışıldığında, üstten tanım sınırını aşma denilen hata oluşur. Kayan nokta gösteriminin büyük sayıların yanında küçük sayıları da gösterememe gibi ek bir sınırlaması daha vardır. Bu durum Şekil 1.11’de sıfırla ilk pozitif sayı arasında kalan alttan tanım sınırını aşma deliği ile gösterilmiştir. 2. Aralık içinde gösterilebilen sadece sonlu sayıda büyüklük vardır. Dolayısıyla, hassaslığın derecesi sınırlıdır. Elbette ki irrasyonel sayılar tam olarak gösterilemez. Dahası gruptaki değerlerden biriyle tam olarak örtüşmeyen rasyonel sayılar da hassas olarak gösterilemezler. Her iki durumu da yaklaşık olarak göstermemiz sonucu oluşan hatalara niceleme hataları denir. Gerçek yaklaştırma iki şekilde yapılır: budayarak veya yuvarlayarak. Örneğin π=3.14159265358… değerinin 10-tabanlı sayı sisteminde yedi anlamlı basamakla saklanacağını varsayalım. Eğer budama yapılacaksa π=3.141592, yuvarlatma yapılacaksa π=3.141593 şeklinde saklanır. Genişletilmiş hassaslık: Şekil 1.11’deki sanal sayı sistemi, konuyu açıklayabilmek için kullanılan abartılmış bir durumdu. Ticari bilgisayarlar çok daha büyük kelimeler kullanırlar, dolayısıyla sayıların gerekenden daha fazla hassaslıkla temsil edilmelerini sağlarlar. Örneğin IEEE formatını kullanan bilgisayarlar mantis için 24 bit kullanılmasına izin verirler, bu da 10-38 ile 1039 aralığında 10-tabanlı yedi anlamlı basamaklı hassaslık anlamına gelir. Bununla birlikte, yuvarlatma hatalarının kritik olabileceği durumlar da vardır. Bu durumlarda kullanılan kelimelerin sayısı iki katına çıkarılarak çift katlı hassaslık sağlanır. 16 ondalık basamak hassaslık 10-308 ile 10308 arasında bir aralık sağlar. 1.3.4.2 Bilgisayar sayılarının aritmetik işlemleri Bilgisayar sayı sistemlerinin sınırlamaları bir yana, bu sayılarla yapılan gerçek aritmetik işlemler de yuvarlatma hatalarına yol açabilir. Basit toplama, çıkarma, çarpma ve bölmeye yuvarlatma hatalarının etkisini göstermek için normalize edilmiş 10-tabanlı sayıları kullanacağız. Diğer say tabanlı sistemler de benzer şekilde davranacaklardır. Tartışmayı basitleştirmek için 4-basamaklı mantis ve 1-basamaklı üs kullanan sanal bir ondalıklı bilgisayar ele alacağız. Ayrıca budama kullanılacaktır. İki kayan noktalı sayı toplandığında, üssü küçük olan sayının mantisi üsler aynı olacak şekilde değiştirilir. Bu işlem ondalık noktanın aynı hizaya gelmesini sağlar. Örneğin, 0.1557x101 ile 0.4381x10-1 sayılarını toplamak isteyelim. İkinci sayının mantisindeki nokta üslerin farkına eşit sayıda basamak kadar sola kaydırılır. Şimdi sayılar toplanabilir.

15

1

1

1

10.160081.0

10.004381.0

10.1557.0

Sonuç 0.1600.101 sayısına budanır. İkinci sayının sağa doğru kaydırtılan iki basamağı işlem sonunda kaybedilmiş olur. 4-basamak mantis ve 1-basamak üs kullanan sanal bir bilgisayarda, küçük bir sayı, örneğin 0.0010 ile büyük bir sayıyı, örneğin 4000’i toplamak isteyelim. Küçük sayıyı üssü büyük olana uyacak şekilde değiştirelim:

4

4

4

10.4000001.0

10.0000001.0

10.4000.0

Şimdi sayıyı budanırsa 0.4000.104 bulunur. Bu durumda bir yuvarlama hatası ortaya çıkar. 1.3.5. Kesme Hataları ve Taylor Serisi Eğer f fonksiyonu ve ilk n+1 türevi x0 ve x‘i içeren bir aralıkta sürekli ise f fonksiyonunun x’teki değeri

n

n

0k

n0

0)k(

nn

00

)n(2

00

00

0

R)xx(!k

)x(f

R)xx(!n

)x(f)xx(

!2)x(f

)xx(!1

)x(f)x(f)x(f

+−=

+−++−′′

+−′

+=

∑=

(1. 20) şeklinde ifade edilir. Burada Rn kalan olup,

∫ +−

=x

0x

)1n(n

n dt)t(f!n

)tx(R (1.21)

ifadesiyle verilir ve t boş veya yalancı değişkendir (dummy variable). (1.20) eşitliği Taylor serisi olarak bilinir. Eğer kalan ihmal edilirse eşitliğin sağ tarafı f fonksiyonunun Taylor polinom yaklaştırmasıdır. Taylor serisi, herhangi bir düzgün fonksiyonun yaklaşık olarak bir polinom olarak ifade edilmesini sağlar. (1.21) eşitliği kalanı ifade etme şekillerinden biridir ve integral formu adı verilir. Alternatif bir ifade ortalama değer teoremi yardımıyla üretilir ve kalanın türev veya Lagrange formu olarak bilinir.

16

1n

0

)1n(

n )xx()!1n(

)(fR ++

−+

ξ=

(1.22) Burada n indisi kalanın n’inci derece yaklaştırma için yazıldığını gösterir. ξ, x0 ile x arasında değer alan bir sayıdır. Taylor seri açılımının pratikteki değeri şudur; sadece birkaç terim kullanılsa bile yaklaştırma birçok durumda, bizi ilgilendiği kadarıyla gerçek değere çok yakın sonuçlar verecektir. “Yeteri kadar doğrunun” kaç terimle sağlanacağı, açılımın kalan terimi esas alınarak bulunur. Çoğu zaman Taylor serisini h=xi+1-xi ile tanımlanan bir adımla basitleştirerek aşağıdaki şekilde yazmak kolaylık sağlar:

nni

)n(2ii

i1i Rh!n

)x(fh!2

)x(fh!1

)x(f)x(f)x(f +++′′

+′

+=+

(1.23)

Kalan terimi ise bu durumda şöyle yazılır.

1n

)1n(

n h)!1n(

)(fR ++

= (1.24)

Bu bağıntının iki önemli sorunu vardır. İlki ξ tam olarak bilinmemekte, sadece xi ile xi+1 arasında yer almaktadır. İkincisi, (1.24) eşitliğini hesaplamak için fonksiyonun (n+1). türevini bulmalıyız. Bunu yapabilmek için f(x)’i bilmeliyiz. Ancak f(x)’i bilseydik zaten Taylor seri açılımına ihtiyacımız olmazdı. Bu ikileme rağmen (1.24) eşitliği yine de kesme hatalarını anlamamız açısından yararlıdır. Bunun nedeni eşitlikte yer alan h terimi üzerinde kontrolümüz olmasıdır. Başka bir deyişle f(x)’i x’ten ne kadar uzakta hesaplamak istediğimizi seçebiliriz ve açılımda kaç terim olacağını kontrol edebiliriz. Dolayısıyla (1.24) eşitliği genellikle

)h(OR 1n

n+= (1.25)

şeklinde yazılır. O(hn+1) sembolü kesme hatasının hn+1 mertebesinde olduğunu gösterir. Örneğin hata O(h) ise adımı yarıya indirmek hatayı da yarıya indirecektir. Öte yandan hata O(h2) ise adımı yarıya indirmek hatayı dörtte bire indirecektir. Örnek 1.5 f(x)=cos(x) fonksiyonunun x0=π/4 civarındaki Taylor serisi açılımının n=0’dan 6’ya kadar olan terimlerini kullanarak, x=π/3 noktasında f fonksiyonunun ve türevinin değerlerini bulunuz. Çözüm: Gerçek fonksiyon bilindiğinden, f(π/3)=0.5 gerçek değer olarak bulunur.

17

)xsin()x(f)xcos()x(f

)xsin()x(f)xcos()x(f

00

00

00

00

=′′′−=′′−=′

=

(1.8) denkleminden 1. derece yaklaştırma

)xx(

!1)x(f

)x(f)x(f 00

0 −′

+=

)4/x( 0 π=

)

4x)(

4sin()

4cos()x(f π

−π

−π

=

521986659.0)43

)(4

sin()4

cos()3

(f =π

−ππ

−π

40.4%100%

5.0521986659.05.0

t −=−

(1.8) denkleminden 2. derece yaklaştırma

2

00

00

0 )xx(!2

)x(f)xx(

!1)x(f

)x(f)x(f −′′

+−′

+=

497754491.0)

43)(

4cos(

21)

4x)(

4sin()

4cos()

3(f 2 =

π−

ππ−

π−

π−

π=

π

449.0%100%

5.0497754491.05.0

t =−

devam edilirse aşağıdaki tablo oluşturulur.

Mertebe, n f(π/3) εt (%) 1 0.521986659 -4.4

2 0.497754491 0.449

3 0.499869147 2.62 x 10-2

4 0.500007551 -1.51 x 10-3

5 0.500000304 -6.08 x 10-5

6 0.499999988 2.40 x 10-6

18

0 0.5 1 1.5

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

x

Taylor serisi vs. gerçek fonksiyon

3. mert6. mertgerçek fonk

Şekil 1.12 Cos(x) fonksiyonu ve Taylor serisi açılımları

19

BÖLÜM 2

CEBİRSEL DENKLEMLERİN KÖKLERİ 2.1. GİRİŞ f(x)=ax2+bx+c ikinci derece denkleminin köklerini bulmayı biliyoruz. Bu denklemin köklerini f(x)=0 şartını sağlayan x değerleri olarak tanımlayabiliriz. Bu nedenle denklemin köklerine bazen denklemin sıfırları adı verilir. Bir ikinci dereceden polinom gibi kökleri doğrudan bulunan denklemler olmasına karşın, f(x)=e-x - x gibi basit görünen bir fonksiyon bile analitik olarak çözülemeyebilir. Bu tip durumlarda tek seçenek yaklaşık çözüm teknikleridir. Yaklaşık çözüm elde etmek için kullanılacak yöntemlerden biri, fonksiyonu çizerek x eksenini kestiği noktayı belirlemektir. Ancak bu yöntem köklerin kaba bir tahminini içerdiğinden her zaman kullanılması uygun değildir. Alternatif bir yöntem deneme-yanılma yöntemidir. Bu yöntemde x için bir değer tahmin edilir ve f(x) fonksiyonunun sıfır olup olmadığına bakılır. Eğer değilse yeni bir değer tahmin edilir. Bu süreç f(x)’in sıfıra yakın bir değer almasına kadar tekrarlanır. Bu tip rastgele yöntemler elbette mühendislik gereksinimleri için verimsizdir ve uygun değildir. Bu aşamada yaklaşık sonuç veren, ancak sistematik olarak doğru köke yaklaşan yöntemler incelenecektir. Bu sistematik yöntemler ile bilgisayarların bileşimi kök bulma problemini basit ve verimli bir hale sokar. 2.2. KAPALI YÖNTEMLER Fonksiyonların kökleri civarında işaret değiştirmeleri gerçeğinden yararlanan yöntemler, kökün ilk tahmini için kökün arasında olduğu iki değer gerektirir. Bu yüzden bu yöntemler, kapalı yöntemler olarak bilinir. Adından da anlaşılacağı gibi, ilk tahmin değerleri kökün farklı yanlarında olmalıdır. Şekil (2.1) de verilen bir fonksiyonu ele alalım. f(x) ‘i sıfır yapan bir x değeri f(x) in köküdür (root). Yani f(xr) = 0 ise xr değerine f(x) fonksiyonunun köküdür denir. Şekil 2.1’den, verilen fonksiyonun x=14 civarında bir kökü olduğu görülmektedir. Kökün sağ ve solunda fonksiyonun değerinin işaret değiştirdiği grafikten açıkça görülmektedir.

20

0 2 4 6 8 10 12 14 16 18 20

-10

0

10

20

30

40

50

60

x

f(x)

Şekil 2.1 Bir f(x) fonksiyonunun eğrisi

xa kökün solunda (alt değer) xü kökün sağında (üst değer) olmak üzere örneğin

0)12( >=axf iken 0)16( >=üxf dır. Şekil (2.2) köklerin alt sınır ve üst sınırla belirlenen aralıkta alabileceği veya (olamayacağı) birkaç durumu göstermektedir.

Şekil 2.2 Bir kökün alt ve üst sınırla belirlenen aralıkta birkaç değişik şekilde genel

olarak gösterilmesi

Şekil 2.2, köklerin belirlenen bir aralıkta alabileceği birkaç şekli gösterir. Genel olarak eğer f(xa) ve f(xü) farklı işarete sahip iseler aralıkta tek sayıda kök vardır. Şekil 5.2 (a) ve 5.2 (c)’de olduğu gibi f(xa) ve f(xü) aynı işarete sahip iseler, aralıkta ya hiç kök yoktur veya çift sayıda kök vardır. Bu genellemeler çoğunlukla doğru olsa da, doğru olmadığı bazı durumlar vardır. Örneğin x eksenine teğet geçen fonksiyonlar ve süreksiz fonksiyonlar bu kuralı bozarlar (Şekil 2.3a ve 2.3b).

21

Şekil 2.3 Genel durumlara uymayan istisnalar (a) katlı kök (b) süreksiz fonksiyon

2.2.1. Aralığı İkiye Bölme Yöntemi Eğer bir fonksiyon bir aralıkta işaret değiştiriyorsa, fonksiyonun orta noktadaki değeri hesaplanır. Daha sonra kökün yeri, işaretin değiştiği aralığın ortasında kabul edilir. Daha yakın tahminler elde etmek için bu süreç tekrarlanır. Yönteme ilişkin algoritma aşağıda verilmiştir.

Tablo 2.1. Aralığı ikiye bölme yöntemine ait algoritma Adım 1: f(xa) f(xü)<0 şartını sağlayan xa ve xü değerlerini tahmin et. Adım 2: Aşağıdaki eşitliği kullanarak kök için tahmini bir değer hesapla xr=(xa+xü)/2 Adım 3: Eğer f(xa) f(xr)<0 ise kök soldaki alt aralıktadır. xü=xr yazarak Adım 2’ ye dön. Eğer f(xa) f(xr)>0 ise kök sağdaki alt aralıktadır. xa=xr yazarak Adım 2’ ye dön. Eğer f(xa) f(xr)=0 ise kök xr ye eşittir. Hesaplamadan çıkın. Bu aşamada yöntemi ne zaman durdurulacağına karar verilmesi gerekir. Daha önce tanımlandığı gibi bağıl yüzde hata aşağıdaki şekilde hesaplanabilir.

syeni

r

eskir

yenir

a 100x

xxε≤×

−=ε

(2.1) Yaklaşık hata, εs gibi belirlenmiş bir tolerans yüzde hatadan küçük olduğunda hesap durdurulabilir. Yukarıdaki kriter, durdurma kriteri olarak isimlendirilir. Yaklaşık olarak hesaplanacak olan kökün en az n anlamlı basamak için kesinlikle doğru olması isteniyorsa εs aşağıdaki gibi hesaplanmalıdır.

( )n2s 105.0% −×=ε (2.2)

22

Örnek 2.1. Şekil (2.1) ile grafiği verilen aşağıdaki fonksiyonun kökünü bulunuz.

40)e1(x

38.667)x(f x146843.0 −−= −

(2.3)

Çözüm: Tablo (2.1) ile verilen algoritma uygulanırsa, ilk üç iterasyon aşağıdaki şekilde elde edilir. 1.İter Adım 1: xa=12 xü=16 f(12) = 6.06695 f(16) = -2.26875 f(12).f(16)<0

Adım 2: xr=(12+16)/2 =14 f(14) = 1.56871 Adım 3: f(12) f(14)>0 olduğundan kök sağ alt aralıktadır. xa=14

2. İter Adım 2: xa=14 xü=16 xr=(14+16)/2 =15 f(15) =-0.42483 Adım 3: f(14) f(15)<0 olduğundan kök sol alt aralıktadır. xü=15

3. İter Adım 2: xa=14 xü=15 xr=(14+15)/2 =14.5 f(14.5) =0.552328 Adım 3: f(14) f(14.5)>0 olduğundan kök sağ alt aralıktadır. xa=14.5

Ardışık iki iterasyon için tolerans εs=%0.001 olarak alınırsa ve Tablo 2.2 ile verilen MATLAB kodu yardımıyla çözüm Tablo 2.3 de görüldüğü gibi elde edilir.

Tablo 2.2. Aralığı ikiye bölme algoritmasına göre yazılmış MATLAB programı function [x,y] = example_2_1(fonk_2_1) format short %programı çalıştırmak için komut satırına [x,y]=example_2_1('fonk_2_1') yazınız. xa=12; %xa = input ('alt sınırı gir xa='); xu=16; %xu = input ('alt sınırı gir xa='); es=0.0001; %es = input ('istenen tolerans değerini gir es='); maxit=100; %maxit = input ('maksimum iterasyon sayısını gir maxit= '); a(1) = xa; b(1) = xu; ya(1) = feval('fonk_2_1',a(1)); yb(1) = feval('fonk_2_1',b(1)); if ya(1)*yb(1) > 0.0 error (' Fonksiyon uç noktalarda aynı işarete sahip'); end for i=1 : maxit x(i)=(a(i)+b(i))/2; y(i)=feval('fonk_2_1',x(i)); if (abs(1-x(i)/a(i)))*100<es disp('Aralığı ikiye bölme yöntemi yakınsadı');break; end if y(i)==0.0 disp('kökün tam değeri elde edildi');break; elseif y(i)*ya(i)<0

23

Tablo 2.3. Örnek 2.1. için iterasyonlar İter no. xa xü xr f(xa) f(xü) f(xr) εa %

1 12 16 14 6.06695 -2.26875 1.56871 2 14 16 15 1.568710 -2.26875 -0.42483 7.142857

3 14 15 14.5 1.568710 -0.42483 0.552328 3.571429 4 14.5 15 14.75 0.552328 -0.42483 0.058963 1.724138 5 14.75 15 14.875 0.058963 -0.42483 -0.18412 0.847458 6 14.75 14.875 14.8125 0.058963 -0.18412 -0.06287 0.423729 7 14.75 14.8125 14.78125 0.058963 -0.06287 -0.00203 0.211864 8 14.75 14.78125 14.76563 0.058963 -0.00203 0.028448 0.105932 9 14.76563 14.78125 14.77344 0.028448 -0.00203 0.013204 0.052910

10 14.77344 14.78125 14.77734 0.013204 -0.00203 0.005586 0.026441 11 14.77734 14.78125 14.77930 0.005586 -0.00203 0.001778 0.013217 12 14.7793 14.78125 14.78027 0.001778 -0.00203 -0.00013 0.006608 13 14.7793 14.78027 14.77979 0.001778 -0.00013 0.000826 0.003304 14 14.77979 14.78027 14.78003 0.000826 -0.00013 0.000350 0.001652 15 14.78003 14.78027 14.78015 0.000350 -0.00013 0.000112 0.000826

Örnek 2.2. Aralığı ikiye bölme yöntemini kullanarak 3 ‘ün değerini εs=10-4 olacak şekilde hesaplayınız. [Hatırlatma: f(x)=x2-3 denkleminin pozitif kökü 3 ‘tür.]

a(i+1)=a(i);ya(i+1)=ya(i); b(i+1)=x(i);yb(i+1)=y(i); else a(i+1)=x(i);ya(i+1)=y(i); b(i+1)=b(i);yb(i+1)=yb(i); end; iter=i; if (iter>=maxit) disp('Arzu edilen tolerans için kök bulunamadı'); end end n=length(x);k=1:n; out=[k' a(1:n)' b(1:n)' x' y']; disp (' step xa xu xr f(xr)'); disp(out) function f=fonk_2_1(x) f=667.38/x*(1-exp(-0.146843*x))-40;

24

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-3

-2.5

-2

-1.5

-1

-0.5

0

0.5

1

x-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

-3

-2.5

-2

-1.5

-1

-0.5

0

0.5

1

x

Kök Kök

Çözüm:

Şekil 2.4 f(x)= x2-3 fonksiyonunun kökleri

Şekil 2.4’ten görüldüğü gibi, denklemin pozitif kökü [1.5, 2] aralığındadır. xa=1.5 ve xü=2 başlangıç aralığı olarak belirlenir ve iterasyona başlanır. Tablo (2.1) ile verilen algoritma uygulanırsa, ilk üç iterasyon aşağıdaki şekilde elde edilir.

1.İter Adım 1: xa=1.5 xü=2 f(1.5) = -0.75 f(2) = 1 f(1.5).f(2)<0 Adım 2: xr=(1.5+2)/2 =1.75 f(1.75) = 0.0625 Adım 3: f(1.5) f(1.75)<0 olduğundan kök sol alt aralıktadır. xü=1.75

2. İter Adım 2: xa=1.5 xü=1.75 xr=(1.5+1.75)/2 =1.625 f(1.625) =-0.35938 Adım 3: f(1.5) f(1.625)>0 olduğundan kök sağ alt aralıktadır. xa=1.6255

3. İter Adım 2: xa=1.625 xü=1.75 xr=(1.625+1.75)/2 =1.6875 f(1.6875) =-0.15234 Adım 3: f(1.625) f(1.6875)>0 olduğundan kök sağ alt aralıktadır. xa=1.6875

Tablo 2.4. Örnek 2.2. için iterasyonlar

İter no. xa xü xr f(xa) f(xü) f(xr) εa % 1 1.5 2 1.75 -0.75 1 0.0625 16.66667 2 1.5 1.75 1.625 -0.75 0.0625 -0.35938 8.333333 3 1.625 1.75 1.6875 -0.35938 0.0625 -0.15234 3.846154 4 1.6875 1.75 1.71875 -0.15234 0.0625 -0.0459 1.851852 5 1.71875 1.75 1.734375 -0.0459 0.0625 0.008057 0.909091 6 1.71875 1.734375 1.726563 -0.0459 0.008057 -0.01898 0.454545 7 1.726563 1.734375 1.730469 -0.01898 0.008057 -0.00548 0.226244

…. …. …. …. …. …. …. …. …. …. …. …. …. …. …. …. 13 1.731934 1.732056 1.731995 -0.00041 1.68E-05 -0.00019 0.003524 14 1.731995 1.732056 1.732025 -0.00019 1.68E-05 -8.9E-05 0.001762 15 1.732025 1.732056 1.73204 -8.9E-05 1.68E-05 -3.6E-05 0.000881

25

2.2.2. Yer Değiştirme Yöntemi Aralığı ikiye bölme yöntemine alternatif bir yöntem f(xa) ile f(xü)’yü bir doğruyla birleştirmektir. Bu doğrunun x-ekseni ile kesim noktası kökün düzeltilmiş bir tahminidir. Yöntem aynı zamanda doğrusal interpolasyon yöntemi olarak bilinmektedir.

Şekil 2.5. Yer değiştirme yönteminin grafiksel gösterimi

Benzer üçgenler kullanılarak.), doğrunun x ekseni ile kesim noktası tahmin edilebilir.

ür

ü

ar

a

xx)x(f

xx)x(f

−=

− (2.4)

Bu eşitlikten xr çözülürse;

)x(f)x(f)xx)(x(f

xxüa

üaüür −

−−= (2.5)

Algoritma, ikiye bölme yöntemi ile aynıdır. Sadece Adım 2’de (2.5) denklemi kullanılır.

Tablo 2.5. Yer değiştirme yöntemine ait algoritma Adım 1: f(xa) f(xü)<0 şartını sağlayan xa ve xü değerlerini tahmin et. Adım 2: Aşağıdaki eşitliği kullanarak kök için tahmini bir değer hesapla

)()())((

üa

üaüür xfxf

xxxfxx

−−

−=

Adım 3: Eğer f(xa) f(xr)<0 ise kök soldaki alt aralıktadır. xü=xr yazarak Adım 2’ ye dön. Eğer f(xa) f(xr)>0 ise kök sağdaki alt aralıktadır. xa=xr yazarak Adım 2’ ye dön. Eğer f(xa) f(xr)=0 ise kök xr ye eşittir. Hesaplamadan çıkın.

Örnek 2.3. Örnek (2.1) de incelenen denklemin kökünü yer değiştirme yöntemi ile bulunuz. Çözüm: İlk iki iterasyon aşağıda verilmiştir.

1.İter Adım 1: xa=12 xü=16 f(12) = 6.06695 f(16) = -2.26875 f(12).f(16)<0

Adım 2: 9113114268752066956

161226875216xr .).(.

)(.=

−−−−

−= f(14.91131)=-0.25428

Adım 3: f(12) f(14.91131)<0 olduğundan kök sol alt aralıktadır. xü=14.91131 2. İter Adım 2: xa=12 xü=14.91131 7942314xr .= f(14.79423) =-0.02732

Adım 3: f(12) f(14.79423)<0 olduğundan kök sol alt aralıktadır. xü=14.79423

26

Örnek 2.4. İkiye bölmenin yer değiştirmenin göre üstün olduğu bir örnek 1x)x(f 10 −=

denkleminin x=0 ile x=1.3 aralığındaki köklerini belirleyin.

Çözüm:

Tablo 2.6. Örnek 2.4 için iki kapalı yöntemin karşılaştırılması

Aralığı ikiye bölme yöntemi Yer değiştirme yöntemi

İt.No xa xü xr εa % xa xü xr εa % 1 0 1.3 0.65

0 1.3 0.09430

2 0.65 1.3 0.975 33.3 0.09430 1.3 0.18176 48.1 3 0.975 1.3 1.1375 14.3 0.18176 1.3 0.26287 30.9 4 0.975 1.1375 1.05625 7.7 0.26287 1.3 0.33811 22.3 5 0.975 1.05625 1.015625 4.0 0.33811 1.3 0.40788 17.1

Her iki yönteme göre elde edilen sonuçlar Tablo 2.6.’da verilmiştir. İkiye bölme yönteminde beş iterasyon sonunda bağıl hata %4’e düşerken yer değiştirme yönteminde bu değer %17.1 olmuştur. Bu sonuç fonksiyonun şekli ile ilgilidir. Bu örnek, köklerin yerlerinin belirlenmesinde kapalı yöntemlerle ilgili genellemeler yapmanın mümkün olmadığını göstermektedir. Örnek 2.5. Şekil 2.6., f(x)=x4+3x-4 denkleminin [0,3] aralığındaki kökünü bulmak için yer değiştirme yöntemiyle yapılan işlemleri grafik olarak göstermektedir. Grafik yer değiştirme yönteminin çok önemli bir zayıf tarafını da göstermektedir: tek yönlülüğünü. Yani, iterasyonlar devam ederken, kıskaç noktalarından birisi sabit kalacaktır. Bu ise aralığın küçülmeyeceğini, ancak sabit bir değere yakınsayacağını gösterir.

Şekil 2.6. f(x)=x4+3x-4 fonksiyonu için yer değiştirme yönteminin yavaş yakınsaması

27

2.3. AÇIK YÖNTEMLER Kapalı yöntemlerde kök alt ve üst değerle kıskaca alındığı için bu yöntemler yakınsak yöntemlerdir ve mutlaka köke yaklaşılır fakat alt ve üst değerleri tahmin etme zorluğu söz konusudur. Bu bölümde anlatılacak olan açık yöntemlerde ise bir aralık (xa ve xü) tahmin etmeye gerek yoktur. İterasyona tahmini bir kök değeri ile başlanır. Fakat fonksiyonun tipine ve başlangıç değerine bağlı olarak bazen ıraksamaları bu yöntemlerin en büyük dezavantajlarıdır. 2.3.1. Basit İterasyon Yöntemi

Tablo 2.7. Basit iterasyon yöntemine ait algoritma Adım 1 : Köke yakın bir x0 başlangıç değeri tahmin et Adım 2 : f(x)’ nu sıfıra eşitleyerek x = g(x) formunda yeniden düzenle Adım 3 : )( i1i xgx =+ denkleminden kök için yeni bir değer hesapla

Adım 4 : s1i

i1ia 100

xxx εε ≤×

−=

+

+ ise dur, değilse xi = xi+1 alarak Adım 3’e git.

Yakınsama kriteri: 1223 xxxx veya1xg −<−≤′ )( ise yöntem yakınsar.

Şekil 2.7. Basit iterasyonun (a) ve (b) yakınsamasının ve (c) ve (d) ıraksamasının grafiksel gösterimi: (a) ve (b) grafiklerine monoton şekiller. (c) ve (d) grafiklerine ise salınan veya spiral şekiller denir. Yakınsama g'(x) < 1 şartında gerçekleşir.

28

Örnek 2.6: Basit iterasyon yöntemini kullanarak x0=0 başlangıç tahmini ile xexf x −= −)( fonksiyonunun köklerinin yerini belirleyiniz (gerçek kök: 0.56714329).

1.İter Adım 1: xa=0

Adım 2: )xexp(x −= Adım 3: )exp( 01 xx −= 1x1 =

Adım 4: 100%100%x

xx

1

01a =×

−=ε

2. İter Adım 3: )xexp(x 12 −= 367879.0)1exp(x 2 =−=

Adım 4: 8.171%100%x

xx

2

12a =×

−=ε

3. İter Adım 3: )xexp(x 23 −= 692201.0)367879.0exp(x3 =−=

Adım 4: 9.46%100%x

xx

3

23a =×

−=ε

Tablo 2.8 Örnek 2.6. için iterasyonlar

i xi εa (%) εt (%) 0 0 -------- 100.0 1 1.000000 100.0 76.3 2 0.367879 171.8 35.1 3 0.692201 46.9 22.1 4 0.500473 38.3 11.8

…. …. …. …. 9 0.571143 1.93 0.705

10 0.564879 1.11 0.399

2.3.2. Newton-Raphson Yöntemi

Şekil 2.8 :Newton-Raphson yönteminin grafiksel gösterimi. x i+1 kökünü tahmin edebilmek için x i 'de fonksiyonun teğeti [yani f'(x)] x eksenini kesecek şekilde uzatılmaktadır. Teğetin x eksenini kestiği nokta kök için yeni değerdir.

29

Şekil 2.8’de görüldüğü gibi, xi noktasındaki türev aşağıdaki şekilde hesaplanır.

( )1ii

ii xx

0)x(fxf+−−

=′ (2.6)

Bu ifade düzenlenirse,

)x(f)x(fxx

i

ii1i ′−=+

(2.7) Newton-Raphson formülü olarak adlandırılan formül elde edilir.

Tablo 2.9. Newton-Raphson yöntemine ait algoritma Adım 1 : Köke yakın bir x0 başlangıç değeri tahmin et. Adım 2 : ( )ixf ve ( )ixf ′ değerlerini hesapla.

Adım 3 : )x(f)x(fxx

i

ii1i ′−=+ denkleminden kök için yeni bir değer hesapla.

Adım 4 : s1i

i1ia 100

xxx

ε≤×−

=ε+

+ ise dur, değilse xi = xi+1 alarak Adım 2’e git.

Örnek 2.7: Newton-Raphson yöntemini kullanarak x0=0 başlangıç tahmini ile

xe)x(f x −= − fonksiyonunun köklerinin yerini belirleyiniz (gerçek kök: 0.56714329). Çözüm :

1.İter Adım 1: Adım 2: 1x)xexp()x(f 000 =−−= 21)xexp()x(f 00 −=−−−=′

Adım 3: 5.0)x(f)x(f

xx0

001 =

′−= Adım 4: 100%100%

5.005.0

a =×−

2. İter Adım 2: 10653066.0x)xexp()x(f 111 =−−= 6-1.6065306)x(f 1 =′ Adım 3: 56631100.0

60653066.110653066.05.0x 2 =

−−=

Adım 4: 70929098.11%100%56631100.0

5.056631100.0a =×

−=ε

Tablo 2.10. Örnek 2.7 için iterasyonlar i xi f(xi) f’(xi) xi+1 %εa 0 0.00000000 1.00000000 -2.00000000 0.50000000 100.00000000 1 0.50000000 0.10653066 -1.60653066 0.56631100 100.00000000 2 0.56631100 0.00130451 -1.56761551 0.56714317 11.70929098 3 0.56714317 0.00000020 -1.56714336 0.56714329 0.14672871 4 0.56714329 0.00000000 -1.56714329 0.56714329 0.00002211

30

Tablo 2.11. Newton-Raphson algoritmasına göre yazılmış MATLAB programı clc format long % Newton_Raphson yöntemi ile lineer olmayan cebrik denklem çözümü epsilons=10^(-6) ;% kabul edilen sapma değeri k=0; x0=0; %sayaç, x0 başlangıç için kök tahmini syms x f=exp(-x)-x; %fonksiyon tanımlandı fu=diff(f,x); % fonksiyonun türevi bulundu epsilona=10; % değeri önemli olmayan bir epsilona tahmini while epsilona>epsilons

fonksiyon=subs(f,x,x0); turev=subs(fu,x,x0); yeni=x0-fonksiyon/turev; k=k+1; a(k,1)=k-1; a(k,2)=x0; a(k,3)=fonksiyon; a(k,4)=turev;a(k,5)=yeni;a(k,6)=epsilona; eski=x0; x0=yeni; epsilona=abs((yeni-eski)/yeni)*100;

end disp(a) xlswrite('output',a) % output isimli excel dosyasına a matrisini yazar. Newton-Raphson yöntemi çoğu zaman etkili olmasına karşın, zayıf kaldığı durumlar da vardır. Örnek 2.8: Newton-Raphson ile yavaş yakınsayan bir fonksiyon örneği Newton-Raphson yöntemini kullanarak x0=0.5 başlangıç tahmini ile 1xxf 10 −=)( fonksiyonunun pozitif kökünü belirleyiniz. Çözüm : Bu örnek için Newton-Raphson formülü

9i

10i

i1i x101xxx −

−=+

şeklindedir ve aşağıdaki tablodaki değerleri bulmak için kullanılabilir. Burada kötü bir ilk tahminden sonra teknik, gerçek kök olan 1’e yakınsamaktadır ancak çok yavaştır.

Tablo 2.12. Örnek 2.8 için iterasyonlar İterasyon, i 0 1 2 3 4 5 … ∞ xi 0.5 51.65 46.485 41.8365 37.62285 33.887565 1.0000000 Fonksiyonun doğasından kaynaklanan yavaş yakınsama dışında Şekil 2.9.’da gösterildiği gibi başka güçlükler de çıkabilir. Şekil 2.9a kök civarında dönüm noktası olması durumunu [ f′′(x)=0 ] göstermektedir. Dikkat edilirse x0’da başlayan

31

iterasyonlar kökten gittikçe uzaklaşmaktadır. Şekil 2.9b, Newton-Raphson tekniğinin yerel maksimumlar veya minimumlar civarında salınma eğilimini göstermektedir. Şekil 2.9c, köke yakın bir ilk tahminin nasıl birkaç kök ötede bir noktaya atlayabileceğini göstermektedir. İlgilenilen aralığın dışına çıkma eğilimi, sıfıra yakın eğimlerden kaynaklanmaktadır. Açıkçası sıfır eğim [ f′(x)=0 ] tam bir felakettir, çünkü Newton-Raphson formülünde sıfıra bölmeye neden olur. Grafik olarak çözüm yatay olarak gider ve x-eksenini hiçbir zaman kesmez. Bu nedenle Newton-Raphson yöntemi için genel bir yakınsama kriteri yoktur. Tek çözüm köke yeterince yakın bir ilk tahmin yapmaktır. İyi tahminler genellikle fiziksel problemin bilinmesi veya çözümün davranışı hakkında bilgi veren grafikler gibi araçlarla yakalanır.

Şekil 2.9. Newton-Raphson yönteminin kötü yakınsaması ile ilgili örnekler

32

2.3.3. Sekant Yöntemi f(x) fonksiyonunun herhangi bir x noktasındaki türevi aşağıdaki şekilde tanımlanır.

)(

)()()( lim x

xfxxfxf

0xi ∆

−∆+=′

→∆ (2.8)

Eğer δ küçük ancak sonlu bir değişim olarak alınırsa, fonksiyonun xi noktasındaki türevi yaklaşık olarak aşağıdaki şekilde hesaplanabilir.

)(

)()()(

i

iiii x

xfxxfxf

δ−δ+

≅′ (2.9)

Burada δxi sıfıra ne kadar yakın alınırsa (2.9) denklemi ile verilen sayısal türev de gerçek türeve (analitik türeve) o kadar yakın olur. Denklem (2.9), Tablo 2.9’ da verilen Newton-Raphson algoritmasındaki Adım 3’te yerine yazılırsa, Sekant Yöntemi Algoritması elde edilmiş olur.

Tablo 2.10. Sekant yöntemine ait algoritma Adım 1 : Köke yakın bir x0 başlangıç değeri tahmin et. Adım 2 : ( )ixf ve ( ) ii xxf δ+ değerlerini hesapla.

Adım 3 : )()(

)(

iii

iii1i xfxxf

xfxxx

−δ+δ−=+ kök için yeni bir değer hesapla.

Adım 4 : s1i

i1ia 100

xxx

ε≤×−

=ε+

+ ise dur, değilse xi = xi+1 alarak Adım 2’e git.

Örnek 2.9. Sekant yöntemini kullanarak x0=1.0 başlangıç tahmini ve δ=0.01 değeri ile

xexf x −= −)( fonksiyonunun köklerini bulunuz. (gerçek kök: 0.56714329). Çözüm : 1.İter 632120xf1x 00 .)( −==

6456780xxf011xx 000 .)(. −=δ+=δ+ 5372630

6321206457806321200101x1 .

).(.).(.

=−−−

−×−= 35t .%=ε

2. İter 0470830xf5372630x 11 .)(. ==

0385790xxf5426350xx 1111 .)(. =δ+=δ+ 567010

04708300385790047083000537305372630x2 ...

).(.. =−×

−= 02360t .%=ε

δ için düzgün bir değerin seçimi otomatik değildir. δ çok küçükse yuvarlatma hataları büyüyeceği için yöntem batağa saplanır. δ çok büyükse yöntem verimsizleşir hatta ıraksayabilir. Ancak δ doğru seçilirse yöntem başarılı olur.

33

2.4. KATLI KÖKLER Katlı bir kök, fonksiyonun x eksenine teğet olduğu noktaya karşılık gelir. Örneğin f(x) = (x-3)(x-1)(x-1) (2.10) fonksiyonunun çift katlı kökü vardır, çünkü x'in bir değeri (2.10) eşitliğinde iki terimi sıfır yapmaktadır. Grafik olarak eğri çift katlı kökün bulunduğu noktada x eksenine teğet geçer. Şekil 2.10a 'yı x = 1 noktasında inceleyin. Dikkat ederseniz fonksiyon eksene dokunur ancak kesmez. Üç katlı kök, tek bir x değerinin, f ( x ) = ( x - 3 ) ( x -1 ) ( x - 1 ) ( x - ) denkleminde veya denklemin üç terimini birden sıfır yaptığı durumlarda söz konusudur. Dikkat ederseniz, grafik gösterimden de görüldüğü gibi fonksiyon kök değerinde yine eksene teğettir. Ancak bu kez aynı zamanda ekseni keser. Genel olarak tek sayılı kökler ekseni keser, çift sayılılar kesmez. Örneğin. Şekil 2.10c 'deki dört katlı kök ekseni kesmez.

Katlı kökler şu ana kadar ele alınan sayısal yöntemlerin çoğunda problem doğurur:

• Çift sayılı katlı köklerde fonksiyonun işaret değiştirmemesi gerçeği, yukarıda tartışılan güvenilir kapalı yöntemlerin kullanımını engeller. Böylece, ele alınan yöntemler içinde sadece ıraksama tehlikesi olan açık yöntemlerle sınırlı kalırız.

• Bir başka olası problem, sadece f(x)'in değil, aynı zamanda f΄(x)'in de sıfır olmasıdır. Bu durum formüllerinde paydada türevin (veya tahmininin) kullanıldığı hem Newton-Raphson hem de Sekant yöntemlerinde sorun yaratır. Sonuç yakınsayarak köke çok yaklaştığı zaman sıfıra bölme meydana gelebilir. Bu sorunları aşmanın basit bir yolu, teorik olarak da gösterilebileceği gibi f(x) 'in her zaman f΄(x) 'den daha önce sıfır olacağı gerçeğine dayanır. Bu nedenle eğer programa f (x) 'in sıfır olup olmadığıyla ilgili bir kontrol ilave edilirse f'(x) sıfır olmadan hesaplama durdurulabilir.

Şekil 2.10. x eksenine teğet olan katlı kök örnekleri.

34

2.5. MATLAB’DA KÖK BELİRLEME VE POLİNOM İŞLEMLERİYLE İLGİLİ YAPISAL FONKSİYONLAR Tablo 2.11. MATLAB’da kök bulma ve polinom işlemleri için sık kullanılan bazı fonksiyonlar Fonksiyon Tanım fzero Tek değişkenli fonksiyonun kökü roots Polinom köklerini bulma poly Verilen köklere sahip polinomu oluşturma polyval Polinom hesaplamak polyder Polinomun türevi conv Polinomların çarpımı deconv Polinomların bölünmesi 2.5.1. fzero fonksiyonu fzero fonksiyonu tek bir fonksiyonun kökünü bulmak için tasarlanmıştır. Yazılışının kısa bir gösterimi, fzero(f, x0, options) şeklindedir. Burada f analiz edilen fonksiyon, x0 ilk tahmin ve options (seçenekler) optimizasyon parametreleridir. Bunlar optimset fonksiyonu kullanılarak değiştirilebilir. Eğer options dikkate alınmazsa varsayılan değerler kullanılır. Bir veya iki başlangıç tahmini kullanılabilir. İki tahmin kullanılmışsa kökün kıskaç içine alındığı varsayılır. Tablo 2.12’de iki katlı ve üç katlı kökleri sırasıyla 1 ve 3 olan polinomun köklerinin fzero fonksiyonuyla bulunuşu gösterilmektedir. Tablodan fzero fonksiyonunun çift katlı kök olan 1 değerini bulamadığı görülmektedir.

Tablo 2.12 fzero fonksiyonunun kullanımı

35

Örnek 2.10.

1xxf 10 −=)( fonksiyonunun köklerini fzero fonksiyonunu kullanarak bulunuz.

-1 -0.5 0 0.5 1

-1

-0.5

0

0.5

1

1.5

2

x

x10-1

Şekil 2.11 x10-1 fonksiyonunun kökleri

Çözüm: Fonksiyonun iki reel kökünün 1 ve -1 olduğu Şekil 2.11’den görülmektedir. Pozitif kökü bulmak için 0 ve 1.3 ilk tahminlerini kullanabiliriz.

>> x0= [0 1.3] >> x= fzero (inline (‘x^10-1’), x0) x =

1 Negatif kökü bulmak için -1.3 ve 0 ilk tahminlerini kullanabiliriz.

>> x0= [-1.3 0] >> x= fzero (inline (‘x^10-1’), x0) x = -1

Tek bir ilk tahmin de verebiliriz. İlginç bir durum her iki köke de aynı uzaklıkta olan 0 değerini ilk tahmin değeri olarak kullanmaktır.

>> x0= 0 >> x= fzero (inline (‘x^10-1’), x0) x = -1

Bu durumda algoritma negatif kökü bulmaktadır. Çözüm ilerledikçe gerçek iterasyonları görüntüleyerek optimset’in nasıl kullanıldığı Tablo 2.13’de gösterilmiştir.

36

Tablo 2.13 fzero ve optimset fonksiyonları

Tablo 2.13’deki sonuçlar, tek bir tahmin verildiğinde fzero tarafından kullanılan stratejileri göstermektedir. Önce işaret değişikliği buluncaya kadar tahminin civarında arama yapar. Daha sonra ikiye bölme (bisection) ve interpolasyon bileşimi işlemler yaparak köke yaklaşır. 2.5.2. Polinom işlemleri için MATLAB fonksiyonları MATLAB’ın polinomlarla işlem yapılması ve köklerin belirlenmesinde nasıl kullanıldığını üç reel kökü (0.5, -1.0, ve 2) ve bir çift sanal kökü (-1 ±0.5i) olan 251x8753x1252x752x53xxf 2345 .....)( +−++−= polinomunu kullanarak inceleyelim. Bu polinom MATLAB’a katsayıları bir vektör olarak saklanarak tanıtılır.

37

-1.5 -1 -0.5 0 0.5 1 1.5 2 2.5-10

-8

-6

-4

-2

0

2

4

6

8

10

x

x5-7/2 x4+11/4 x3+17/8 x2-31/8 x+5/4

Şekil 2. 11. 251x8753x1252x752x53xxf 2345 .....)( +−++−= polinomunun grafiği

>> a= [1 -3.5 2.75 2.125 -3.875 1.25];

x=1 noktasında polinomun değeri: >> polyval (a, 1) ans = -0.2500

Polinomun türevi:

>> polyder (a) ans = 5.0000 -14.0000 8.2500 4.2500 -3.8750

Polinom oluşturma: f polinomunun iki orijinal köküyle 0.5 ve -1.0 aynı köklere sahip ikinci derece polinom oluşturalım.

>> b=[0.5 -1]; >> c=poly(b) c = 1.0000 0.5000 -0.5000

38

Polinomların bölünmesi: a polinomu c polinomuna bölünebilir.

>> [d e]= deconv (a, c) d = 1.0000 -4.0000 5.2500 -2.5000 e = 0 0 0 0 0 0 Burada d bölüm e ise kalanı göstermektedir. Polinomun kökleri:

>> roots (d) ans = 2.0000 1.0000 + 0.5000i 1.0000 - 0.5000i

Polinomların çarpımı:

>> conv (d,c) ans = 1.0000 -3.5000 2.7500 2.1250 -3.8750 1.2500

Orijinal polinomun kökleri:

>> r=roots (a) r = 2.0000 -1.0000 1.0000 + 0.5000i 1.0000 - 0.5000i 0.5000

39

BÖLÜM 3

CEBİRSEL DENKLEM SİSTEMLERİNİN ÇÖZÜMÜ 3.1. GİRİŞ İyi bilindiği gibi mühendisliğin ya da matematiksel fiziğin problemlerini simgeleyen diferansiyel ve/veya integral denklemlerin çözümleri nadiren kapalı biçimlerde ifade edilebilmektedir. Büyük çoğunlukla bu denklemlerin çözümleri ancak sayısal analiz yöntemleri ile bulunabilmektedir ve bu yöntemlerin pek çoğunun uygulanması, bu işlem sırasında ortaya çıkabilecek, cebirsel denklem sistemlerinin başarılı bir şekilde çözülebilmesine bağlıdır. Öte yandan Yöneylem Araştırması, Lojistik, Ekonometri, Optimizasyon ve İstatistik Analiz gibi birçok bilim dalında incelenen problemlerin önemli bir bölümünün doğrudan cebirsel denklem sistemleri ile temsil edilmesi mümkündür. Tabiatıyla doğal ya da sosyal olayların sayılarla temsil edildiği bu denklem sistemleri her zaman doğrusal (lineer) değildir. Ancak doğrusal sistemleri çözmede başarılı yöntemler yardımıyla lineer olmayan sistemlerin de, birçok halde, çözümlenebileceği gösterilmiştir. İkinci bölümde tek bir denklemi, f(x)=0’ı sağlayan x değerini belirledik. Şimdi,

f1(x1, x2, … , xn )= 0

(3.1) f2(x1, x2, … , xn )= 0

.

. fn(x1, x2, … , xn )= 0

denklem sistemini sağlayan x1, x2, … , xn değerlerinin belirlenmesi durumuyla ilgileneceğiz. Bu tip denklemler doğrusal olabilir ya da olmayabilir. Bu bölümde önce doğrusal, daha sonra doğrusal olmayan denklem sistemlerini inceleyeceğiz. 3.2. DOĞRUSAL CEBİRSEL DENKLEM SİSTEMLERİ Bu alt bölümde inceleyeceğimiz n adet denklemden oluşan doğrusal cebirsel denklem sistemi, en genel halde aşağıdaki şekilde ifade edilebilir.

a11 x1 + a12 x2 + …+ a1n xn = b1

a21 x1 + a22 x2 + …+ a2n xn = b2

. . . (3.2)

. . . an1 x1 + an2 x2 + …+ ann xn = bn

40

Bu bölümün geri kalan kısmında çözüm yöntemlerini inceleyeceğimiz bu denklem sisteminde aij ve bi değerlerinin bilindiğini kabul edeceğiz ve xi değerlerini bulmaya çalışacağız. Bu denklem sisteminin çözümü için çok sayıda yöntem bulunmaktadır. Bu yöntemlere örnek olarak Gauss eleme yöntemi, Gauss-Jordan indirgeme yöntemi, Jacobi iterasyonu, Gauss-Siedel iterasyonu yöntemleri verilebilir. Burada direkt yöntemler içinde anılan yalnız Gauss eleme yöntemi ile iteratif yöntemlerden birisi olan Gauss-Siedel iterasyonu tanıtılacaktır. Ayrıca, yukarıdaki yöntemlerden yararlanılarak yazılan MATLAB’in yapısal fonksiyonları kullanılarak cebirsel lineer denklem takımlarının nasıl çözüldüğü de bu bölümün konularından biri olacaktır. 3.2.1. Doğrusal Cebirsel Denklem Sistemlerinin Matris Şeklinde İfade Edilmesi Matrislerin, eşzamanlı doğrusal denklemleri ifade etmek için kısa ve özlü bir gösterim şekli olduğu açıktır. Örneğin, (3.2) eşitlikleri [A] {X} = {B} (3.3) şeklinde ifade edilebilir. Burada [A], n’ye n kare bir katsayılar matrisidir:

[ ]

=

nn2n1n

n22221

n11211

a...aa............

a...aaa...aa

A (3.4)

{B}, sabitlerden oluşan n’ye 1 bir sütun vektörüdür.

{ } ]bbb[B n21 =′ (3.5) {X} ise, bilinmeyenlerden oluşan n’ye 1 bir sütun vektörüdür.

{ } ]xxx[X n21 =′ (3.6) Matris cebri kullanarak bir çözüm elde etmenim biçimsel bir yolu denklemin her iki tarafını [A] matrisinin tersi (inversi) ile çarpmaktır. [A]-1 [A] {X} = [A]-1 {B} (3.7) [A]-1 [A] çarpımı birim matrise eşit olduğundan, denklem {X} = [A]-1 {B} (3.8)

41

şeklini alır. Böylece denklem {X} için çözülmüş olur. Uygulanan yöntemin en uygun çözüm yöntemi olmadığını söylemek mümkündür. Bu nedenle sayısal algoritmalarda başka yaklaşımlar kullanılır. 3.2.2 Gauss Eleme (Eliminasyon) Yöntemi Bu yöntemin ana fikri şu şekilde özetlenebilir. ‘Sistemdeki bilinmeyenlerin sayısı tek oluncaya kadar, her defasında bir denklem kullanılarak yok edilmesi (katsayısının sıfırlanması) ve son denklemden bulduğumuz değişkenin değerinin geri doğru yerine koyarak bütün bilinmeyenlerin hesaplanması.’ Şimdi yöntemi daha iyi açıklayabilmek için aşağıdaki doğrusal cebirsel denklem sistemini göz önüne alalım. (3.9a) (3.9b) (3.9c) Bu denklem sisteminin çözümü birincisi ileriye doğru eleme ve ikincisi geriye doğru yerine koyarak çözüm olmak üzere iki aşamadan oluşmaktadır. Bilinmeyenlerin ileriye doğru elenmesi: İlk adım ilk bilinmeyen x1’i ikinci denklemden n. denkleme kadar elemektir. Bunu yapmak için (3.9a) eşitliğini a21/a11 ile çarpalım ve (3.9b) eşitliğinden çıkaralım. (3.10) veya (3.11) elde edilir. Burada üs işareti elemanların orijinal değerlerinden değiştirilmiş olduklarını ifade etmektedir. Prosedür diğer denklemler için tekrarlanarak aşağıdaki değiştirilmiş sistem elde edilir. (3.12a) (3.12b) (3.12c) Yukarıdaki adımlarda (3.9a) eşitliğine pivot denklem a11’ e pivot katsayısı denir. Şimdi ikinci denklemi sırasıyla a′32/a′22, a′42/a′22 ,.. ile çarparak sırasıyla 3., 4. ,... denklemlerden çıkartsak x2’nin katsayısı ikinci denklem hariç, diğer bütün denklemlerde sıfırlanacaktır. Yani sistemin yeni biçimi şöyle olacaktır. (3.13a) (3.13b) (3.13c)

nnnn22n

2nn2222

1nn1212111

bxa...xa

bxa...xa bxa...xaxa

′=′++′

′=′++′=+++

nnnn33n

3nn3333

2nn2323222

1nn1313212111

bxaxa

bxaxabxaxaxabxaxaxaxa

′′=′′++′′

′′=′′++′′′=′++′+′

=++++

nnnn22n11n

2nn2222121

1nn1212111

bxa...xaxa

bxa...xaxabxa...xaxa

=+++

=+++=+++

111

212nn1

11

21n2212

11

2122111

11

2121 b

aa

bxaaa

a...xaaa

axaaa

a −=

−++

−+

2nn2222 bxa...xa ′=′++′

42

(3.13d) Bu işlem, son denkleme gelinceye kadar, sırayla bütün sisteme uygulanırsa, sonuçta denklem sistemi şu biçimi alacaktır. (3.14a) (3.14b) (3.14c) (3.14d) Geriye Doğru Yerine Koyma: (3.14d) eşitliğinden şimdi xn çözülebilir. (3.15) Bu sonuç, (n-1). denklemde geriye doğru yerine yazılarak xn-1 için çözülebilir. Geriye kalan x’leri hesaplamak için tekrarlanan prosedür, aşağıdaki formülle ifade edilebilir. (3.16) Örnek 3.1. Gauss eleme yöntemini kullanarak, aşağıdaki denklem sistemini çözün.

Hesaplarda altı anlamlı basamak kullanın. 3x1 -0.1x2 -0.2 x3 = 7.85

0.1x1 +7x2 -0. 3x3 =- 19.3 0.3x1 -0.2x2 +10 x3 = 71.4

Çözüm: Birinci denklem 0.1/3 ile çarpılır ve ikinci denklemden çıkarılırsa 7.00333x2 -0.293333x3 = -19.5617 Birinci denklem 0.3/3 ile çarpılır ve üçüncü denklemden çıkarılırsa denklem sistemi aşağıdaki şekilde elde edilir.

3.00000x1 -0.100000x2 -0.200000x3 = 7.85 7.00333x2 -0.293333x3 = -19.5617 - 0.190000x2 +10.0200x3 = 70.6150

Şimdi üçüncü denklemden x2 elenirse,

3.00000x1 -0.100000x2 -0.200000x3 = 7.85

)1n(nn

)1n(nn

3nn3333

2nn2323222

1nn1313212111

bxa

bxaxabxaxaxabxaxaxaxa

−− =

′′=′′++′′′=′++′+′

=++++

abx )1n(

nn

)1n(n

n −

=

için 12,,2,-n1,-ni a

xabx )1i(

ii

n

1ijj

)1i(ij

)1i(i

i =−

=−+=

−− ∑

43

7.00333x2 -0.293333x3 = -19.5617 10.0120x3 = 70.0843 Geriye doğru yerine koyarak sonuçlar elde edilir.

x3 = 70.0843/10.0120=7.00003 x2 = -2.50000 x1 = 3.00000 3.2.2.1 Eleme yöntemlerinin tuzakları

2x2 -0.2 x3 = 7 0.1x1 +7x2 -0. 3x3 = 19 0.3x1 -0.2x2 +10 x3 = 71

Gauss eleme yöntemini kullanarak yukarıdaki denklem sistemini çözmek istersek, birinci sıranın normalizasyonunda a11=0’a bölmek gerekir. Katsayılardan birinin sıfıra yakın olması halinde de sorun yaşanır. Bu sorunları kısmen çözebilmek için pivotlama tekniği geliştirilmiştir. Ayrıntılı bilgi literatürde bulanmaktadır. Örnek 3.1’deki çözüm gerçek yanıta yakın da olsa, x3 için bulduğumuz sonuçta küçük bir fark vardı. Bağıl hata cinsinden yüzde 0.00043 olan bu fark, hesaplar sırasında altı anlamlı basamak kullanmamızdan kaynaklanmıştı. Büyük sayıda denklem çözüleceği zaman, yuvarlatma hataları problemi önem kazanır. Bunun nedeni, her sonucun bir önceki sonuca bağlı olması dolayısıyla hatanın büyümesidir. pratikte 100 veya daha fazla denklem söz konusuysa yuvarlatma hatalarının önemli olabileceği hatırlanmalıdır. Bu durumda daha fazla anlamlı basamak kullanmak çözüm olabilir.

3.2.3 Gauss-Siedel İterasyonu Gauss-Siedel yöntemi en çok kullanılan iteratif yöntemdir. n denklemli bir sistem verildiğini varsayalım. [A] {X} = {B} Basit olması bakımından kendimizi 3’e 3 bir denklem sistemiyle sınırlayalım. Eğer köşegen elemanlarının hepsi sıfırdan farklıysa, birinci denklemden x1, ikinciden x2 ve üçüncüden x3 çözülerek

(3.17a)

(3.17b) (3.17c) elde edilir. Bu aşamada x’ler için tahminlerde bulunarak çözüm sürecine başlanır. İlk tahmine bulunmanın kolay bir yolu bütün değerleri sıfır seçmektir. Sıfırlar (3.17a) eşitliğinde yerine konularak yeni bir x1 değeri bulunabilir. x1=b1/a11. Daha sonra yeni bulunan x1 değerini x3’ün sıfır olan ilk tahmini ile birlikte (3.17b) eşitliğinde yerine koyarak x2 için bir değer hesaplanır. Bu süreç (3.17c) denklemi için tekrarlanarak x3 için yeni bir tahmin değeri elde edilir. En sonunda tekrar ilk

11

31321211 a

xaxabx

−−=

22

32312122 a

xaxabx

−−=

33

23213133 a

xaxabx

−−=

44

denkleme geri dönerek bütün prosedürü çözüm gerçek değere yakınsayıncaya kadar yineleriz. Yakınsama, (3.18) kriteri kullanılarak bütün i’ler için kontrol edilebilir. Burada, j ve j-1 şimdiki ve bir önceki iterasyonlardır. Örnek 3.2. Gauss-Siedel yöntemini kullanarak Örnek 3.1’deki denklem sisteminin çözümünü bulunuz. (Doğru çözüm x1=3, x2=-2.5, x3=7 şeklindedir.) Çözüm:

3x1 -0.1x2 -0.2 x3 = 7.85 0.1x1 +7x2 -0. 3x3 = -19.3 0.3x1 -0.2x2 +10 x3 = 71.4

x2 ve x3 sıfır varsayılarak birinci denklemden x1 hesaplanır. Bu değer x3=0 varsayımı ile birlikte ikinci denkleme taşınırsa x2 hesaplanır. Hesaplanan x1 ve x3 değerleri üçüncü eşitlikte yerine konularak ilk iterasyon tamamlanmış olur. İkinci iterasyonda aynı süreç tekrarlanarak aşağıdaki değerler hesaplanır.

sji

1ji

ji

a,i 100%x

xx ε<

−=ε

3x2.0x1.085.7

x 321

+−=

7x3.0x1.03.19

x 312

+−−=

10x2.0x3.04.71x 21

3+−

=

616667.2385.7x 1 ==

794524.27

)616667.2(1.03.19x 2 −=−−

=

005610.710

)794524.2(2.0)616667.2(3.04.71x 3 =+−

=

015.0%499625.210

)005610.7(3.0)990557.2(1.03.19x t2 =ε−=+−−

=

31.0%990557.23

)005610.7(2.0)794524.2(1.085.7x t1 =ε=+−+

=

45

Hesaplanan gerçek yüzde hata değerlerinden yöntemin yakınsadığı anlaşılmaktadır. Yanıtı iyileştirmek için ek iterasyonlar yapılabilir. Ancak gerçek bir problemde yanıtı önceden bilemeyiz. Dolayısıyla (3.18) eşitliği hatayı tahmin etmemize olanak sağlar. Örneğin x1 için: x2 ve x3 için hata tahminleri, ve şeklindedir. İstenen tolerans değerleri sağlanıncaya kadar iterasyona devam edilerek çözüm elde edilir. Yuvarlatma hatalarını önlemenin yanında, Gauss-Siedel yönteminin başka avantajları da vardır. Örneğin, söz konusu matris çok büyük ve seyrekse (yani elemanlarının çoğu sıfırsa) eleme yöntemleri sıfırları saklayarak bilgisayar belleklerini boşuna doldururlar. 3.2.4 MATLAB fonksiyonları ile doğrusal cebirsel denklem sistemlerinin çözümü [A]{X}={B} doğrusal cebirsel denklem sistemi verilsin. Denklem sistemini iki farklı yolla çözmek mümkündür. En doğrudan ve en verimli yol ters eğik çizgi veya sola bölme kullanmaktır.

>> x= A\B Alternatif olarak, [A] matrisinin tersini hesaplayarak bu denklem sistemini çözebiliriz. Denklem sisteminin her iki tarafı A matrisinin tersi ile çarpılırsa çözüm elde edilir. [A] -1 [A] {X} = [A]-1{B} ⇒ {X} = [A]-1{B}

MATLAB ile yukarıdaki denklem sistemi aşağıdaki şekilde çözülür.

>> x= inv(A)*B

Bu yaklaşım önce matrisin tersini bulur sonra çarpma işlemini yapar. Bu nedenle ters eğik çizgi yaklaşımına göre daha fazla zaman harcar. Örnek 3.3.

0042.0%000291.710

)499625.2(2.0)990557.2(3.04.71x t3 =ε=+−

=

5.12%100%990557.2

616667.2990557.2 a,1 =−

8.11% a,2 =ε 076.0% a,3 =ε

46

=

350000.2166667.2833333.1

xxx

5/34/314/23/213/12/11

3

2

1

denklem sistemini MATLAB fonksiyonları ile çözünüz.

Çözüm: >> A=[1 1/2 1/3; 1 2/3 2/4; 1 3/4 3/5 ] A = 1.0000 0.5000 0.3333 1.0000 0.6667 0.5000 1.0000 0.7500 0.6000 >> B=[1.833333; 2.166667; 2.350000] B = 1.8333 2.1667 2.3500 >> x=A\B x = 1.0000 1.0000 1.0000 >> x=inv(A)*B x = 1.0000 1.0000 1.0000 3.3. DOĞRUSAL OLMAYAN CEBİRSEL DENKLEM SİSTEMLERİ Doğrusal olmayan n bilinmeyenli bir denklem takımı,

0)x,........,x,x(f..................................................................

0)x,........,x,x(f0)x,........,x,x(f

n21n

n212

n211

=

==

(3.19)

Şeklinde veya vektörel olarak 0)X(F = (3.20) Burada F vektörü f1,f2,…,fn elemanlı ve n boyutlu bir vektör, X vektörü x1,x2,…,xn elemanlı ve n boyutlu bir vektör 0 ise elemanlarının tümü sıfır olan vektördür.

47

3.3.1. Newton-Raphson Yöntemi

0)y,x(g0)y,x(f

==

(3.21)

Şeklinde lineer olmayan denklem takımı verilmiş olsun. Sistemin çözümü x=r ve y=s ve tahmin edilen çözüm x=x0 ve y=y0 olsun. Her iki fonksiyon (x0,y0) civarında Taylor serisine açılırsa, .......)yy)(y,x(f)xx)(y,x(f)y,x(f)y,x(f 000y000x00 +−+−+= (3.22) .......)yy)(y,x(g)xx)(y,x(g)y,x(g)y,x(g 000y000x00 +−+−+= (3.23) r ve s kök olduklarından fonksiyonları sağlarlar. Bu değerler (3.22) ve (3.23) denklemlerinde yerlerine yazılır ve birinci dereceden terimlerden daha yüksek dereceli terimler ihmal edilirse, 0)ys(f)xr(ff 0y0x =−+−+ (3.24) 0)ys(g)xr(gg 0y0x =−+−+ (3.25) Matris formunda düzenlenirse,

−−

=

−−

gf

ysxr

ggff

0

0

yx

yx (3.26)

cebirsel denklem takımı elde edilir.

=

yx

yx

ggff

J matrisi Jakobyen matris olarak isimlendirilir.

(3.26) denklem takımı çözülerek r ve s değerleri hesaplanır. (r,s) değerleri (x0,y0) değerlerine çok yakın oluncaya kadar iterasyona devam edilir. n denklemden oluşan non-lineer bir denklem takımı için

0)x,........,x,x(f..................................................................

0)x,........,x,x(f0)x,........,x,x(f

n21n

n212

n211

=

==

(3.27)

48

Başlangıç çözüm vektörü (x10,x20,…,xn0) ve gerçek çözüm (r,s,…,z) olmak üzere

=

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

∂∂

n

2

1

0n

20

10

n

n

2

n

1

n

n

2

2

2

1

2

n

1

2

1

1

1

f

f

f

xz

xs

xr

xf

xf

xf

xf

xf

xf

xf

xf

xf

(3.28)

Denklem sisteminin çözümünden elde edilen r,s,…,z değerleri yaklaşık kökleri verecektir. Bu denklem takımı içindeki kısmi türevlerinin değerleri (x10,x20,…,xn0) noktasında hesaplanmalıdır. Örnek 3.4.

1ye

4yxx

22

=+

=+

denklem takımının çözümünü Newton-Raphson yöntemini kullanarak bulunuz.

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-3

-2.5

-2

-1.5

-1

-0.5

0

x

1-exp(x)Kök

Şekil 3.1 Örnek 3.4’ün grafik gösterimi

Çözüm: 0ye1)y,x(g

0yx4)y,x(fx

22

=−−=

=−−=

x2fxf

x −==∂∂ y2f

yf

y −==∂∂

49

xx eg

xg

−==∂∂ 1g

yg

y −==∂∂

−−

=

−−

−−−−

)y,x(g)y,x(f

ysxr

1ey2x2

00

00

0

0x

x0=1.0 ve y0=-1.7 ile çözüme başlanırsa,

=

+−

−−

−0183.01100.0

7.1s1r

17183.24.32

Gauss-eleme ile (r,s)=(1.0042, -1.7298) bulunur. Bu yeni değerler başlangıç çözümü olarak kabul edilerek istenen yaklaşıklığa göre kök bulununcaya kadar işlemlere devam edilir. 3.3.2 MATLAB fonksiyonları ile doğrusal olmayan denklem sistemlerinin çözümü fsolve fonkiyonu ile bir doğrusal olmayan cebirsel denklem takımını çözmek mümkündür. fsolve fonksiyonu burada incelediğimiz Newton-Raphson algoritması yerine, trust-region dogleg method denilen bir algoritmayı kullanır. Çünkü, Newton_Raphson yönteminde Jakobyen matrisin tekil olması durumunda, (determinantının sıfır olması durumunda), sorunla karşılaşılır. fsolve ilk parametre olarak kökleri bulunacak olan denklem takımının m-dosya içinde kodlanmış fonksiyonunu çağırır. Çağrılan fonksiyon yardımıyla denklem değerlerini hesaplatıp köklerini arar. İkinci parametre, aramanın başlatılacağı ilk tahmin değerlerini ( x1, x2,…,xn ) içeren 1xn vektördür. fsolve fonksiyonunun temel kullanımı şu şekildedir. x=fsolve(@fonksiyon,x0) Diğer bir kullanım şekli ise aşağıdaki gibidir. x=fsolve(@fonksiyon,x0,opsiyonlar) Bu kullanımda opsiyonlar isimli parametre, denklemin kökleri aranırken ekrana yazdırılacak mesajlar ya da tolerans gibi özellikleri ayarlamak için kullanılır. Bu yapı optimset fonksiyonu ile düzenlenebilir. [x,y]=fsolve(@fonksiyon,x0,opsiyonlar) şeklindeki kullanımda ise kök değerleri yanında, fonksiyon değerleri de döndürülür.

50

Örnek 3.4. fsolve fonksiyonunun kullanımı

0x4xx

4/1xx

1xxx

322

21

23

21

23

22

21

=−+

=+

=++

denklem sisteminin çözümünü fsolve fonksiyonu ile bulunuz. Çözüm:

Tablo 3.1 fsolve fonksiyonunun kullanımı

Ana.m

x0 = [1; 1; 1]; % ilk tahmin edilen çözüm %opsiyonlar=optimset('Display','final') x=fsolve(@fonksiyon,x0)

Fonksiyon.m

function [F]=fonksiyon(x); F=[x(1)^2+x(2)^2+x(3)^2-1; x(1)^2+x(3)^2-1/4;x(1)^2+x(2)^2-4*x(3)];

Çıktı

Optimization terminated: first-order optimality is less than options.TolFun. x = 0.4408 0.8660 0.2361

51

BÖLÜM 4

EĞRİ UYDURMA 4.1. GİRİŞ Eğri uydurma için, verilerle ilgili hatanın büyüklüğüne bağlı olarak birbirinden ayrılan iki genel yaklaşım vardır. İlk yaklaşımda, verilerin önemli derecede hata veya "karmaşa" gösterdiği yerde strateji, verilerin genel eğilimini gösteren bir tek eğri türetmektir. Herhangi bir veri noktası kesin olamayacağından, her noktadan geçmek için bir çaba harcamayız. Daha doğrusu, eğri, bir grup olarak alınan noktaların genel şeklini izleyecek şekilde tasarlanır. Bu yapıdaki yaklaşımlardan biri en küçük kareler regresyonudur (Şekil 4.1a). İkinci yaklaşımda, verilerin çok hassas olarak bilindiği durumda temel yaklaşım, bu noktaların her birinden geçen bir eğri veya eğri ailesi uydurmaktır. Bu tür veriler genellikle tablolardan oluşur. Sıcaklığın bir fonksiyonu olarak suyun yoğunluğu veya gazların ısı kapasitesi buna birer örnektir. İyi bilinen ayrık noktalar arasındaki değerlerin tahmin edilmesi, interpolasyon olarak adlandırılır (Şekil 4.1b ve 4.1c).

.

Şekil 4.1 Beş veri noktasından geçen en iyi eğri için üç deneme (a) En küçük kareler (b)

doğrusal interpolasyon (c) eğrisel interpolasyon

4.1. EN KÜÇÜK KARELER REGRESYONU Verilerde önemli hatalar olduğunda, polinom interpolasyonu uygun değildir ve ara değerleri tahmin etmek için kullanıldığında tatmin edici sonuçlar vermez. Deneysel veriler genellikle bu tiptedir. Örneğin, Şekil 4.2a önemli oranda değişkenlik gösteren ve deneysel olarak türetilmiş yedi veri noktasını göstermektedir.

52

Şekil 4.2 (a) Önemli hatalar gösteren veriler (b) Veri aralığının dışında salınan polinom

(c) En küçük kareler yöntemi ile elde edilmiş tatmin edici sonuç

Şimdi, eğer altıncı dereceden bir interpolasyon polinomu bu verilere uydurulursa bu polinom bütün noktalardan geçecektir (Şekil 4.2b). Ancak, verilerdeki değişkenlik nedeniyle, eğri, aralık içinde noktalar arasında büyük oranda salınacaktır. Özellikle, x=1.5 ve x=6.5’te interpole edilmiş değerler verilerin gösterdiği aralığın iyice dışında görünmektedir. Bu gibi durumlar için çok daha uygun bir strateji, her bir noktaya uyması gerekmeksizin, verilerin genel eğilimine veya şekline uyan bir yaklaşım fonksiyonu türetmektir. Şekil 4.2c herhangi bir noktadan geçmeksizin verilerin genel eğilimini genellikle karakterize eden düz bir doğrunun nasıl kullanılabileceğini göstermektedir. Şekildeki doğruyu belirlemenin bir yolu, veri noktalan ve eğri arasındaki farklılıkları minimum yapan bir eğri türetmektir. Bu amacı gerçekleştirmek için en küçük kareler regresyonu diye adlandırılan bir teknik bu bölümde tartışılacaktır. 4.1.1. Doğrusal Regresyon En küçük kareler yaklaşımının en basit örneği bir gözlem çiftleri setine düz bir doğru uydurmaktır: (x1,y1), (x2,y2),…(xn,yn). Düz doğrunun matematiksel ifadesi: exaay 10 ++= (4.1) şeklindedir, burada a0 ve a1, sırasıyla kesme noktası ve eğimi göstermektedir, e ise gözlemler ve model arasındaki hata veya artık olup, Eşitlik 4.1’in yeniden düzenlenmesiyle şöyle ifade edilebilir: xaaye 10 −−= (4.2) Bu nedenle, hata veya artık, y' nin gerçek değeri ile (a0 + a1x) doğrusal denklemi yardımıyla tahmin edilmiş yaklaşık değeri arasındaki farktır. Verilerden en iyi doğruyu geçirmenin yolu ölçülen y ile doğrusal model ile hesaplanmış olan x arasındaki artıkların karelerinin toplamının minimum yapılmasıdır:

53

2n

1ii10i

2elmod,i

n

1iölçilen,i

n

1i

2ir )xaay()yy(eS ∑∑∑

===−−=−== (4.3)

Eşitlik 4.3'ü minimum yapan a0 ve a1 değerlerinin belirlenmesi için Eşitlik 4.3'ün her bir katsayıya göre türevi alınır ve bu türevler sıfıra eşitlenir. Gerekli ara işlemler yapılarak Eşitlik 4.3'ü minimum yapan a0 ve a1 değerleri aşağıdaki gibi ifade edilebilir: (4.4) (4.5) elde edilir, burada, sırasıyla x ve y'nin ortalamasıdır. Örnek 4.1: Tablo 4.1’ in ilk iki sütunundaki x ve y değerlerine düz bir doğru uydurun. Çözüm: Aşağıdaki büyüklükler hesaplanabilir.

Eşitlik (4.4) ve (4.5) kullanılarak a0 ve a1 değerleri belirlenir.

8392857.0281407

24285.1197a 21 =−×

×−×=

07142857.07288392857.0

774a 0 =×−=

Dolayısıyla en küçük kareler uyumu, x8392857.007142857.0y += şeklindedir ve veri noktaları ile birlikte bu doğru Şekil 4.2c’de gösterilmiştir.

Tablo 4.1 Doğrusal bir eğri uydurma ve yapılan hata xi yi xiyi (xi)2 (yi-a0-a1xi)2

1 0.5 0.5 1 0.1687 2 2.5 5.0 4 0.5625 3 2.0 6.0 9 0.3473 4 4.0 16.0 16 0.3265 5 3.5 17.5 25 0.5896 6 6.0 36.0 36 0.7972 7 5.5 38.5 49 0.1993

∑ 28 74.0 119.5 140 2.9911

( )∑ ∑∑ ∑ ∑

−= 2

i2i

iiii1

xxn

yxyxna

nx

any

xaya i1

i10

∑∑ −=−=

yvex

54

4.1.2 Doğrusal Regresyon Hatasının Belirlenmesi Eğri uydurmamızın "iyiliğinin" ölçüsünü belirlemek için korelasyon katsayısı diye adlandırılan bir katsayı tanımlanır ve r ile gösterilir ve doğrusal regresyon için aşağıdaki gibi hesaplanır.

( )( )

( ) ( )∑ ∑∑ ∑∑ ∑∑

−−

−=

2i

2i

2i

2i

iiii

yynxxn

yxyxnr (4.6)

Burada r’nin 0 < r < 1 aralığında olduğu belirtilmelidir. Tam bir uyum için r = 1 olup doğrunun, verilerin değişkenliğini yüzde 100 açıkladığını belirtir, r = 0 eğri uydurma hiç iyileşme göstermez. Korelasyon katsayısı, uyumun iyiliğinin kullanışlı bir ölçüsüdür. Regresyon hesaplamanın diğer yolu ise determinasyon katsayısı diye adlandırılan ve r2 ile gösterilen katsayı hesaplanır ve karekökü alınarak r bulunur.

r2 = (St –Sr)/St (4.7)

burada,

( )∑ −= 2it yyS ve ( )∑

=−−=

n

1i

2i10ir xaayS (4.8)

4.1.3 Polinom Regresyonu

Şekil 4.3 (a) Doğrusal en küçük kareler regresyonuna uymayan veriler (b) Bir parabolün tercih edilebilirliğinin göstergesi

Altbölüm 4.1.1'de, en küçük kareler kriteri kullanılarak düz bir doğru denkleminin türetilmesi için bir yol geliştirildi. Bazı mühendislik verilerinin, Şekil 4.3’te gösterildiği gibi belirgin bir şekli olsa bile düz bir doğruyla gösterilmesi zayıf kalan bir yaklaşımdır. Bu gibi durumlarda bir eğri verilere daha iyi uyabilir. Bunun için

55

polinom regresyonu kullanarak verilere polinomlar uydurmak doğru yaklaşımdır. En küçük kareler işlemi, yüksek dereceli polinomlarla verilere eğri uydurma için kullanılabilecek şekilde kolayca genişletilebilir. Örneğin, ikinci dereceden bir polinom uydurduğumuzu varsayın: 2

i2i10 xaxaay ++= (4.9) Artıkların karelerinin toplanması durumunda

( )∑ −−−=22

i2i10ir xaxaayS (4.10) olur. Önceki bölümdeki yolun izlenmesiyle, polinomun bilinmeyen katsayılarının her birine göre Eşitlik 4.10’un türevini alınır ve bu denklemleri sıfıra eşitleyip yeniden düzenleyerek aşağıdaki denklemler elde edilebilir:

( ) ( )( ) ( ) ( )( ) ( ) ( ) ∑∑∑∑

∑∑∑∑∑∑∑

=++

=++

=++

i2i2

4i1

3i0

2i

ii23i1

2i0i

i22i1i0

yxaxaxax

yxaxaxax

yaxaxa)n(

(4.11)

Buradaki tüm toplamlar i = l' den n' ye kadardır. Burada n veri sayısıdır. Dikkat ederseniz, yukarıdaki üç denklem doğrusaldır ve a0, aı ve a2 gibi üç bilinmeyeni vardır. Bilinmeyenlerin katsayıları, gözlenmiş verilerden doğrudan hesaplanabilir. Bu durumda, gördüğünüz gibi bir en küçük kareler, ikinci derece polinomu belirleme problemi, eşzamanlı üç doğrusal denklem sisteminin çözümüne eşdeğerdir. Bu tür denklemleri çözmek için teknikleri üçüncü bölümde tartışmıştık. İki boyutlu durum kolaylıkla, aşağıdaki gibi m-inci dereceden polinoma genelleştirilebilir:

exaxaxaay mm

2210 +++++= (4.12)

Böylece, m' inci dereceden bir polinomun katsayılarının belirlenmesi hemen söyleyebileceğimiz gibi, m + 1 eşzamanlı doğrusal denklem sisteminin çözümüne eş-değerdir. Polinom regresyonu için determinasyon katsayısı da

r2 = (St –Sr)/St (4.13)

Bu denklemdeki St ve Sr değerleri aşağıdaki şekildedir.

( )∑ −= 2it yyS (4.14)

( )∑ −−−=22

i2i10ir xaxaayS (4.15)

56

Örnek 4.2 Tablo 4.2’nin ilk iki sütunundaki verilere ikinci dereceden bir polinom uydurun.

Çözüm:

Yukarıdaki değerler Eşitlik (4.11)’de yerlerine yazılırsa, bir doğrusal denklem sistemi aşağıdaki şekilde elde edilir.

=

8.24886.5856.152

aaa

97922555225551555156

2

1

0

Örneğin Gauss-Siedel gibi bir teknikle bu sistemin çözümünden a0=2.47857, a1=2.35929 ve a2=1.86071 bulunur. Böylece bu problem için ikinci dereceden denklem aşağıdaki şekildedir. 2x86071.1x35929.247857.2y ++= Regresyon polinomuna dayalı olarak determinasyon katsayısı r2=0.99851 ve korelasyon katsayısı r = 0.99925' dir. Bu sonuçlar, orijinal belirsizliğin yüzde 99.925' nin modelle açıklandığını göstermektedir. Bu sonuç, aynı zamanda Şekil 4.3 'den açıkça görüldüğü gibi, ikinci dereceden denklemin mükemmel bir uyum verdiği yorumunu destekler.

4.1.4 Doğrusal Olmayan Bağıntıların Doğrusallaştırılması Bazı durumlarda doğrusal olmayan verilere polinom regresyonu gibi teknikler uygundur. Bu tekniklere uygun olmayan durumlar için, verileri doğrusal regresyona uygun bir formda ifade etmek için dönüşümler kullanılabilir. Buna örnek olarak üstel bir model verilebilir.

Tablo 4.2 İkinci dereceden bir eğri uydurma ve yapılan hata xi yi (xi)2 (xi)3 (xi)4 xiyi xi2yi (yi-a0-a1xi-a2x22)

0 2.1 0 0 0 0 0 0.14332 1 7.7 1 1 1 7.7 7.7 1.00286 2 13.6 4 8 16 27.2 54.4 1.08158 3 27.2 9 27 81 81.6 244.8 0.80491 4 40.9 16 64 256 163.6 654.4 0.61951 5 61.1 25 125 625 305.5 1527.5 0.09439

∑ 15 152.6 55 225 979 585.6 2488.8 3.74657

57

x1b

1eay = (4.16) Burada, a1 ve b1 sabitlerdir. Bu model mühendisliğin birçok alanında kendi büyüklükleriyle orantılı hızla artan ya da azalan nicelikleri karakterize eder. Bu tür denklemleri deneysel verilere uydurmak için, doğrusal olmayan regresyon teknikleri vardır. Ancak, daha basit bir seçenek, denklemleri doğrusal forma dönüştürmek için, matematiksel işlemler kullanmaktır. Daha sonra, verilere denklem uydurmak için doğrusal regresyon kullanılabilir. Eşitlik (4.16), doğal logaritması alınarak doğrusallaştırılabilir.

Şekil 4.4 (a) Üstel denklem, (b) üslü denklem (c) rasyonel denklem (d), (e) ve (f) bu

denklemlerin doğrusallaştırılmış versiyonları

elnxbalnyln 11 += , ancak ln e=1 olduğundan,

xbalnyln 11 += (4.17) olacaktır. Böylece x’e göre ln(y)’nin çizimi, eğimi b1 ve kesme noktası ln(a1) olan düz bir doğru verecektir (Şekil 4.4d).

58

4.1.4 Çoklu Doğrusal Regresyon y fonksiyonunun iki veya daha fazla değişkene bağlı olduğu durumdur. Örneğin, y aşağıdaki gibi x1 ve x2 nin doğrusal fonksiyonu olabilir. exaxaay 22110 +++= (4.18) Bu iki boyutlu durum için regresyon doğrusu bir düzleme dönüşür. Tek değişkenli fonksiyonlar için yapılan prosedür, bu durum için de aynen uygulanarak (4.18) eşitliğindeki katsayılar bulunur. 4.2 İNTERPOLASYON (Ara Değer Bulma) Sıklıkla, bilinen veri noktaları arasındaki değerleri tahmin etmeniz gerekecektir. Bu amaç için en yaygın yöntem polinom interpolasyonudur. n.dereceden bir polinomun genel ifadesi aşağıdaki şekildedir. n

n2

210 xaxaxaay ++++= (4.19) n+1 adet nokta için, bütün noktalardan geçen ve n.dereceden olan tek bir polinom vardır. Bu polinomu elde etmek için bilgisayar uygulamalarına oldukça uygun olan iki seçenek incelenecektir: Newton ve Lagrange polinomları 4.2.1. Newton’un Bölünmüş Fark İnterpolasyon Polinomları Genel bir eşitlik vermeden önce, basit görsel yapılarından dolayı, birinci ve ikinci olanlar tanıtılacaktır.

Şekil 4.5 İnterpolasyon polinomu örnekleri (a) iki noktayı birleştiren birinci dereceden

polinom (doğrusal) (b) üç noktayı birleştiren ikinci derece polinom (kuadratik veya parabolik) (c) dört noktayı birleştiren üçüncü derece polinom (kübik)

4.2.1.1 Doğrusal interpolasyon En basit interpolasyon şekli iki noktayı bir doğruyla birleştirmektir. Doğrusal interpolasyon diye anılan bu teknik Şekil 4.6’da gösterilmiştir. Benzer üçgenler kullanılarak, şeklinde elde edilen bu eşitlik, aşağıdaki gibi yeniden düzenlenebilir.

12

12

1

11

xx)x(f)x(f

xx)x(f)x(f

−−

=−−

59

(4.20) Bu eşitlik doğrusal interpolasyon formülüdür. f1(x) gösterimi birinci dereceden interpolasyon polinomunu belirtmektedir. Genel olarak veri noktaları arasındaki aralık ne kadar küçük olursa, yaklaştırma o kadar iyi olur.

Şekil 4.6 Doğrusal interpolasyonun grafik gösterimi

Örnek 4.3. Doğrusal interpolasyon kullanarak 2 sayısının doğal logaritmasını tahmin edin. Önce ln(1)=0 ve ln(6)=1.791759 arasında, sonra daha küçük bir aralıkta ln(1)=0 ve ln(4)=1.386294 arasında tahmin edin [ (Gerçek değer ln(2)=0.6931472 ]. Çözüm: Eşitlik (4.20) kullanılarak; Her iki interpolasyon da gerçek fonksiyonla birlikte Şekil 4.7’de gösterilmiştir.

)xx(xx

)x(f)x(f)x(f)x(f 112

1211 −

−−

+=

3.48%3583519.0)12(16

0791759.10)2(f t1 =ε=−−

−+=

3.33%4620981.0)12(14

0386294.10)2(f t1 =ε=−−

−+=

60

Gerçek değer

Doğrusal tahminler

Şekil 4.7 ln(2)’yi tahmin etmek için kullanılan iki doğrusal interpolasyon. Daha küçük

interpolasyon aralığı, daha iyi tahmin sağlamaktadır.

4.2.1.2 İkinci dereceden interpolasyon Örnek 4.3’teki hata, bir eğriye bir doğruyla yaklaştırma yapmamızdan kaynaklanmıştır. Tahmini iyileştirmenin bir yolu, noktaları birleştiren doğruya bir eğrilik vermektir. Bu ise eğer üç veri noktası varsa, ikinci dereceden bir polinom ile sağlanabilir. Bunun için uygun bir form aşağıdaki gibidir. )xx)(xx(b)xx(bb)x(f 1020102 −−+−+= (4.21) (4.21) eşitliği başka formlarda da yazılabilir. Ancak kullanışlı olması bakımından buradaki form tercih edilmiştir. [x0, f(x0)], [x1, f(x1)], [x2, f(x2)] noktalarından geçen polinomun bilinmeyen üç katsayının değerlerini bulmak için basit bir yol izlenebilir. b0 Eşitlik (4.21) de x=x0 konularak hesaplanabilir. )x(fb 00 = (4.22) Eşitlik (4.22), (4.21)’de yerine konulur ve x=x1 için hesaplama yapılırsa b1 elde edilir.

01

011 xx

)x(f)x(fb−−

= (4.23)

Son olarak, Eşitlik (4.22) ve (4.23) ifadeleri (4.21)’de yerine konur ve x=x2 için hesaplama yapılırsa b2 elde edilir.

61

02

01

01

12

12

2 xxxx

)x(f)x(fxx

)x(f)x(f

b−

−−

−−−

= (4.24)

Örnek 4.4. Örnek 4.3’te kullanılan üç nokta için ikinci dereceden bir polinom uydurun ve ln(2) nin değerini hesaplayın. [ (Gerçek değer ln(2)=0.6931472 ]. Çözüm:

x0=1 f(x0)=0 x1=4 f(x1)=1.386294 x2=6 f(x2)=1.791759

0b0 =

4620981.014

0386294.1b1 =−

−=

0518731.016

4620981.046

386294.1791759.1

b2 −=−

−−−

=

Bu değerlerin Eşitlik (4.21)’de yerine yazılmasıyla, bu üç noktadan geçen ikinci derece polinom elde edilir. )4x)(1x(0518731.0)1x(4620981.00)x(f2 −−−−+= Bu formülde x=2 yazılırsa; f2(2)=0.5658444 bulunur. Bu değer εt=%18.4’lük bir hataya sahiptir. Bu ise, doğrusal interpolasyona göre daha iyi bir sonuçtur. 4.2.1.3 Newton’un bölünmüş fark interpolasyon polinomlarının genel formu Yukarıda açıklanan analiz, n+1 veri noktasından geçen n. derece polinomu elde etmek için kullanılabilir. )xx()xx)(xx(b)xx(bb)x(f 1n10n010n −−−−++−+= (4.25) Daha önce yapıldığı gibi veri noktaları yardımıyla b0, b1, …, bn katsayıları bulunabilir. n. dereceden polinom için n+1 veri noktası gerekir. [x0, f(x0)], [x1, f(x1)],.., [xn, f(xn)]. Bu veri noktaları ve aşağıdaki eşitlikler kullanılarak katsayılar hesaplanır.

62

(4.26) (4.27) (4.28) (4.29) Burada köşeli parantezli fonksiyon hesaplamaları sonlu bölünmüş farklardır. Örneğin birinci sonlu bölünmüş fark aşağıdaki genel formda yazılabilir: (4.30) İki farklı birinci dereceden bölünmüş farkın farkını gösteren ikinci dereceden sonlu fark ise, aşağıdaki genel formda yazılabilir. (4.31) Benzer biçimde n. dereceden bölünmüş sonlu fark ise, (4.32) şeklindedir. Bu denklemler (4.25) eşitliğinde yerlerine konulursa, interpolasyon polinomu elde edilir.

[ ] [ ]

[ ]011nn1n10

012100100n

x,x,,x,xf)xx()xx)(xx(x,x,xf)xx)(xx(x,xf)xx()x(f)x(f

−−−−−++−−+−+=

(4.33)

Eşitlik (4.33) Newton’un bölünmüş fark interpolasyon polinomu diye adlandırılır. Aşağıdaki örnekte açıklanacağı gibi (4.33) eşitliğindeki verilerin eşit aralıklı olmasına veya apsis değerlerinin artan sırada olmasına gerek yoktur. Tablo 4.3’ten de görüldüğü gibi, yüksek dereceli farklar düşük dereceli farklar yardımıyla hesaplanabilmektedir.

Tablo 4.3 Sonlu bölünmüş farkların tekrar etme özelliğinin grafik olarak gösterimi

( )00 xfb =

[ ]011 x,xfb =

[ ]011nnn x,x,,x,xfb −=

[ ]0122 x,x,xfb =

[ ]ji

jiji xx

)x(f)x(fx,xf

−=

[ ]ki

kjjikji xx

]x,x[f]x,x[fx,x,xf

−=

[ ] [ ] [ ]0n

011n11nn011nn xx

x,x,,xfx,,x,xfx,x,,x,xf

−−

= −−−

[ ] [ ] [ ][ ] [ ] [ ][ ] [ ][ ]

)x(fx4x,xf)x(fx3

x,x,xfx,xf)x(fx2x,x,x,xfx,x,xfx,xf)x(fx1x,x,x,xfx,x,xfx,xf)x(fx0

ÜçüncüİkinciBirinci)x(fxi

44

3433

2342322

12341231211

01230120100

ii

63

Örnek 4.5. Örnek 4.4’te kullanılan üç noktaya dördüncü bir nokta ekleyerek [x3=5, f(x3)=1.609438] için ikinci dereceden bir polinom uydurun ve ln(2) nin değerini üçüncü dereceden bir interpolasyon polinomu yardımıyla hesaplayın [ (Gerçek değer ln(2)=0.6931472 ]. Çözüm:

x0=1 f(x0)=0 x1=4 f(x1)=1.386294 x2=6 f(x2)=1.791759 x3=5 f(x3)=1.609438

(4.25) denkleminde n = 3 alınırsa polinom aşağıdaki şekilde yazılabilir. )xx)(xx)(xx(b)xx)(xx(b)xx(bb)x(f 21031020103 −−−+−−+−+= Birinci dereceden bölünmüş farklar aşağıdaki gibidir. İkinci derecen bölünmüş farklar; Üçüncü dereceden bölünmüş fark; Yukarıdaki f[x1,x0], f[x2, x1, x0], f[x3, x2, x1, x0] değerleri sırasıyla b1, b2 ve b3 katsayılarını göstermektedir. Ayrıca b0=f(x0)=0 olduğundan üçüncü derece interpolasyon polinomu aşağıdaki şekilde elde edilir.

[ ] 4620981.014

0386294.1x,xf 01 =−

−=

[ ] 2027326.046

386294.1791759.1x,xf 12 =−−

=

[ ] 183216.065

791759.1609438.1x,xf 23 =−−

=

[ ] 05187311.016

4620981.02027326.0x,x,xf 012 −=−−

=

[ ] 02041100.045

2027326.01873216.0x,x,xf 123 −=−−

=

[ ] 007865529.015

)05187311.0(2041100.0x,x,x,xf 0123 =−−−−

=

64

)6x)(4x)(1x(007865529.0)4x)(1x(05187311.0)1x(4620981.00)x(f3 −−−+−−−−+= Bu formülde x=2 yazılırsa; f3(2)=0.6287686 bulunur. Bu değer εt=%9.3’lük bir hataya sahiptir. Bu ise, doğrusal ve ikinci derece interpolasyona göre daha iyi bir sonuçtur.

Şekil 4.8 ln(2)’nin doğrusal , kuadratik ve kübik tahminleri

(Yüksek dereceden interpolasyonlar tahmini gerçek değere yaklaştırır.)

4.2.2. Lagrange İnterpolasyon Polinomları Newton bölünmüş fark interpolasyonu dışında, gene Newton interpolasyonuna benzeyen bir başka yöntem Lagrange interpolasyonudur. Lagrange interpolasyon polinomu, Newton interpolasyon polinomunun yeniden formülleştirilmesidir ve bölünmüş farkların hesaplanmasını gerektirmez. Bunlar özet olarak şu şekilde verilebilir.

∑=

=n

0iiin )x(f)x(L)x(f (4.34)

Burada,

)xx()xx)(xx()xx)(xx()xx()xx)(xx()xx)(xx(

xxxx

)x(Lni1ii1ii1i0i

n1i1i10n

ij0j ji

ji −−−−−

−−−−−=

−=

+−

+−

≠=∏

(4.35)

şeklinde tanımlanmıştır. Örnek olarak birinci ve ikinci dereceden Lagrange interpolasyon polinomları aşağıdaki şekilde ifade edilebilir.

)x(fxxxx

)x(fxx

xx)x(f)x(L)x(fL)x(f 101

00

10

111001 −

−+

−−

=+= (4.36)

65

)x(f

)xx)(xx()xx)(xx(

)x(f)xx)(xx(

)xx)(xx()x(f

)xx)(xx()xx)(xx()x(f

21202

10

12101

200

2010

212

−−−−

+

−−−−

+−−−−

=

(4.37)

Lagrange ve Newton formülleri aynı hesaplama zamanı gerektirir. Ancak Lagrange polinomu programlama için biraz daha kullanışlıdır. Bu formüllerden başka burada incelenmeyecek olan şerit (spline) interpolasyonu da sıklıkla kullanılan tekniklerdendir. 4.2.3. Eşit aralıklı verilerle interpolasyon Verilerin eşit aralıklı olarak dağılması özel durumu, özellikle sayısal integrasyon ve adi diferansiyel denklemlerin çözümüyle ilgili olduğundan bu alt bölüme gerek duyulmuştur. Eğer veriler eşit aralıklı dağılmışsa ve artan yönlü ise, bağımsız değişkenin değerlerinin aşağıdaki gibi olduğu varsayılabilir.

nhxx

h2xxhxx

0n

02

01

+=

+=+=

(4.38)

Burada h, veri noktaları arasındaki uzaklık veya adım büyüklüğüdür. Buna göre (4.36) ve (4.37) eşitlikleri ile verilen birinci ve ikinci dereceden Lagrange interpolasyon polinomları, x1-x0=x2-x1=(x2-x0)/2=h olduğu için, aşağıdaki şekilde ifade edilebilir.

[ ]10011 f)xx(f)xx(h1)x(f −+−= (4.39)

[ ]21012002122 f)xx)(xx(f)xx)(xx(2f)xx)(xx(2h21)x(f −−+−−+−−= (4.40)

4.2.4. MATLAB fonksiyonlarıyla interpolasyon MATLAB bu bölümde açıklanmış olan tüm özellikleri içeren hazır fonksiyonlara sahiptir. Bu fonksiyonlar Tablo 4.4’te verilmiştir.

Tablo 4.4. İnterpolasyon ve regresyon için kullanılan bazı MATLAB fonksiyonları Fonksiyon Tanım polyfit Verilere polinom uydurur interp1 Bir boyutlu interpolasyon interp2 İki boyutlu interpolasyon spline Kübik şerit veri interpolasyonu

66

Örnek 4.6. Eğri uydurma için MATLAB kullanımı 0’dan 10 a kadar eşit aralıklarla sinüs fonksiyonunun değerlerini kullanarak (a) doğrusal interpolasyonla (b) beşinci dereceden bir polinomla (c) kübik bir şeritle eğri uydurun. Çözüm: Bağımsız ve bağımlı değişkenlerin değerleri vektör olarak girilebilir. >> x = 0:10; >> y = sin(x); Bağımsız değişkenin daha sık değerleri için yeni bir vektör üretilebilir ve xi vektöründe depolanabilir. >> xi = 0:.25:10; >> yi=interp1(x,y,xi); % doğrusal interpolasyon polinomlarını kullanarak xi %noktalarındaki değerleri tahmin et. >> plot(x,y,'o',xi,yi) % x-y ve xi-yi değişimleri aynı grafikte gösteriliyor. % doğrusal interpolasyon polinomlarını kullanarak xi %noktalarındaki değerleri tahmin et.

0 1 2 3 4 5 6 7 8 9 10

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Şekil 4.9. interp1 fonksiyonu ile doğrusal interpolasyon

>> polyfit(x,y,5) p = 0.0008 -0.0290 0.3542 -1.6854 2.5860 -0.0915 Burada p polinomun katsayılarını içeren vektördür. Bunlar kullanılarak yeni bir değerler seti elde edilebilir ve tekrar bu yeni setin grafiği orijinal verilerle birlikte çizilebilir.

67

>> yi=polyval (p,xi); >> plot(x,y,'o',xi,yi)

0 1 2 3 4 5 6 7 8 9 10-1

-0.5

0

0.5

1

1.5

Şekil 4.10. polyval fonksiyonu ile polinom interpolasyonu

Burada polinom verilerin genel gidişini yakalamakta, ancak noktaların çoğundan geçmemektedir. Son olarak MATLAB’ın spline fonksiyonu kullanılarak bir kübik şerit eğri uydurması yapılabilir. >> yi=spline (x,y,xi) >> plot(x,y,'o',xi,yi)

0 1 2 3 4 5 6 7 8 9 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Şekil 4.11. spline fonksiyonu ile kübik şerit interpolasyonu

68

4.2.4 Örnek Programlar

Tablo 4.5 Polinom regresyonu x=[0;1;2;3;4;5]; % bağımsız değişken

y=[2.1;7.7;13.6;27.2;40.9;61.1]; % bağlı değişken (gözlem)

p=polyfit(x,y,2); % uyduracağı 2. derece polinomun (model) %

%katsayılarını bulur. eğer 2 yerine 1 %yazılırsa %"doğru" uydurur.

f=polyval(p,x); %uydurulan polinomda (model) satır-1'deki %x leri yerine koyarak polinom (model) %değerlerini hesaplar

table = [x y f] %bağımsız değişkeni, gözlemi ve modeli %listeler.

plot(x,y,'o',x,f) %gözlem ve modelin grafiğini çizer

axis([0 5 0 70]) %eksenlerin minimum maksimum değerlerini %ayarlar

Tablo 4.6 Tek boyutlu veri (x,Y) interpolasyonu % interp1 fonksiyonu % Fonksiyonun kullanımı % yi = interp1(x,Y,xi,method) % x = bağımsız değişken % Y = bağlı değişken (fonksiyon) % xi = ara değer % yi = ara değere (xi) karşılık gelen fonksiyon değeri % method: % 'linear' = doğrusal interpolasyon (default) % 'cubic' = kübik interpolasyon % 'spline' = Kübik (spline) interpolasyon t = 1900:10:1990; p = [75.995 91.972 105.711 123.203 131.669... 150.697 179.323 203.212 226.505 249.633]; pint= interp1(t,p,1975) % method için bir şey yazılmazsa default değer yani doğrusal % yukarıda verilen orijinal değerlerde bağımsız değişken t, 10 'ar adımlarla artmaktadır. % şimdi t 'nin 1 'er adımlarla artması durumu için interpolasyon tekniği ile p bağıl % değişkenini hesaplayıp çizdirelim. x = 1900:1:2000; y = interp1(t,p,x,'spline'); plot(t,p,'o',x,y,'.') % aralığın dışındaki bir değeri tahmin etmek (extrapolasyon )için genel yazılım; % yi = interp1(x,Y,xi,method,'extrap') pext = interp1(t,p,1995,'spline','extrap')

69

Tablo 4.7 En küçük kareler yöntemi algoritması

N adet veri noktasını en iyi temsil eden n. derece polinomun katsayılarını veren

lineer cebirsel deklem sistemi aşağıdaki gibidir.

Algoritma:

1. Veri noktalarını gir. 2. Veri noktalarının sayısını hesapla (N). 3. Uydurulacak polinomun derecesini gir (n). 4. N<n+1 ise regresyonun olanaksız olduğunu ve işlemin sona erdiğini bildiren bir

mesaj yaz, değilse işlemlere devam et. 5. Cebirsel denklem takımının katsayılarını belirle. 6. Herhangi bir yöntem kullanarak denklem takımını çöz. 7. Katsayıları yazdır.

70

BÖLÜM 5

SAYISAL İNTEGRASYON ve SAYISAL TÜREV 5.1. NEWTON-COTES İNTEGRAL FORMÜLLERİ Newton-Cotes integral formülleri en yaygın sayısal integral hesap yöntemleridir. Bu formüller, karmaşık bir fonksiyonu veya tablo şeklinde düzenlenmiş verileri, integre edilmesi kolay bir yaklaşım fonksiyonuyla ifade etme esasına dayanır.

∫∫ ≅=b

an

b

adx)x(fdx)x(fI (5.1)

Burada fn(x) aşağıdaki şekilde yazılabilen bir fonksiyondur. n

n1n

1n10n xaxaxaa)x(f ++++= −− (5.2)

Burada n polinomun derecesidir. Örneğin Şekil 5.1a’da bir yaklaştırma olarak birinci dereceden bir polinom (düz bir doğru), Şekil 5.1b’de ise aynı amaçla bir parabol uygulanmıştır.

Şekil 5.1 (a) Düz bir doğru (b) bir parabol altındaki alan yardımıyla integral yaklaştırması

Aynı şekilde integrale fonksiyona veya sabit uzunluktaki aralıklar boyunca verilere uygulanan parçalı polinomlar dizisi kullanılarak da yapılabilir. Örneğin Şekil 5.2’de, integrale yaklaştırma için üç tane düz doğru parçası kullanılmıştır.

71

Şekil 5.2 Üç doğru altında kalan alan yardımıyla integrale yaklaşım

5.1.1 Trapez (Yamuk) Kuralı Trapez kuralı, Newton-Cotes integral formüllerinin ilki olup, (5.1) eşitliğindeki polinomun birinci derece olmasına karşı gelir.

∫∫ ≅=b

a1

b

adx)x(fdx)x(fI (5.3)

Eşitlik (4.39)’ da verilen birinci derece interpolasyon polinomu göz önüne alınır ve x0=a x1=b değişiklikleri yapılarak (5.3)’te yerine yazılırsa;

[ ]bx

ax

22b

a)b(fax

2x)a(fbx

2x

h1dx)b(f)ax()a(f)bx(

h1I

=

=

−+

−=−+−≅ ∫

elde edilir. Ara işlemler yapılırsa,

2

)a(f)b(f)ab(I +−= (5.4)

elde edilir. Bu eşitlik trapez kuralı olarak bilinir. Geometrik olarak trapez kuralı şekil 5.3’deki f(a) ve f(b)’yi birleştiren doğrunun altındaki trapezin alanına yapılan yaklaştırmaya eşdeğerdir. Bu nedenle integral tahmini şu şekilde ifade edilebilir. tabanortalama)ab(I ×−≈ (5.5)

72

Bütün Newton-Cotes formülleri Eşitlik (5.5)’in genel formunda yazılabilir. Aslında bu formüller sadece ortalama tabanın formülasyonu bakımından birbirlerinden ayrılırlar.

Şekil 5.3 Trapez kuralının grafiksel açıklaması

Bir eğri altındaki integrale yaklaşmak için düz bir doğru parçası altındaki integrali kullandığımızda, fonksiyonun şekline bağlı olarak, önemli bir hataya düşebiliriz (Şekil 5.3). Trapez kuralının tekli uygulamasındaki yerel hata için aşağıdaki tahmin kullanılabilir.

3t )ab)((f

121E −ξ′′−= (5.6)

Burada ξ, a’dan b’ye kadar olan aralıkta herhangi bir yerdedir. Eğer fonksiyon doğrusal ise ikinci türev sıfır olacağından trapez kuralı kesin çözümü verir. Ancak ikinci ve daha yüksek dereceden fonksiyonlar (yani eğriler) için bir hata oluşacaktır. Örnek 5.1 Trapez kuralının tekli uygulaması

5432 x400x900x675x200x252.0)x(f +−+−+=

f(x) fonksiyonunu Eşitlik (5.4)’ü kullanarak a=0’dan b=0.8’e kadar sayısal olarak integre edin. (Tam değer=1.640533) Çözüm: f(0)=0.2, f(0.8)=0.232 değerleri Eşitlik (5.4)’te yerine konulursa

1728.02

2.0232.0)08.0(I =+

−=

İntegralin gerçek değeri bilindiğinden gerçek hata kesin olarak hesaplanabilir.

73

467733.11728.0640533.1Et =−=

Hata

İntegral tahmini

Şekil 5.4 Örnek 5.1 için trapez kuralının tekli uygulamasının grafik gösterimi

Gerçek bağıl hata ise,

5.89%100%640533.1

1728.0640533.1t =×

−=ε

olarak hesaplanır. Hatanın bu kadar büyük olmasının nedeni Şekil 5.4’ten anlaşılabilir. Gerçek uygulamalarda bizim tam değer hakkında bilgimiz olmaz. Bu nedenle bir yaklaşık hata tahmini gereklidir. Bu tahmin (5.6) eşitliği ile yapılabilir. Bunun için fonksiyonun aralık boyunca ortalama ikinci türevine ihtiyaç duyarız. Bir (a,b) aralığında bir g(x) fonksiyonunun ortalaması aşağıdaki şekilde hesaplanır.

)ab(

dx)x(gg

b

a

−=∫

Buna göre ikinci türevin ortalama değeri aşağıdaki şekilde hesaplanır.

6008.0

dx)x8000x10800x4050400(f

8.0

0

32

−=−

+−+−=′′∫

74

Bu değer (5.6) eşitliğinde yerine konursa, yaklaşık hata elde edilir.

56.2)08.0)(60(121E 3

a =−−−=

Bu hata gerçek (mutlak) hata ile aynı mertebede olmasına karşın, ikinci türevin değerinin yaklaşık olmasından ötürü sayısal olarak farklıdır.

5.1.1.1Trapez Kuralının Çoklu Uygulaması Trapez kuralının doğruluğunu iyileştirmenin bir yolu a’dan b’ye olan integral aralığını belli sayıda alt aralıklara bölmek ve her bir aralık için kuralı uygulamaktır (Şekil 5.5). Daha sonra her bir aralığın alanı toplanarak tüm integral aralığının alanı elde edilir.

Şekil 5.5 Trapez kuralının çoklu uygulaması (a) iki aralıklı (b) üç aralıklı (c) dört aralıklı

(d) sekiz aralıklı

Şekil 5.6 bizim kullanacağımız çoklu uygulamalı integralleri karakterize etmek için genel formu ve sembolleri göstermektedir. Burada (n+1) eşit aralıklı temel nokta vardır (x0, x1, …, xn). Dolayısıyla,

n

)ab(h −= (5.6)

75

kadar eşit genişliğe sahip n adet aralık vardır. Eğer a ve b, sırasıyla x0 ve xn’e eşit alınırsa, toplam integral aşağıdaki gibi yazılabilir.

Şekil 5.6 Çoklu integralin genel formu ve sembolleri

∫∫∫−

+++=nx

1nx

2x

1x

1x

0xdx)x(fdx)x(fdx)x(fI (5.7)

Her bir integral aralığı için trapez kuralı uygulanırsa,

2

)x(f)x(fh2

)x(f)x(fh2

)x(f)x(fhI n1n2110 +

+++

++

= − (5.8)

veya uygun terimler bir araya toplanır ve f(x0)=f0 şeklinde notasyon değiştirilirse, toplam integral,

++= ∑

=n

1n

1ii0 ff2f

2hI (5.9)

76

şeklinde elde edilir. Bu denklem (5.5) denklemiyle karşılaştırılırsa aşağıdaki eşitlik yazılabilir.

tabanortalama

n

1n

1ii0

yükseklikn2

ff2f)ab(I

++−=

∑−

= (5.10)

2n’ye bölünmüş olan pay içerisindeki fonksiyon katsayılarının toplamı bire eşit olduğundan, ortalama yükseklik, fonksiyon değerlerinin ağırlıklı ortalamasını göstermektedir. Trapez kuralının çoklu uygulamasındaki hata, her bir aralıktaki hatanın toplanmasıyla elde edilir.

∑=

ξ′′−

−=n

1i3

3

t )(fn12

)ab(E (5.11)

n

)(ff

n

1i∑=

ξ′′≅′′ (5.12)

olduğundan,

fn12

)ab(E 2

3

a ′′−−= (5.13)

Böylece aralık sayısının iki katına çıkması halinde kesme hatasının dörtte bire düşeceği anlaşılır. Eşitlik (5.12)’nin yaklaşık yapısından dolayı Eşitlik (5.13) yaklaşık bir hatadır. Örnek 5.2 Trapez kuralının çoklu uygulaması

5432 x400x900x675x200x252.0)x(f +−+−+=

f(x) fonksiyonunu Eşitlik (5.9)’u kullanarak a=0’dan b=0.8’e kadar sayısal olarak integre edin. (Tam değer=1.640533) Çözüm: n=2 h=0.4 f(0)=0.2 f(0.4)=2.456 f(0.8)=0.232 değerleri Eşitlik (5.9)’da yerine konulursa

0688.1)232.0456.222.0(24.0I =+×+=

77

57173.00688.1640533.1E t =−= 9.34%t =ε

64.0)60()2(12)8.0(E 2

3

a =−−=

Burada -60, önceki örnekte hesaplanmış ikinci türevin ortalama değeridir. Aralık sayısı üçten ona kadar değiştirilerek Tablo 5.1’de listesi verilen program kullanılmış ve bulunan sonuçlar Tablo 5.2’de gösterilmiştir.

Tablo 5.1 Örnek 5.2’ye ait trapez kuralının çoklu uygulaması için MATLAB programı clc clear all format short %trapez kuralı çoklu uygulaması a=0; %sol sınır b=0.8; % sağ sınır n=10; % aralık sayısı h=(b-a)/n; % adım uzunluğu top0=0; for i=1:n-1 top0=top0+feval('f_trapez',i*h); end trapezint=h/2*(feval('f_trapez',a)+2*top0+feval('f_trapez',b)) function y=f_trapez(x) y=0.2+25*x-200*x^2+675*x^3-900*x^4+400*x^5;

Tablo 5.2 Örnek 5.2’ye ait trapez kuralının çoklu uygulamasının sonuçları n h I εt (%) 2 0.4 1.0688 34.9 3 0.2667 1.3695 16.5 4 0.2 1.4848 9.5 5 0.16 1.5399 6.1 6 0.1333 1.5703 4.3 7 0.1143 1.5887 3.2 8 0.1 1.6008 2.4 9 0.0889 1.6091 1.9 10 0.08 1.6150 1.6

78

5.1.2 Simpson Kuralları Trapez kuralını daha sık aralıkla uygulamaktan başka, integrali daha doğru hesaplamak için diğer bir yol, noktaları birleştirmek için daha yüksek dereceli polinomlar kullanmaktır. Örneğin f(a) ve f(b) noktaları arasında bilinen ek bir nokta varsa, bu üç nokta bir parabolle birleştirilebilir Şekil (5.7a). Eğer f(a) ve f(b) noktaları arasında bilinen ek iki nokta varsa, bu üç nokta bir üçüncü derece polinomla birleştirilebilir Şekil (5.7b). Bu polinomlar altında kalan integralleri veren formüller Simpson kuralları olarak bilinir.

Şekil 5.7 Simpson kurallarının grafik gösterimi (a) 1/3 kuralı (b) 3/8 kuralı

5.1.2.1 Simpson’un 1/3 kuralı Simpson’un 1/3 kuralı, Eşitlik 5.1’e ikinci dereceden bir interpolasyon polinomu konulmasıyla elde edilir.

∫∫ ≅=b

a2

b

adx)x(fdx)x(fI (5.14)

a ve b, x0 ve x2 olarak düzenlenirse f2(x) ikinci dereceden bir Lagrange polinomuyla [ Eşitlik (4.37)] ifade edilirse, bu integral aşağıdaki hale gelir.

dx)x(f)xx)(xx(

)xx)(xx(

)x(f)xx)(xx(

)xx)(xx()x(f

)xx)(xx()xx)(xx(I

21202

10

2x

0x1

2101

200

2010

21

−−−−

+

−−−−

+−−−−

= ∫ (5.15)

İntegral alınır ve gerekli işlemler yapılırsa, aşağıdaki formül elde edilir.

79

[ ])x(f)x(f4)x(f3hI 210 ++≅ (5.16)

Burada h=(b-a)/2’dir. Bu eşitlik Simpson’un 1/3 kuralı diye bilinir ve ikinci Newton_Cotes formülüdür. Simpson’un 1/3 kuralının bir aralıklı uygulamasında kesme hatasının

)(fh901E )4(5

t ξ−= (5.17)

olduğu gösterilebilir. h=(b-a)/2 ve türevin ortalama değeri (5.17) eşitliğinde yerine konursa yaklaşık kesme hatası aşağıdaki şekilde hesaplanır.

)4(5

a f2880

)ab(E −−= (5.18)

elde edilir. Simpson’un 1/3 kuralı, trapez kuralından daha doğrudur. Örnek 5.3 Simpson’un 1/3 kuralının tekli uygulaması

5432 x400x900x675x200x252.0)x(f +−+−+=

f(x) fonksiyonunu Eşitlik (5.16)’yı kullanarak a=0’dan b=0.8’e kadar sayısal olarak integre edin. (Tam değer=1.640533) Çözüm: h=0.4 f(0)=0.2, f(0.4)=2.456 f(0.8)=0.232 değerleri Eşitlik (5.16)’da yerine konulursa

367467.1)232.0456.242.0(34.0I =+×+=

İntegralin gerçek değeri bilindiğinden gerçek hata kesin olarak hesaplanabilir. 6.16%2730667.0367467.1640533.1E tt =ε=−= Bu değer trapez kuralının tekli uygulamasına göre (Örnek 5.1) beş kat daha doğrudur. Yaklaşık hata ise, (5.18) eşitliği kullanılarak elde edilir.

2730667.0)2400(2880

)8.0(E5

a =−−=

Bu hata tahmini olmasına rağmen, beşinci derece polinomla çalışıldığı için gerçek hatayla uyumludur.

80

5.1.2.2 Simpson’un 1/3 kuralının çoklu uygulaması Tamamen trapez kuralında olduğu gibi, Simpson kuralı da, integral aralığı eşit genişlikteki alt aralıklara bölünerek iyileştirilebilir. Toplam integral aşağıdaki gibi yazılabilir.

∫∫∫−

+++=nx

2nx

4x

2x

2x

0xdx)x(fdx)x(fdx)x(fI (5.19)

Şekil 5.8 Simpson’un 1/3 kuralının çoklu uygulamasının grafik gösterimi: Yöntemin

yalnızca aralık sayısının çift olması durumunda kullanılabileceğine dikkat edin Her bir integral için Simpson’un 1/3 kuralının uygulanmasıyla

3)x(f)x(f4)x(fh

3)x(f)x(f4)x(f

h3

)x(f)x(f4)x(fhI

n1n2n

432210

++++

+++

++≅

−−

(5.20)

veya uygun terimler bir araya toplanır ve f(x0)=f0 şeklinde notasyon değiştirilirse, toplam integral,

+++= ∑∑

=

=n

2n

6,4,2jj

1n

5,3,1ii0 ff2f4f

3hI (5.21)

şeklinde elde edilir. Diğer uygulamalara benzer şekilde, hata tahmini, her aralık için hatanın toplanması ve türevin ortalamasının alınması yoluyla elde edilir.

81

)4(4

5

a fn180

)ab(E −−= (5.22)

Örnek 5.4 Simpson’un 1/3 kuralının çoklu uygulaması

5432 x400x900x675x200x252.0)x(f +−+−+=

f(x) fonksiyonunu n=4 aralık için, Eşitlik (5.21)’i kullanarak a=0’dan b=0.8’e kadar sayısal olarak integre edin. (Tam değer=1.640533) Çözüm: n=4 h=0.2 f(0)=0.2 f(0.2)=1.288 f(0.4)=2.456 f(0.6)=3.464 f(0.8)=0.232 değerleri Eşitlik (5.21)’de yerine konulursa

[ ] 623467.1232.0)456.2(2)464.3288.1(42.032.0I =+×++×+=

İntegralin gerçek değeri bilindiğinden gerçek hata kesin olarak hesaplanabilir. 4.1%017067.0623467.1640533.1E tt =ε=−= Yaklaşık hata ise, (5.22) eşitliği kullanılarak elde edilir.

017067.0)2400()4(180

)8.0(E 4

5

a =−−=

Bu hata tahmini olmasına rağmen, beşinci derece polinomla çalışıldığı için, (dördüncü türev aralıkta doğrusal değiştiği için) gerçek hatayla uyumludur. 5.1.2.3 Simpson’un 3/8 kuralı Trapez ve Simpson’un 1/3 kurallarının türetilmesine benzer şekilde, üçüncü dereceden bir Lagrange polinomu dört noktadan geçirilebilir ve integre edilebilir.

∫∫ ≅=b

a3

b

adx)x(fdx)x(fI (5.23)

integrali alınırsa, aşağıdaki formül elde edilir.

[ ])x(f)x(f3)x(f3)x(f8h3I 3210 +++≅ (5.24)

Simpson’un 3/8 kuralının bir aralıklı uygulamasında kesme hatasının

82

)(fh803E )4(5

t ξ−= (5.25a)

olduğu gösterilebilir. h=(b-a)/3 ve türevin ortalama değeri (5.25a) eşitliğinde yerine konursa yaklaşık kesme hatası aşağıdaki şekilde hesaplanır.

)4(5

a f6480

)ab(E −−= (5.25b)

elde edilir, burada ξ, a’dan b’ye kadar olan aralıkta herhangi bir yerdedir. Eşitlik (5.25b)’nın paydası, Eşitlik (5.18)’in paydasından daha büyük olduğu için 3/8 kuralı 1/3 kuralından biraz daha doğrudur. Bu kuralın uygulanabilmesi için, aralık sayısının üçe bölünebilmesi gerekir. Simpson 3/8 kuralının çoklu uygulaması aşağıdaki şekilde ifade edilir.

++++= ∑∑∑

=

=

=

3n

9,6,3knk

2n

8,5,2jj

1n

7,4,1ii0 ff2f3f3f

8h3I (5.26)

Eğer aralık sayısı tekse ve üçe bölünmüyorsa, örneğin n=5 ise, trapez kuralının çoklu uygulaması kullanılabilir. Ancak, trapez kuralında kesme hataları büyük olduğundan bu yöntem önerilmez. Bunun yerine ilk iki aralık için Simpson 1/3 kuralını, son üç aralık için de 3/8 kuralını kullanmak daha uygun olur (Şekil 5.9). Bu yolla tüm integral aralığı boyunca üçüncü dereceden bir doğruluk elde edebiliriz.

1/3 kuralı 3/8 kuralı Şekil 5.9 Aralık sayısının tek olması durumunda 1/3 ve 3/8 kurallarının ardışık uygulaması

83

Tablo 5.3 Simpson 1/3 kuralının çoklu uygulaması için MATLAB programı clc % Simpson 1/3 kuralının çoklu uygulaması f= @(x) x*exp(2*x) ; a=0 ;% a, alt sınır b=4 ;% b, üst sınır n=16 ;% n, aralık sayısı. n çift olmalı h = (b - a)/n; % Aralık uzunluğu S = f(a); for i = 1 : 2 : n-1 x(i) = a + h*i; S = S + 4*f(x(i)); end for j = 2 : 2 : n-2 x(j) = a + h*j; S = S + 2*f(x(j)); end S = S + f(b); I = h*S/3

5.1.3 MATLAB fonksiyonlarıyla sayısal integrasyon MATLAB’DA sayısal integrasyon için kullanılan fonksiyonlar funfun araç kutusu içerisinde yer alır. Bu fonksiyonların bir listesi komut satırına help funfun yazılarak elde edilebilir. quad fonksiyonu y=f(x) fonksiyonunun, x bağımsız değişkenine göre [a b] alt ve üst sınırları arasındaki

∫=b

adx)x(fI

belirli integralini, adaptif Simpson yöntemi ile hesaplamak için kullanılır. Aşağıda iki kullanım biçimi gösterilmiştir. F = @(x) 1./(x.^3-2*x-5); Q = quad(F,0,2); Q = quad(@myfun,0,2); burada myfun.m bir M-file dosyasıdır. function y = myfun(x) y = 1./(x.^3-2*x-5); quadl fonksiyonu Kullanımı quad fonksiyonu ile aynıdır. Ancak, integral adaptif Lobatto yöntemi ile hesaplanır.

84

dblquad fonksiyonu z=f(x,y) fonksiyonunun, x ve y bağımsız değişkenlerine göre [a b] ve [c d] alt ve üst sınırları arasındaki

∫ ∫=d

c

b

adxdy)y,x(fI

belirli integralini, adaptif Simpson veya Lobatto yöntemi ile hesaplamak için kullanılır. Aşağıda iki kullanım biçimi gösterilmiştir. Q = dblquad(@(x,y) (y*sin(x)+x*cos(y)), pi, 2*pi, 0, pi) Q = dblquad(@integrnd, pi, 2*pi, 0, pi) Burada integrnd.m bir “M-file”dır. function z = integrnd(x, y) z = y*sin(x)+x*cos(y);

triplequad fonksiyonu f(x,y,z) fonksiyonunun, x ve y ve z bağımsız değişkenlerine göre [a b], [c d] ve [e f] alt ve üst sınırları arasındaki

dzdxdy)z,y,x(fIf

e

d

c

b

a∫ ∫ ∫=

belirli integralini, adaptif Simpson veya Lobatto yöntemi ile hesaplamak için kullanılır. Aşağıda iki kullanım biçimi gösterilmiştir. Q=triplequad(@(x,y,z)(y*sin(x)+z*cos(x)), 0, pi, 0, 1, -1, 1) Q = triplequad(@integrnd, 0, pi, 0, 1, -1, 1) Burada integrnd.m is bir “M-file”dır. function f = integrnd(x, y, z) f = y*sin(x)+z*cos(x);

trapz fonksiyonu quad fonksiyonları y(x) şeklinde analitik olarak tanımlanan fonksiyonları sayısal olarak integre ederler. Elimizde y(x) şeklinde bir fonksiyon yerine, vektörel olarak fonksiyonun belirli bir aralıkta hesaplanmış verisi varsa, bu veriyi trapz fonksiyonu ile integre edebiliriz.

85

>> trapz (X,Y) şeklindeki kullanımda, Y vektörünün X vektörü ile belirlenen aralıklardaki integrali hesaplanır. X ve Y aynı ölçüde vektörler olmalıdır.

2dx)xsin(I0

== ∫π

integrali trapz fonksiyonu ile aşağıdaki şekilde hesaplanır.

>> X = 0:pi/100:pi; >> Y = sin(X); >> Z = trapz(X,Y) 5.2 SAYISAL TÜREV Bir f(x) fonksiyonu xi noktası civarında seriye açılır ve f(xi+1) değeri hesaplanırsa,

+−

′′+−′+= +++

2i1i

ii1iii1i )xx(

2)x(f)xx)(x(f)x(f)x(f (5.27)

xi+1-xi=h olarak tanımlanırsa

+

′′+′+=+

2iii1i h

2)x(fh)x(f)x(f)x(f

(5.28)

Bu ifadeyi birinci türevden sonra keser

2ii1i Rh)x(f)x(f)x(f +′+=+

(5.29) ve düzenleyip tekrar yazarsak,

i1i

2

i1i

i1ii xx

Rxx

)x(f)x(f)x(f−

+−−

=′++

+

(5.30)

)xx(O

xx)x(f)x(f)x(f i1i

i1i

i1ii −+

−−

=′ ++

+

(5.31)

veya

)h(O

hf)h(O

xx)x(f)x(f)x(f i

i1i

i1ii +

∆=+

−−

=′+

+

(5.32)

elde ederiz, Bir f(x) fonksiyonunun xi noktasındaki türevi yaklaşık olarak (5.32) eşitliği ile ifade edilebilir. Bu gösterime sonlu bölünmüş fark denilen özel bir isim verilir. Burada, Δfi birinci ileriye doğru fark adını alır, h ise adım büyüklüğüdür. Terim ileriye doğru fark olarak ifade edilmiştir, çünkü türevi tahmin etmek için i ve i+1’deki verileri kullanmaktadır. Δf/h terimi birinci sonlu bölünmüş fark diye anılır.

86

f(x) fonksiyonunun ikinci türevi ileriye doğru bölünmüş farklarla ifade edilebilir. (5.32) eşitliği kullanılırsa,

)h(Oh

h)x(f)x(f

h)x(f)x(f

)h(Oh

)x(f)x(f)x(fi1i!i2i

i1ii +

′−′−

′−′

=+′−′

=′′+++

+

)h(O

h)x(f)x(f2)x(f)x(f 2

i1i2ii +

+−=′′ ++

(5.33)

olarak elde edilir. Benzer şekilde birinci türev geri ve merkezi farklarla da sırasıyla aşağıdaki şekilde ifade edilebilir.

)xx(O

xx)x(f)x(f)x(f 1ii

1ii

1iii −

− −+−−

=′ veya

)h(O

hf)x(f i

i +∇

=′

(5.34)

)xx(O

xx)x(f)x(f)x(f 1i1i

1i1i

1i1ii −+

−+

−+ −+−−

=′ veya

)h(O

h2f)x(f 2i

i +δ

=′

(5.35)

İkinci türev geri ve merkezi farklarla da sırasıyla aşağıdaki şekilde ifade edilebilir.

)h(O

h)x(f)x(f2)x(f)x(f 2

2i1iii +

+−=′′ −−

(5.36)

)h(O

h)x(f)x(f2)x(f)x(f 2

21ii1i

i ++−

=′′ −+

(5.37)

Merkezi farklarda kesme hatası mertebesinin h2 olduğuna dikkat etmek gerekir. Bu bize merkezi farklarla ikinci türev hesaplamanın daha doğru olacağı sonucunu verir. Daha yüksek doğrulukta bölünmüş fark türev formülleri, Taylor serisi açılımından daha fazla terim almak yoluyla türetilebilir. Örneğin ileriye doğru Taylor serisi açılımı aşağıdaki gibi yazılabilir.

+

′′+′+=+

2iii1i h

2)x(fh)x(f)x(f)x(f (5.38)

Bu eşitlikten birinci türev çözülürse,

)h(Oh

2)x(f

h)x(f)x(f)x(f 2ii1i

i +′′

−−

=′ +

(5.39)

87

elde edilir. Şimdi ikinci türev için aşağıdaki yaklaştırmayı eklemek yoluyla ikinci türevi koruyacağız. (5.33) eşitliğinden ikinci türevi alıp (5.39) denkleminde yerine yazarsak

)h(Ohh2

)x(f)x(f2)x(fh

)x(f)x(f)x(f 22

i1i2ii1ii +

+−−

−=′ +++

veya düzenlenerek,

)h(O

h2)x(f3)x(f4)x(f)x(f 2i1i2i

i +−+−

=′ ++

(5.40)

Dikkat edilirse, ikinci türev teriminin eklenmesi doğruluğu O(h2)’ye çıkarmaktadır. Benzer iyileştirmeler hem geriye ve merkezi formüller için hem de daha yüksek mertebeden türev yaklaştırmaları için yapılabilir.

Tablo 5.4 İleri fark bölünmüş sonlu fark formülleri

h)x(f)x(f)x(f i1i

i−

≅′ +

)h(O

h2)x(f3)x(f4)x(f)x(f i1i2i

i−+−

≅′ ++

)h(O 2

2

i1i2ii h

)x(f)x(f2)x(f)x(f +−≅′′ ++

)h(O

2i1i2i3i

i h)x(f2)x(f5)x(f4)x(f

)x(f+−+−

≅′′ +++

)h(O 2

3i1i2i3i

i h)x(f)x(f3)x(f3)x(f

)x(f−+−

≅′′′ +++

)h(O

3i1i2i3i4i

i h)x(f5)x(f18)x(f24)x(f14)x(f3

)x(f−+−+−

≅′′′ ++++

)h(O 2

4i1i2i3i4i

i)4(

h)x(f)x(f4)x(f6)x(f4)x(f

)x(f+−+−

≅ ++++

)h(O

4i1i2i3i4i5i

i)4(

h)x(f3)x(f14)x(f26)x(f24)x(f11)x(f2

)x(f+−+−+−

≅ +++++

)h(O 2

88

Tablo 5.5 Geri fark bölünmüş sonlu fark formülleri

h

)x(f)x(f)x(f 1iii

−−≅′

)h(O

h2)x(f)x(f4)x(f3)x(f 2i1ii

i−− +−

≅′

)h(O 2

2

2i1iii h

)x(f)x(f2)x(f)x(f −− +−≅′′

)h(O

23i2i1ii

i h)x(f)x(f4)x(f5)x(f2

)x(f −−− −+−≅′′

)h(O 2

33i2i1ii

i h)x(f)x(f3)x(f3)x(f

)x(f −−− −+−≅′′′

)h(O

34i3i2i1ii

i h)x(f3)x(f14)x(f24)x(f18)x(f5

)x(f −−−− +−+−≅′′′

)h(O 2

4

4i3i2i1iii

)4(

h)x(f)x(f4)x(f6)x(f4)x(f

)x(f −−−− +−+−≅

)h(O

45i4i3i2i1ii

i)4(

h)x(f2)x(f11)x(f24)x(f26)x(f14)x(f3

)x(f −−−−− −+−+−≅

)h(O 2

Tablo 5.6 Merkezi fark bölünmüş sonlu fark formülleri

h2)x(f)x(f)x(f 1i1i

i−+ −

≅′

)h(O

22i1i1i2i

i h)x(f)x(f8)x(f8)x(f)x(f −−++ +−+−

≅′

)h(O 2

21ii1i

i h)x(f)x(f2)x(f)x(f −+ +−

≅′′

)h(O

32i1ii1i2i

i h)x(f)x(f16)x(f30)x(f16)x(f)x(f −−++ −+−+−

≅′′

)h(O 2

32i1i1i2i

i h)x(f)x(f2)x(f2)x(f)x(f −−++ −+−

≅′′′

)h(O

43i2i1i1i2i3i

i h)x(f)x(f8)x(f13)x(f13)x(f8)x(f

)x(f −−−+++ +−+−+−≅′′′

)h(O 2

4

2i1ii1i2ii

)4(

h)x(f)x(f4)x(f6)x(f4)x(f)x(f −−++ +−+−

)h(O

43i2i1ii1i2i3i

i)4(

h)x(f)x(f12)x(f39)x(f56)x(f39)x(f12)x(f

)x(f −−−+++ −+−+−+−≅

)h(O 2

89

BÖLÜM 6

ADİ DİFERANSİYEL DENKLEMLERİN SAYISAL ÇÖZÜMÜ 6.1. GİRİŞ Bir diferansiyel denklem yalnız bir bağımsız değişken içeriyorsa “ adi diferansiyel denklem” birden fazla bağımsız değişken içeriyorsa “ kısmi diferansiyel denklem” olarak adlandırılır. Bir diferansiyel denklemin derecesi içerdiği en yüksek dereceli türevin derecesi olarak belirlenir.

0mgvmc

dtdvm =−+ (6.1)

0kxdtdxc

dtxdm 2

2=++ (6.2)

Eşitlik (6.1) ve (6.2) sırasıyla birinci ve ikinci dereceden ADD’ dir. Bu denklemlerde v ve x bağımlı değişken t ise bağımsız değişkendir. Denklem (6.1) düşen bir paraşütçünün hızının (v) zamanla (t) değişimini, Denklem (6.2) ise sönümlemeli bir kütle yay sisteminin konumunun (x) zamanla (t) değişimini göstermektedirler. Eğer bir diferansiyel denklem aşağıdaki forma uyuyorsa; an(x)y(n) + …. + a1(x)y′ + a0(x)y = f(x) (6.3) bu denklem “doğrusal (lineer) diferansiyel denklemdir” çünkü bu denklemde bağımlı değişken y ve türevlerinin çarpımı yoktur, ayrıca an katsayıları sadece x’ in fonksiyonudur. Bu denklemler, analitik olarak çözülebilirler. Eğer diferansiyel denklem doğrusal değilse, yani nonlineer diferansiyel denklem ise çoğunlukla analitik çözümü yoktur veya belli şartlar altında analitik olarak çözülebilirler. Örneğin aşağıdaki denklem bir sarkacın hareketini temsil eder. Burada θ bağımlı değişkeni yani sarkaç ipinin düşeyle yaptığı açıyı yani konumu, l sarkacın boyunu, t ise bağımsız değişkeni yani zamanı göstermektedir.

0sinlg

dtd

2

2=θ+

θ (6.4)

Bu denklem, sinθ teriminden dolayı doğrusal değildir. Denklem (6.3) ile verilen forma uydurulursa;

90

0)sinlg(

dtd

2

2=θθ

θ+

θ

elde edilir. Görüldüğü gibi ikinci katsayı (a0) içerisinde bağımlı değişken θ yer almaktadır bu nedenle (6.4) denklemi “ikinci mertebeden doğrusal olmayan ADD” dir. Bu denklemin analitik çözümü yoktur. Fakat çok küçük yer değişimleri için yani

θθ ≅sin için denklem doğrusal hale gelir ve çözülebilir. Sonuç olarak doğrusal olmayan DD’lerin analitik çözümü ancak belli şartlar altında olabilir. Bu denklemler bu nedenle sayısal teknikler kullanılarak çözülmektedirler. Bir adi diferansiyel denklemin çözümü, orijinal diferansiyel denklemi sağlayan bağımsız değişken ve parametrelerin bir fonksiyonudur. Bu kavramı anlatmak için bilinen bir fonksiyonla işe başlayalım: 1x5.8x10x4x5.0y 234 ++−+−= (6.5) Bu 4. mertebeden bir polinomdur ve diferansiyeli alınırsa, bir ADD elde ederiz;

5.8x20x12x2dxdy 23 +−+−= (6.6)

Az önce gösterdiğimiz gibi verilen bir fonksiyonun diferansiyel denklemini elde edebiliyorsak da, burada amacımız, verilen bir diferansiyel denklemin orijinal fonksiyonunu belirlemektir. Bu durumda orijinal fonksiyon çözümdür. Burada incelenen durumda, Eşitlik (6.6)'yı analitik olarak integre edersek orijinal fonksiyonu yani denklem (6.5)’i belirleyebiliriz:

dx)5.8x20x12x2(y 23∫ +−+−=

Aşağıdaki integral kuralını yukarıdaki her bir terime uygularsak;

Cx5.8x10x4x5.0y 234 ++−+−= (6.7) çözümünü elde ederiz. Bu, hemen göze çarpan bir farkla, orijinal fonksiyona özdeştir. Diferansiyel alma ve integre etme işlemleri sırasında orijinal fonksiyondaki sabit “1” 'i kaybettik ve C değerini kazandık. Bu C, integral sabiti diye adlandırılır. Aslında, böyle keyfi bir sabitin ortaya çıkması çözümün tek olmadığını göstermektedir. Aslında, sonsuz sayıdaki olası fonksiyondan (C 'nin sonsuz sayıda olası değerine karşılık gelen) sadece bir tanesi diferansiyel denklemi sağlar. Örneğin, Şekil 6.1, Eşitlik (6.7)'yi sağlayan altı farklı olası fonksiyonu göstermektedir. Bu nedenle, çözümü tam olarak belirlemek için, bir diferansiyel denklem genellikle yardımcı koşullarla birlikte verilir. Birinci dereceden ADD'ler için, sabiti belirlemek ve bir tek çözüm elde etmek amacıyla gerekli olan yardımcı koşul, başlangıç değeri diye

91

adlandırılır. Örneğin, Eşitlik (6.6), x = 0'da y = 1 başlangıç koşuluyla verilebilir. Bu değer Eşitlik 6.7'de yerine konursa:

1 = -0.5(0)4 + 4(0)3 -10(0)2 +8.5(0) +C

C=1 bulunur. Bu nedenle, hem diferansiyel denklemi hem de başlangıç koşulunu sağlayan özgün çözüm, Eşitlik 6.7’de C = 1 alınarak elde edilir:

1x5.8x10x4x5.0y 234 ++−+−= (6.8)

Şekil 6.1 Başlangıç koşuluna bağlı olarak bir ADD’in çözümleri

Böylelikle, Eşitlik (6.7)'yi başlangıç koşulundan geçmeye zorlamak suretiyle "tam anlamıyla tanımlamış" olduk ve bunu yapmakla, ADD'ye bir özgün çözüm geliştirdik, sonuçta orijinal fonksiyonu [Eşitlik (6.8)] elde ederek bir çevrimi tamamladık. Başlangıç koşulları genellikle, fiziksel problem verilerinden türetilen diferansiyel denklemler için akla yakın yorumlar içerir. Örneğin, düşen paraşütçü probleminde başlangıç koşulu, zaman sıfırken düşey hızın sıfır olduğu fiziksel gerçeğinin bir yansımasıdır. Eğer paraşütçü sıfır anında düşey yönde bir harekete sahip olsaydı, çözüm, bu başlangıç hızını hesaba katmaya uygun hale getirilecekti. n'inci dereceden bir diferansiyel denklemle uğraşılıyorsa, özgün bir çözüm için n adet koşul gereklidir. Eğer tüm koşullar bağımsız değişkenin hep aynı değeri için tanımlanmışsa (örneğin x=0 veya t = 0) bu problem bir başlangıç değer problemi diye adlandırılır. Örneğin Eşitlik (6.1) 1. dereceden ADD olduğu için 1 adet koşul yeterlidir. Bu koşul v(0) = 0 şeklinde verilmişse bu denklem başlangıç değer

92

problemidir. Çünkü verilen koşul başlangıçtaki (t = 0 anındaki ) hızın sıfır olduğunu belirtilmektedir. Diğer yandan Eşitlik (6.2)’yi çözmek için iki adet koşula gereksinim vardır. Çünkü bu denklem 2. dereceden ADD’dir. Bu koşullar örneğin;

t = 0’da x = a ve t = 0’da bdtdx

=

şeklinde verilmişse bu denklem de yine başlangıç değer problemidir. Çünkü verilen koşullar bağımsız değişkenin aynı değeri için yani t = 0 için hız ve konum değerlerini (kütlenin başlangıçtaki konum ve hızı) belirtmektedir. Koşullar bağımsız değişkenin farklı değerlerinde tanımlandığı denklemlere sınır değer problemleri denir. Bölüm 6 başlangıç değer problemlerine yoğunlaşacaktır. Sınır değer problemleri ise bu bölümün sonunda ele alınacaktır.

Şekil 6.2 Bir adımlı yöntemin grafik gösterimi

Bu bölüm

)y,x(fydxdy

=′= (6.9)

şeklinde ifade edilen ADD’lerin çözümüne ayrılmıştır. Bölüm 1’de düşen paraşütçünün hızı için geliştirdiğimiz denklemi çözmek amacıyla bir sayısal yöntem kullanmıştık. Bu yöntem, Yeni değer = Eski değer + eğim x adım büyüklüğü formunda veya matematiksel olarak hyy i1i φ+=+ (6.10)

93

şeklindeydi. Bu eşitliğe göre, h aralığı boyunca eski bir yi değerinden yeni bir yi+1

değerini bulabilmek için eğim tahmini φ kullanılır (Şekil 6.2). Bu formül, ileriye doğru adım adım uygulanabilir ve böylece çözümün yörüngesi çizilebilir. Bütün bir adımlı yöntemler, bu genel formda ifade edilebilir, aralarındaki tek fark, eğim tahminindeki yöntemin farklı olmasıdır. Bu bölümde tanıtılacak yöntemler başlangıç değer problemlerinin çözümünde kullanılır.

6.2. BAŞLANGIÇ DEĞER PROBLEMLERİNİN SAYISAL ÇÖZÜMLERİ 6.2.1 EULER YÖNTEMİ Birinci türev, xi’deki eğimin doğrudan tahminini verir (Şekil 6.3): )y,x(f ii=φ (6.11) Burada f (xi ,yi), bu noktada hesaplanmış olan diferansiyel denklemdir. Bu tahmin Eşitlik (6.10(‘da yerine konursa, h)y,x(fyy iii1i +=+ (6.12) elde edilir. Bu formül Euler yöntemi olarak bilinir.

Şekil 6.3 Euler yöntemi

Örnek 6.1: Eşitlik (6.6)'yı sayısal olarak integre etmek için Euler yöntemini kullanın:

5.8x20x12x2dxdy 23 +−+−=

denklemini, adım büyüklüğünü 0.5 alarak x =0’dan x = 4'e kadar integre edin (çözün). Başlangıç koşulu x = 0 için y = l'dir. Kesin çözümün, Eşitlik (6.5) ile verilen

94

1x5.8x10x4x5.0y 234 ++−+−= olduğunu anımsayın. Çözüm. Euler yöntemini uygulamak için Eşitlik 6.12 kullanılabilir: 5.0)1,0(f)0(y)5.0(y ×+= Burada y(0)=1.0 ve x=0’daki eğim tahmini 5.85.8)0(20)0(12)0(2)1,0(f 23 =+−+−= olur. Dolayısıyla 25.55.05.80.1)5.0(y =×+= ve x=0.5’teki gerçek çözüm 21875.31)5.0(5.8)5.0(10)5.0(4)5.0(5.0y 234 =++−+−= olarak elde edilir. Böylece, hata Et = gerçek – yaklaşık = 3.21875 - 5.25 = -2.03125 veya bağıl olarak ifade edilirse εt=%-63.1 bulunur. İkinci adım için,

[ ]875.5

5.05.8)5.0(20)5.0(12)5.0(225.5

5.0)25.5,5.0(f)5.0(y)0.1(y23

=×+−+−+=

×+=

Tablo 6.1 Örnek 6.1’deki başlangıç değer probleminin Euler yöntemi ile çözümünün tam çözümle karşılaştırılması

x yGerçek yEuler Bağıl Hata ( % εt)

0.0 1.00000 1.00000 0.5 3.21875 5.25000 -63.1 1.0 3.00000 5.87500 -95.8 1.5 2.21875 5.12500 -131.0 2.0 2.00000 4.50000 -125.0 2.5 2.71875 4.75000 -74.7 3.0 4.00000 5.87500 46.9 3.5 4.71875 7.12500 -51.0 4.0 3.00000 7.00000 -133.3

95

Şekil 6.4 Örnek 6.1’deki başlangıç değer probleminin Euler yöntemi ile çözümünün tam çözümle karşılaştırılması

Yukarıdaki örnek, hata analizini kolaylaştırmak amacıyla diferansiyel denklem için basit bir polinom kullanmaktadır. Yani:

)x(fdxdy

=

Doğal olarak, daha genel (ve daha yaygın) bir durum, hem x hem de y'ye bağlı olan ADD'leri içerir:

)y,x(fdxdy

=

Bu konu boyunca işleyeceğimiz gibi, örneklerimiz, artan bir şekilde, hem bağımsız hem de bağımlı değişkene bağlı ADD'leri içerecektir. Euler yönteminde hata;

22iia h

!2yh

!2)y,x(fE

′′=

′= veya )h(OE 2

a = (6.13)

şeklinde ifade edilir. Burada f(x,y)’nin, verilen ADD olduğu unutulmamalıdır. Buna göre yukarıdaki örnekteki ilk adımda yapılan hata;

20x24x6)y,x(f 2 −+−=′

( ) 5.25.0

320)0.0(24)0.0(6E 2

2

a −=−+−

=

Burada Ea yerel kesme hatasıdır. Yani ilgili adımda yapılan kesme hatasıdır.

96

Örnek 6.2

diferansiyel denklemini ilgili başlangıç koşulunu kullanarak Euler yöntemi ile çözen, bu çözüm ile birlikte analitik çözümü de gösteren bir grafik oluşturan bir MATLAB programı yazınız. (h=0.05π alınacak ve π’ye kadar çözülecektir). Çözüm:

function [t,y] = example_6_2 (tspan, y0, h) clc % Bu program bir ADD'yi integre etmek için Euler yöntemi'ni kullanır. % Programı çalıştırmak için komut satırına [t,y]= example_6_2 ([0 pi],1,0.05*pi) % yazmak gerekir. Burada [0 pi]çözüm için bağımsız değişken aralığını, % 1 başlangıç anındaki bağlı değişken değerini( başlangıç koşulunu) %0.05*pi ise sayısal çözümde kullanılan adım uzunluğunu göstermektedir. % ADD tanımlanıyor. f= @(t,y) -y+sin(t) ; %analitik çözümün çizdirilmesi için bağımsız değişkenin aralıkları tanımlanıyor. tt=0:0.01*pi:pi; % ADD analitik olarak çözülüyor. ye=dsolve('Dye = -ye+sin(tt)', 'ye(0) = 1','tt') % Başlangıç ve son bağımsız değişken değerleri ti=tspan(1); tf=tspan(2); % Çözümün yapılacağı zamanlar tanıtılıyor. t=ti:h:tf; % çözüm yapılacak zaman sayısı n=length (t); % Eğer gerekliyse t'ye bir ek aralık ekleniyor. if t(n)<tf t(n+1)=tf; n=n+1; end y=y0*ones(n,1); % y, elemanları y0 olan bir kolon vektör olarak tanımlandı. for i=1: n-1% Euler yöntemi uygulanıyor. y(i+1)=y(i)+f(t(i),y(i))*(t(i+1)-t(i)); a=tspan(1); b=tspan(2);h=(b-a)/n; end disp( 'step t y') k=1:length(t);out=[k; t; y']; fprintf('%2d %15.10f %15.10f\n',out) G=ezplot(ye, [0 pi]); set(G,'LineWidth',3) hold on grid on H=plot(t,y,'r-o'); set(H,'LineWidth',2,'MarkerSize',3) print -djpeg ode01.jpg

1)0(y ; tsinydtdy

=+−=

97

Yukarıda listesi verilen program koşturulduğunda Şekil 6.5 elde edilir. Adı küçültülürse kesme hataları küçüleceğinden sayısal çözüm gerçek çözüme yaklaşır.

0 0.5 1 1.5 2 2.5 30.55

0.6

0.65

0.7

0.75

0.8

0.85

0.9

0.95

1

y

t

Şekil 6.5 dy/dt=-y+sin(t); y(0)=1 başlangıç değer probleminin sayısal (Euler yöntemi) ve tam çözümlerinin karşılaştırılması

6.2.2 HEUN YÖNTEMİ Euler yöntemindeki hatanın temel bir kaynağı, aralığın başındaki türevin bütün aralık boyunca uygulanacağının varsayılmasıdır. Eğim tahminini iyileştirmenin bir yolu, biri aralığın başında diğeri sonunda olmak üzere aralık için iki türev hesaplamaktır. Göz önüne alınan aralık için iyileştirilmiş bir eğim elde etmek amacıyla, daha sonra bu iki türevin ortalaması alınır. Bu yaklaşım Heun yöntemi diye bilinir ve Şekil 6.6'da grafik olarak açıklanmıştır. Euler yönteminden anımsarsanız, aralığın başındaki eğim )y,x(fy iii =′ (6.14) şeklindedir ve 0

1iy + 'in doğrusal ekstrapolayon ile bulunması için kullanılır: h)y,x(fyy iii

01i +=+ (6.15)

Standart Euler yönteminde bu noktada duracaktık. Ancak, Heun yönteminde Eşitlik (6.15) ile hesaplanan y1+1 son yanıt değil, bir ara tahmindir. Bu nedenle onu 0 üst indisiyle gösterdik. Eşitlik (6.15), deneme denklemi diye adlandırılır ve aralığın sonundaki tahminî eğimi hesaplamamıza yarayan bir yj+1 tahmini verir:

98

)y,x(fy 01i1i1i +++ =′ (6.16)

Böylelikle, iki eğim [Eşitlik 6.14 ve 6.16], aralık için ortalama bir eğim elde etmek amacıyla birleştirilebilir:

2

)y,x(f)y,x(f2

)y,x(y)y,x(y2yyy

01i1iii

01i1iii1ii +++++ +

=′+′

=′+′

=′ (6.17)

Daha sonra bu ortalama eğim, Euler yöntemi uygulanarak yi 'den yi+i 'i doğrusal ekstrapolasyonla elde etmek için kullanılır:

h2

)y,x(f)y,x(fyy0

1i1iiii1i

+++

++= (6.18)

Buna ise, düzeltme denklemi adı verilir. Heun yöntemi bir deneme-düzeltme yaklaşımıdır. Heun yöntemi, tek bir adımlı deneme-düzeltme yöntemidir ve yukarıda tanımlandığı gibi, kısaca şöyle ifade edilebilir: Deneme h)y,x(fyy iii

01i +=+ (6.19)

Düzeltme h2

)y,x(f)y,x(fyy0

1i1iiii1i

+++

++= (6.20)

Dikkat ederseniz Eşitlik 6.20'de eşitliğin her iki yanında da yi+1 olduğu için, bu denklem ancak, iteratif olarak uygulanabilir. Yani, eski bir tahmin, yi+1 'in iyileştirilmiş bir tahminini elde etmek için tekrar kullanılmaktadır. Bu işlem Şekil 6.6'da açıklanmıştır. Anlaşılması gereken nokta bu iteratif işlemin doğru yanıta gerektiği kadar yakınsamadığı, ancak aşağıdaki örnekte gösterildiği gibi, sonlu bir kesme hatasıyla bir tahmine yakınsadığıdır. Düzeltme işleminin yakınsaması için aşağıdaki gibi bir durdurma kriteri tanımlanır:

100%y

yyj

1i

1j1i

j1i

a ×−

=ε+

−++ (6.21)

Burada, yi ve y i+1 sırasıyla düzeltme işleminin şimdiki ve bir önceki iterasyonun sonuçlarıdır. Heun yöntemine ait algoritma aşağıdaki şekilde ifade edilebilir.

Adım-1: Eşitlik (6.19)’dan 01iy + hesapla

Adım-2: Eşitlik (6.20)’den 1iy + hesapla

Adım-3: Eşitlik (6.21)’den εa hesapla

Adım-4: Eğer εa yeterince küçükse dur değilse; 01iy + = 1iy + alarak “Adım-2” ye git.

99

Eğim

Eğim Eğim

Şekil 6.6 Heun yönteminin grafiksel açıklaması (a) deneme (b) düzeltme

Örnek 6.3 dy/dx = 4e0.8x - 0.5y 'yi x=0 ' dan x = 4 'e kadar adım büyüklüğünü 1 alarak integre etmek için Heun yöntemini kullanın. Başlangıç koşulu x = 0 'da y = 2 'dir. Çözüm: Problemi sayısal olarak çözmeden önce, yüksek matematik kullanarak aşağıdaki analitik çözümü elde edebiliriz:

x5.0x5.0x8.0 e2)ee(3.1

4y −− +−=

Önce, (x0,y0) daki eğim, aşağıdaki gibi hesaplanır: 3)2(5.0e4y 0

0 =−=′

Bu sonuç, 0'dan 1.0'a kadar olan aralıkta hesaplanmış olan gerçek ortalama eğim değeri 4.1946'dan oldukça farklıdır. y 'nin x = l'deki tahminini [y(1)=?] elde etmek için deneme denklemi [Eşitlik (6.19)] kullanılarak sayısal çözüm bulunur:

5)1(32y01 =+=

Bu değerin, standart Euler yöntemiyle elde edilebilecek sonuç olduğuna dikkat edin. Şimdi, 0

1y tahminini iyileştirmek için, aralığın sonunda tahmin edilmiş olan 01y değerini kullanacağız.

402164.6)5(5.0e4)y,x(fy )1(8.00111 =−==′

100

değeri, x = 0 'den 1.0 'a kadar olan aralıkta ortalama eğim değerini bulmak için başlangıç eğimiyle birleştirilebilir. Böylece,

701082.42402164.63y =

+=′

değeri bulunur. Bu değer, gerçek ortalama eğim 4.1946'ya daha yakındır. Bu sonuç daha sonra, x=l.0'deki tahmini elde etmek için düzeltme denkleminde [Eşitlik (6.20)] yerine konur:

701082.6)1(701082.42y1 =+= Bu sonuç; % -8.18 'lik bir bağıl hataya sahiptir. Bu nedenle, Euler yöntemiyle karşı-laştırıldığında, iterasyonsuz Heun yöntemi, hatanın mutlak değerini 2.4 katı kadar düşürmektedir. Şimdi, yeni tahmin değeri Eşitlik (6.20)'nin sağ tarafında yerine konarak, bu tahmin, y1 öngörüsünü düzeltmek veya hassaslaştırmak için kullanılabilir:

275811.61

2)]701082.6(5.0e43[2y

)1(8.0

1 =−+

+=

Bu değer ise, yüzde 1.31 lik bir mutlak bağıl hataya sahiptir. Bu sonuç, daha doğru bir tahmin için yeniden Eşitlik (6.20)'de yerine konursa,

382129.61

2)]275811.6(5.0e43[2y

)1(8.0

1 =−+

+=

bulunur. Bu ise, %3.03lük bir hataya sahiptir. İterasyon yapıldıkça hataların bazen nasıl arttığına dikkat edin. Bu tür artışlar, özellikle büyük zaman adımlarında ortaya çıkabilir ve bizi, ek iterasyonların sonucu her zaman iyileştireceği şeklindeki bir genel sonuçtan uzaklaştırır. Ancak, yeteri kadar küçük bir adım büyüklüğü için iterasyonlar düzenli olarak tek bir değere yakınsamalıdır. Burada, 6.360865 sonucu %2.68'lik bir bağıl hataya sahiptir ve 15 iterasyon sonunda elde edilmiştir. Tablo 6.2, her adımda 1. ve 15. iterasyonla bu yöntem kullanılarak hesaplanmış hatalar için sonuçları göstermektedir.

Tablo 6.2 y' = 4e0.8x - 0.5y y(0)=2 başlangıç değer probleminin gerçek ve Heun yöntemi ile elde edilen yaklaşık değerlerinin karşılaştırılması.

Heun Yönteminin İterasyon sayısı

1 15

x ygerçek yheun % | εt | yheun % | εt | 0 1 2 3

4

2.0000000 6.1946314

14.8439219 33.6771718 75.3389626

2.0000000 6.7010819

16.3197819 37.1992489 83.3377674

0.00 8.18 9.94

10.46 10.62

2.0000000 6.3608655

15.3022367 34.7432761 77.7350962

0.00 2.68 3.09 3.17 3.18

101

6.2.3 RUNGE-KUTTA YÖNTEMLERİ Runge-Kutta yöntemleri, yüksek dereceli türevlerin hesaplanmasına gerek olmaksızın Taylor serisi yaklaşımının doğruluğunu yakalamaktadır. Bu yöntemlerin çok çeşidi vardır, ancak tümü Eşitlik (6.11)’in genel formunda yazılabilir: yi+1 = yi+Ф(xi,yi,h)h (6.22) Burada Ф(xi,yi,h) artım fonksiyonu diye adlandırılır ve aralık boyunca temsili türev olarak yorumlanabilir. Artım fonksiyonu aşağıdaki genel formda yazılabilir: Ф(xi,yi,h) = aıkı +a2k2 +--- + ankn (6.23) Burada a'lar sabittir, k'ler ise aşağıdaki gibidir: kx = f(xi,yi) (6.23a) k2=f(xi+pıh,yi+q11k1h) (6.23b) k3 = f(xi + p2h, yi + q21k1h + q22k2h) (6.23c) ……. ……. kn = f(xi + pn-1h, yi + qn-1,1k1h + qn-1,2k2h+…++ qn-1,n-1kn-1h) (6.23d) Burada p'ler ve q'lar sabittir, k'lerin tekrarlamalı bağıntılar olduğuna dikkat edin. Yani, k2, eşitliğinin içinde kı, k3 eşitliğinin içinde k2 şeklinde devam etmektedir. Her k fonksiyonel bir hesaplama olduğundan, bu tekrarlar RK yöntemlerini, bilgisayar hesaplamaları için etkili hale getirmektedir. n ile tanımlanmış artım fonksiyonunda farklı sayıda terim almak suretiyle Runge-Kutta yönteminin değişik türleri elde edilebilir. Dikkat ederseniz, n = 1 olan birinci dereceden Runge-Kutta yöntemi, aslında Euler yöntemidir. Bir n değeri seçilir, a'lar, p'ler ve q'lar, Taylor serisi açılımındaki terimlere eşit alınarak hesaplanır. Böylece, en azından düşük dereceli versiyonlar için terim sayısı n, yaklaşımın derecesini göstermektedir. Örneğin, bir sonraki bölümde ikinci dereceden RK yöntemleri iki terimli (n - 2) bir artım fonksiyonu kullanmaktadır. Bu ikinci dereceden yöntemler, eğer diferansiyel denklemin çözümü ikinci derecedense kesin çözümdür. 6.2.3.1 Dördüncü dereceden Runge-Kutta Yöntemleri En çok rağbet gören RK yöntemleri dördüncü derecedendir, ikinci dereceden yaklaşımlarda olduğu gibi, sonsuz sayıda versiyon vardır. Aşağıdaki form en yaygın kullanılanıdır ve bu nedenle de biz onu klasik dördüncü dereceden RK yöntemi diye adlandırıyoruz:

h)kk2k2k(

61yy 4321i1i ++++=+

(6.24)

)y,x(fk ii1 = (6.24a)

102

)hk

21y,h

21x(fk 1ii2 ++= (6.24b)

)hk

21y,h

21x(fk 2ii3 ++= (6.24c)

)hky,hx(fk 3ii4 ++= (6.24d)

olarak verilir. Dikkat ederseniz, yalnızca x'in fonksiyonu olan ADD'ler için klasik dördüncü dereceden RK yöntemi Simpson'un 1/3 kuralına benzerdir. Ayrıca, integral aralığı için iyileştirilmiş bir eğim elde etmek amacıyla geliştirilmiş olan çoklu tahmin açısından, dördüncü dereceden RK yöntemi Heun yöntemiyle benzerdir. Şekil 6.7’de gösterildiği gibi, k'lerin her biri bir eğimi göstermektedir. Öyleyse, Eşitlik (6.24) iyileştirilmiş bir eğim elde etmek için bunların bir ağırlıklı ortalamasıdır.

Şekil 6.7 Klasik dördüncü dereceden Runge-Kutta yönteminin grafiksel açıklaması

Örnek 6.4 Klasik Dördüncü Dereceden RK Yöntemi

(a) dy/dx = f(x, y) = -2x3 + 12x2 - 20x + 8.5 denklemini, adım büyüklüğünü h = 0.5 alarak, x = 0'da y = 1 başlangıç koşuluyla integre etmek için klasik dördüncü dereceden RK yöntemini kullanın.

(b) Benzer şekilde, dy/dx = f(x, y) = 4e0.8x - 0.5y denklemini, adım büyüklüğünü h = 0.5 alarak, y(0) = 2 başlangıç koşuluyla x = 0'dan x = 0.5'e kadar integre edin.

Çözüm:

(a) Eşitlik (6.24a)-(6.24d)’de verilen yardımcı denklemleri kullanılarak

x0 = 0 ve k1 = f(0) = 8.5;

xorta = x0+h/2 = 0.25 ve k2 = f(0.25) = 4.21875 ,

xorta = x0+h/2 = 0.25 ve k3 = f(0.25) = 4.21875 ve

xson = x0 +h = 0.5 ve k4 = f(0.5) = 1.25 hesaplanır. Bunlar Eşitlik (6.24)'de yerine konursa,

y(0.5) =1 + {(1/6)[8.5 + 2(4.21875) + 2(4.21875) +1.25]} 0.5 = 3.21875

103

bulunur, bu değer kesin sonuçtur. Şu halde, gerçek çözüm dördüncü dereceden olduğu için, dördüncü dereceden yöntem kesin sonucu vermektedir.

(b) Bu problem için, aralığın başındaki eğim şöyle hesaplanır:

i = 0 ve (x0,y0) = (0,2)

k1 = f(0,2) = 4e0.8(0) -0.5(2) = 3

Bu değer, bir y değeri ve aralığın ortasında bir eğim hesaplamak için kullanılır:

xorta = x0 + h/2 = 0.25

yorta = y0+k1*h/2= 2 + 3(0.25) = 2.75

k2 = f(0.25, 2.75) = 4e0.8(0.25) -0.5(2.75) = 3.510611

Bu eğim, aynı şekilde diğer bir y değerini ve aralığın ortasındaki bir eğimi hesaplamak için kullanılır:

xorta = x0 + h/2 = 0.25

yorta = y0+k2*h/2 = 2 + 3.510611(0.25) = 2.877653

k3 = f(0.25, 2.877653) = 4e0.8(0.25) - 0.5(2.877653) = 3.446785

Şimdi, bu eğim, aynı şekilde bir y değerini ve aralığın sonundaki eğimi hesaplamak için kullanılır.

xson = x0 + h = 0. 5

yson = y0+k3*h = 2 + 3.446785(0.25) = 2.8617

k4 = f(0.5, 2.8617) = 4e0.8(0.5) -0.5(2.8617) = 4.536

Son olarak, bu dört eğim tahmini, ortalama bir eğim bulmak için birleştirilir. Bu ortalama eğim, daha sonra aralığın sonundaki son tahmin olarak kullanılır:

Ф = (1/6)[3 + 2(3.510611) + 2(3.446785) + 4.536] = 3.575

y(0.5) = 2 + 3.5575(0.5) = 3.787566

6.2.4 DENKLEM SİSTEMLERİ Mühendislik ve bilimdeki birçok problem, tek bir denklem yerine eşzamanlı adi diferansiyel denklemler sisteminin çözümünü gerektirir. Bu tür sistemler genel olarak aşağıdaki formda ifade edilebilir:

)y, ,y,y(x,f dx

dy

)y, ,y,y(x,f dx

dy

)y, ,y,y(x,f dxdy

n21nn

n2122

n2111

=

=

=

(6.25)

104

Bu tür bir sistemin çözümü, x'in bir başlangıç değerinde bilinen n adet başlangıç koşulu gerektirir. Bu bölümdeki 4. dereceli Runge-Kutta yöntemi denklem sistemlerine uygulanabilir. Ancak, eğimleri hesaplarken dikkatli olunmalıdır. Yani, önce başlangıç değerindeki her bir değişken için eğimleri buluyoruz. Bu eğimler (k1,'ler seti) daha sonra aralığın orta noktasındaki bağımlı değişkenin tahmini için kullanılır. Bu kez, bu orta nokta değer-leri, orta noktadaki eğimleri (k2'ler) hesaplamak için kullanılır. Bu yeni eğimlerle yeniden başlangıç noktasına dönülerek orta noktada bağımlı değişkenin yeni tahminî değerleri hesaplanır, bunlar ise orta noktada yeni eğim tahminleri (k3'ler) yapmaya yarar. Bu eğimler daha sonra, aralığın sonundaki bağımlı değişken tahminleri yapmak için kullanılır, bunlar da aralığın sonundaki eğimleri (k4'ler) tahmin etmeye yarayacaktır. Son olarak, bu k'ler artım fonksiyonunda [Eşitlik 5.20'da olduğu gibi] kullanılır ve son tahmini yapmak için başa dönülür. Aşağıdaki örnek bu yaklaşımı göstermektedir. Örnek 6.5. Aşağıdaki diferansiyel denklemleri dördüncü dereceden RK yöntemini kullanarak çözün. x = 0 için y1 = 4 ve y2 = 6 olduğunu varsayın. Adım büyüklüğünü 0.5 alarak x = 2'ye kadar integre edin.

12

2

11

y1.0y3.04 dx

dy

0.5y dxdy

−−=

=

Çözüm. Önce, aralığın başındaki eğimler için çözüm yapmak zorundayız:

8.1)4(1.0)6(3.04)6,4,0(fk 2)4(5.0)6,4,0(fk

21,2

11,1

=−−−==

−=−==

Burada ki,j , j inci bağımlı değişken için k'nin i'inci değeridir. Şimdi, y1, ve y2 'nin orta noktadaki ilk değerini hesaplamak zorundayız:

45.625.0)8.1(6

2hky

5.325.0)2(4

2hky

1,22

1,11

=+=+

=−+=+

Şimdi bu değerler orta noktadaki eğimlerin ilk değerini hesaplamak için kullanılabilir:

715.1)45.6,5.3,25.0(fk75.1)45.6,5.3,25.0(fk

22,2

12,1

==

−==

Bu değerler, orta noktadaki tahminlerin ikinci değerini hesaplamak için kullanılır:

105

42875.625.0)715.1(6

2hky

5625.325.0)75.1(4

2hky

2,22

2,11

=+=+

=−+=+

715125.1)42875.6,5625.3,25.0(fk78125.1)42875.6,5625.3,25.0(fk

23,2

13,1

==

−==

Bunlar, aralığın son noktasındaki tahminleri belirlemek için kullanılır.

857563.65.0)715125.1(62hky

5625.35.0)78125.1(42hky

3,22

3,11

=+=+

=−+=+

Bu değerler son noktadaki eğimleri hesaplamak için kullanılabilir:

631794.1)857563.6,109375.3,5.0(fk554688.1)857563.6,109375.3,5.0(fk

24,2

14,1

==

−==

Daha sonra, k değerleri kullanılarak [Eşitlik 6.24]:

[ ]

[ ] 857670.65.0634794.1)715125.1715.1(28.1616)5.0(y

115234.35.0554688.1)78125.175.1(22614)5.0(y

2

1

=++++=

=−−−+−+=

hesaplanır. Kalan adımlar için benzeri işlemler yapılırsa aşağıdaki tabloda verilen sonuçlar elde edilir:

Tablo 6.3 Örnek 6.5’in çözümünden elde edilen sonuçlar x y1 y2 0 4.000000 6.000000

0.5 3.115234 6.857670 1.0 2.426171 7.632106 1.5 1.889523 8.326886 2.0 1.471577 8.946865

6.2.5 YÜKSEK MERTEBEDEN ADİ DİFERANSİYEL DENKLEMLER Yüksek mertebeli denklemler birinci mertebeden denklemlere indirgenerek yukarıda denklem sistemleri için anlatılan yöntemle çözülebilirler. Fakat verilen diferansiyel

106

denklem mutlaka bir başlangıç değer problemi olmalıdır. Örneğin aşağıdaki denklemi göz önüne alalım:

0kxdtdxc

dtxdm 2

2=++ (6.26)

Verilen denklem 2. dereceden ADD olduğundan denklemin çözümü için en az iki başlangıç şartı verilmelidir. Bunlar: x(0) = a ve x′(0) = b olsun. Burada a ve b bir sabit sayıdır.

dtdxy = (6.27)

şeklinde değişken dönüşümü yapılarak (6.26) denkleminde yerine yazılırsa;

0kxcydtdym =−+ (6.28)

elde edilir. Böylece, orijinal ikinci mertebe denklem yerine ona eşdeğer olan birinci mertebeden iki denklem (6.26) ve (6.27) elde edilmiş olur. Elde edilen denklem takımı ve başlangıç koşulları aşağıdaki şekilde yazılabilir.

a)0(xydtdx

== (6.29)

b)0(yxmky

mc

dtdy

=+−=

Bu denklem takımı Örnek 6.5’teki prosedür uygulanarak çözülebilir. 6.2.6 UYARLANMIŞ YÖNTEMLER ve KATILIK

107

Şekil 6.8 Ani değişim gösteren bir ADD’nin çözümü için bir örnek. Bu tür durumlar için otomatik adım büyüklüğünün önemli avantajı vardır.

Buraya kadar ADD’lerin çözümü için adım büyüklüğünün sabit olduğu yöntemler sunuldu. Problemlerin önemli bir kısmı için bu ciddi bir sınırlamadır. Örneğin Şekil 6.8’de gösterilen türde bir ADD’nin integraliyle ilgilendiğimizi varsayalım. Aralığın büyük kısmında çözüm yavaş yavaş değişmektedir. Bu tür bir davranış, uygun sonuçlar almak için oldukça büyük bir adım büyüklüğü kullanılabileceğini göstermektedir. Ancak x=1.75 ile x=2.25 arasındaki bölgede, çözüm ani bir değişim göstermektedir. Bu tür fonksiyonlarla uğraşıldığında ortaya çıkan pratik sonuç, bu ani değişimi doğru şekilde elde etmek için çok küçük adım büyüklüğünün gerektiğidir. Eğer sabit bir adım büyüklüğü seçilirse, ani değişimin büyük olduğu bölge için gerekli olan daha küçük bir adım büyüklüğünün tüm bölgede uygulanması gerekecektir. Sonuç olarak, değişimin düzenli olduğu bölgelerde de gerekli olandan çok daha küçük bir adım büyüklüğü alınacak ve dolayısıyla daha fazla hesaplama yapılacaktır. Adım büyüklüğünü otomatik olarak algılayan algoritmalar bu tür zorlukların üstesinden gelir ve bu nedenle de avantajlıdır. Çözüm yoluna uyarlandıkları için buna uyarlanmış adım büyüklüğü kontrolü denir. Bu tür yaklaşımların kullanılması her bir adımda kesme hatasının tahmin edilmesini gerektirir. Bu hata tahmini daha sonra, adım büyüklüğünün artırılması ya da küçültülmesi için esas oluşturur. Bu yöntemlere “Uyarlanmış Runge-Kutta Yöntemi” ile “Runge-Kutta-Fehlberg Yöntemi” örnek olarak gösterilebilir. Burada bu yöntemler incelenmeyecektir. Sadecea, MATLAB’in hazır fonksiyonlarında bu algoritmaların kullanıldığını hatırlatmak için bu alt bölüme ihtiyaç duyulmuştur. Bu yöntemler katı bir sistem için kullanılabilirlerse de, katı sistemler için yine burada incelemeyeceğimiz kapalı yöntemlerin çoğunlukla kullanıldıklarını belirtmek yararlı olacaktır. Katı bir sistem, yavaş değişen bir bileşenle, hızlı değişen bileşenleri içeren bir sistemdir. Hem bir ADD hem de bir ADD sistemi katı olabilir. Tek bir katı ADD’ye bir örnek:

te20003000y1000

dtdy −−+−=

(6.30)

ifadesidir. Eğer y(0)=0 ise, analitik çözüm aşağıdaki gibi elde edilebilir.

tt1000 e002.2e998.03y −− −−=

Şekil 6.9’da görüldüğü gibi, başlangıçta hızlı üstel terim çözümde etkilidir. Kısa bir süre sonra bu geçici rejim ortadan kalkar ve çözüm yavaş üstel terim tarafından yönetilir. Bu tür bir çözümün kararlılığı için adım büyüklüğünün ne olması gerektiği incelenmeli ve uyarlanmış ve/veya kapalı algoritmalardan yararlanılmalıdır.

108

Şekil 6.9 Tek bir katı ADD’nin çözümünün grafik gösterimi

6.2.7 MATLAB FONKSİYONLARI İLE ADD’LERİN ÇÖZÜMÜ (BAŞLANGIÇ DEĞER PROBLEMLERİ MATLAB’da birinci mertebeden diferansiyel denklem sistemi çözen birçok fonksiyon mevcuttur. n. mertebeden bir diferansiyel denklem n tane birinci mertebeden denklemle ifade edilebildiği için, bütün başlangıç değer problemi olan ADD’ler MATLAB fonksiyonları ile çözülebilir. Bu fonksiyonlar funfun araç kutusu içinde yer alır ve hepsi de ode ( ordinary differential equation) ön eki ile başlar.

Tablo 6.4 MATLAB’ın ADD (Başlangıç Değer Problemi) çözen fonksiyonları Fonksiyon Hassaslık Açıklama ode45 Orta Katı olmayan ADD’leri çözen fonksiyondur. Katılık

hakkında bir bilgi yoksa ilk bu fonksiyon denenmelidir. 4. ve 5. mertebe RK yöntemi kullanır.

ode23 Düşük Katı olmayan ADD’leri çözen fonksiyondur. 2. ve 3. mertebe RK yöntemi kullanır.

ode113 Değişken Katı olmayan ADD’leri çözen fonksiyondur. Değişken mertebeleri kullanan bir fonksiyondur.

ode23t Düşük Orta seviyede katı olan ADD’leri çözen fonksiyondur. ode15s Düşük-Orta Katı ADD’leri çözen fonksiyondur. ode23s Düşük Katı ADD’leri çözen fonksiyondur ode23tb Düşük Katı ADD’leri çözen fonksiyondur

Bu fonksiyonların kullanımı aşağıdaki şekilde özetlenebilir. [t,Y] = solver(odefun,tspan,y0) [t,Y] = solver(odefun,tspan,y0,options) sol = solver(odefun,[tilk tson],y0...) solver ode45, ode23, ode113, ode15s, ode23s, ode23t, or ode23tb fonksiyonlarından herhangi birisidir.

109

odefun İntegre edilecek n. mertebeden ADD’nin n adet birinci mertebeye indirgenmiş halinin m-dosya içinde kodlanmış fonksiyonun tutamacıdır. [tilk tson] Bağımsız değişkenin tanım aralığını gösterir. t ile temsil edilir, ancak bağımsız değişkenin ille de zaman olması gerekmez. y0 Çözümü aranan ADD’ye ait başlangıç koşullarını tanımlayan vektördür. Boyutu diferansiyel denklemin mertebesi ya da diferansiyel denklem takımının denklem sayısına eşittir. options Bu yapı, diferansiyel denklem integre edilirken ekrana yazdırılacak istatistiksel mesajlar, toleranslar, maksimum adım miktarı gibi özellikleri ayarlamak için kullanılır. Örnek 6.6 Şekilde görülen sönümlü bir yay-kütle sisteminin hareketi, şeklin yanındaki adi diferansiyel denklemle tanımlanır.

Şekil 6.9 Bir yay-kütle sistemi ve hareketi ifade eden diferansiyel denklem Burada x = denge konumundan olan uzaklık (m) t = zaman (s), m = 10 kg kütle c = 5, 40, 200 N.s/m sönüm katsayısı k = 40 N/m'dir yay sabiti. Başlangıç hızı sıfır ve başlangıç yer değiştirmesi x = 1 m'dir. MATLAB’da “ode45” adlı fonksiyonu kullanarak problemi çözünüz. Aynı eğri üzerinde sönüm katsayısının her üç değeri için zamana göre yer değiştirmenin grafiğini çizin. Çözüm:

0kx

dtdxc

dtxdm 2

2=++

Verilen denklem 2. dereceden ADD olduğundan denklemin çözümü için iki başlangıç şartı verilmelidir. Bunlar: x(0) =1 ve x′(0) =0 şeklindedir.

0kxdtdxc

dtxdm 2

2=++

110

dtdxy =

şeklinde değişken dönüşümü yapılırsa, orijinal ikinci mertebe denklem yerine ona eşdeğer olan birinci mertebeden iki denklem elde edilmiş olur. Elde edilen denklem takımı ve başlangıç koşulları aşağıdaki şekilde yazılabilir.

1)0(xydtdx

==

0)0(yxmky

mc

dtdy

=+−=

Tablo 6.5 Örnek 6.6 için yazılan MATLAB programı

clc tspan=[0 15]; ic=[1 0]; global cm km m=10; c(1)=5; c(2)=40; c(3)=200; k=40; km=k/m; for n=1:3 cm=c(n)/m [t,x]=ode45('fonksiyon_6_6',tspan,ic); plot(t,x(:,1)); grid; xlabel('zaman - saniye.'); ylabel('konum - metre'); title('m(d2x/dt2)+c(dx/dt)+kx=0; m=10 kg, k= 40 N/m') hold on end gtext('c=5 N/(m/s)') gtext('c=40 N/(m/s)') gtext('c=200 N/(m/s)') function dx=fonksiyon_6_6(t,x); global cm km dx=[x(2);-cm*x(2)-km*x(1)]; Bu programdan elde edilen sonuçlar Şekil 6.10’da gösterilmiştir. Sönüm katsayısı üç farklı değeri için hareket farklı şekilde olur. 5 (sönümlemesiz), 40 (kritik sönümlemeli) ve 200 (aşırı sönümlenmiş).

111

0 5 10 15-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

zaman - saniye.

konu

m -

met

rem(d2x/dt2)+c(dx/dt)+kx=0; m=10 kg, k= 40 N/m

c=5 N/(m/s)

c=40 N/(m/s)

c=200 N/(m/s)

Şekil 6.10 Örnek 6.6daki kütle-yay sistemi için konum-zaman grafiği

Örnek 6.7 Lorenz Denklemleri Atmosferik akışkanlar dinamiğine dayalı basit bir model örneği, Amerikalı meteorolojici Edward Lorenz tarafından geliştirilen Lorenz denklemleridir.

yx

dtdx

σ+σ−=

xzyx

dtdy

−−ρ=

xyz

dtdz

+β−=

Lorenz bu denklemleri sırasıyla yatay ve dikey yöndeki sıcaklık değişimleri y ve z’ye göre atmosferik akışkan hareketinin x yoğunluğuyla ilgili olarak geliştirmiştir. ADD sisteminin tanımlandığı m.file aşağıdaki gibidir. function lorenz = fonksiyon_6_7 (t,x); sig=10; beta=2.666667; rho=28;

112

lorenz=[-sig*x(1) + sig*x(2); rho*x(1) - x(2) - x(1)*x(3); -beta*x(3) + x(1)*x(2)]; Komut penceresine aşağıdaki satırlar yazılarak çözüm ve çözümün grafiği elde edilir. >> x0=[5 5 5]; >> tspan=[0,20]; >> [t,x]=ode45(@fonksiyon_6_7,tspan,x0) >> plot(x(:,1),x(:,3)) >> plot(x(:,1),x(:,2)) >> subplot(3,1,1); >> plot(t,x(:,1)); >> subplot(3,1,2); >> plot(t,x(:,2)); >> subplot(3,1,3); >> plot(t,x(:,3)) Sonuçlar Şekil 6.11a-6.11b’de gösterilmiştir. x değişkeni, negatif değerlerden pozitif değerlere sıçrayan ve çoğunlukla da gelişigüzel bir salınım desenine sahiptir. Ancak bu desenin gelişigüzel olmasına karşın, salınımların frekansı ve genlikleri oldukça tutarlı görünmektedir. Şekil 6.11d’de x için başlangıç koşulunun biraz değiştirilmesiyle (5’ten 5.001’e) elde edilen çözüm kırmızı eğrilerle gösterilmiştir. Çözüm yörüngeleri belli bir süre için çakışmakta, ancak t=11.5’tan sonra birbirinden belirgin olarak ayrılmaktadır. Bu gözlem Lorenz’i uzun vadeli hava tahmini yapmanın olanaksız olduğu sonucuna götürmüştür.

113

-20 -15 -10 -5 0 5 10 15 20-25

-20

-15

-10

-5

0

5

10

15

20

25

Şekil 6.11a Lorenz denklemleri için konum-hal gösterimi (xy projeksiyonu)

-20 -15 -10 -5 0 5 10 15 205

10

15

20

25

30

35

40

45

Şekil 6.11b Lorenz denklemleri için konum-hal gösterimi (xz projeksiyonu)

114

0 2 4 6 8 10 12 14 16 18 20-20

0

20

0 2 4 6 8 10 12 14 16 18 20-50

0

50

0 2 4 6 8 10 12 14 16 18 200

20

40

60

Şekil 6.11c Lorenz denklemleri için konum-zaman gösterimi

Şekil 6.11d Başlangıç koşullarındaki küçük bir değişikliğin etkisi (Kelebek etkisi)

Örnek 6.8 Van der Pol Denklemi (Katı bir ADD sistemine örnek)

2)0(yyy 121 ==′

0)0(yyy)y1(1000y 212212 =−−=′

ADD sisteminin tanımlandığı m.file aşağıdaki gibidir. function dy = vdp1000(t,y) dy = zeros(2,1); % bir kolon vektörü dy(1) = y(2);

115

dy(2) = 1000*(1 - y(1)^2)*y(2) - y(1); Komut penceresine aşağıdaki satırlar yazılarak çözüm ve çözümün grafiği elde edilir. >>[t,Y] = ode15s(@vdp1000,[0 3000],[2 0]); >>plot(t,Y(:,1),'-o')

0 500 1000 1500 2000 2500 3000-2.5

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

2.5

Şekil 6.12 Örnek 6.8’ deki van der Pol denkleminin çözümü

6.3 SINIR DEĞER PROBLEMLERİ Bir adi diferansiyel denklem yardımcı koşullarla verilir. Bu koşullar, denklemi çözerken ortaya çıkan integralin sabitlerini hesaplamak için kullanılır, n'inci dereceden bir denklem için n adet koşul gereklidir. Bu koşullar bağımsız değişkenin aynı değeri için tanımlanmışsa, bir başlangıç değer problemiyle, uğraşıyoruz demektir. (Şekil 6.13a). Bu noktaya kadar, bu tip problemlerin çözümleri açıklanmıştır.

116

Başlangıçkoşulları

Sınır koşulu

Sınır koşulu

t=0 iken, y1 = y1,0 ve y2 = y2,0

Şekil 6.13 Sınır değer problemlerine karşılık başlangıç değer problemi, (a) Bütün koşulların bağımsız değişkenin aynı değeri için tanımlı olduğu bir başlangıç değer problemi, (b) Koşulların bağımsız değişkenin farklı değerleri için tanımlı olduğu bir sınır değer problemi. Buna karşılık, koşulların bağımsız değişkenin bir tek noktasında değil de farklı noktalarında bilindiği başka uygulamalar da vardır. Bu değerler çoğunlukla bir sistemin aşıt noktalarında veya sınırlarında tanımlı olduğu için, bunlar alışılmış haliyle sınır değer problemi diye bilinir (Şekil 13b). Çeşitli türde önemli mühendislik uygulamaları bu sınıfa girer. Bu bölümde, bunların çözümünü elde etmek için sonlu fark yaklaşımını tartışacağız.

6.3.1 Sınır Koşulları Bir sınır değer probleminde en çok aşağıdaki doğrusal sınır koşulları ile karşılaşılır. (i) Birinci çeşit sınır koşulu ( Dirichlet Sınır Koşulu): Problem bölgesinin herhangi bir sınırında bağlı değişkenin bilindiği yani belirli bir sabite eşit olduğu durum.

Örneğin, y(0)=1 veya y(20)=-5

117

(ii) İkinci çeşit sınır koşulu ( Naumann Sınır Koşulu): Problem bölgesinin herhangi bir sınırında bağlı değişkenin türevinin bilindiği yani belirli bir sabite eşit olduğu durum.

Örneğin, y′(0)=10 veya y′(20)=-7 (iii) Üçüncü çeşit sınır koşulu ( Robin Sınır Koşulu): Problem bölgesinin herhangi bir sınırında, bağlı değişkenin kendisi ile türevinin bir lineer kombinezonunun bilindiği yani belirli bir sabite eşit olduğu durum.

Örneğin, y′(0)+2y(0)=5

6.3.2 Sonlu Fark Yöntemleri

)x(ry)x(q

dxdy)x(p

dxyd2

2=++

(6.31)

Bu bölümde bir model problem yardımıyla sınır değer problemlerinin sonlu farklar yöntemi ile çözümü tartışılacaktır. Model problem olarak ikinci mertebeden değişken katsayılı homojen olmayan ve Eşitlik (6.31) ile verilen doğrusal ADD kullanılacaktır. Problem bölgesi (xL, xR), Şekil 6.14’te görüldüğü gibi n eşit aralığa bölünür ve herhangi bir nokta için türevler merkezi farklarla yazılırsa aşağıdaki denklem elde edilir.

)x(ry)x(q)x(2

yy)x(p)x(

yy2yiii

1i1ii2

1ii1i =+∆−

+∆

+− −+−+

(6.32)

Bu denklem düzenlenerek,

[ ] [ ] [ ] )x(r)x(2y)x(p)x(2y)x(q)x(24y)x(p)x(2 i2

1iiii2

1ii ∆=∆++∆+−+∆− −+ (6.33)

şekline getirilir. Gösterimi basitleştirmek için yeni değişkenler tanımlanarak denklem aşağıdaki formda ifade edilir.

i1iiii1ii dycybya =++ −+ (6.34) Burada,

)x(p)x(2a ii ∆−= (6.35a)

)x(q)x(24b i2

i ∆+−= (6.35b)

118

)x(p)x(2c ii ∆+= (6.35c) )x(r)x(2d i

2i ∆= (6.35d)

olarak tanımlanmışlardır. Bu aşamada, bu denklem sınır koşullarının üç farklı kombinezonu için ayrı ayrı çözülecektir. (a) RRLL yyde'xxyyde'xx ==== (6.36) Bu sınır koşulları, hem sol hem de sağ sınırda birinci çeşit sınır koşulu durumunu temsil etmektedir. Bu sınır koşullarına göre bağlı değişkenin sadece iç noktalardaki değerleri bilinmemektedir. Buna göre (6.34) denklemi i=1:n-1 için, yani iç noktalar için yazılmalıdır. Böylece (n-1) bilinmeyenli lineer cebirsel denklem takımı elde edilir. Birinci ve (n-1). satırlarda bulunan y0 ve yn değişkenlerinin değerleri yerlerine yazılarak bu satırlar değiştirilir. 1.satır ⇒=++ 1011121 dycybya 0112111 ycdyayb −=+ (6.37) (n-1). satır ⇒=++ −−−−−− 1n2n1n1n1nn1n dycybya n1n1n1n1n2n1n yadybyc −−−−−− −=+ (6.38) Böylece aşağıdaki lineer cebirsel denklem takımı elde edilir. Bu denklem uygun bir yöntemle çözülerek bilinmeyen fonksiyon değerleri hesaplanır.

−−

−−−

1n1n

2n2n2n

444

333

222

11

bc00000abc0000

00abc00000abc00000abc00000ab

1n

2n

4

3

2

1

yy

yyyy

=

×−

×−

−−

n1n1n

2n

4

3

2

011

yadd

ddd

ycd

(6.39)

Bu cebirsel denklem takımı kapalı formda aşağıdaki şekilde ifade edilebilir.

[ ]{ } { }KyM = Burada M katsayılar matrisini, y bilinmeyenler vektörünü k ise karşı taraf vektörünü temsil etmektedir.

(b) sabitdxdyde'xxyyde'xx RLL =α==== (6.40)

119

Bu sınır koşulları, sol sınırda birinci çeşit, sağ sınırda ikinci çeşit sınır koşulu durumunu temsil etmektedir. Bu sınır koşullarına göre bağlı değişkenin sadece sol sınırdaki değeri bilinmektedir. Buna göre (6.34) denklemi i=1:n için, yani bağlı değişkenin bilinmediği noktalar için yazılmalıdır. Böylece (n) bilinmeyenli lineer cebirsel denklem takımı elde edilir. Birinci satırda bulunan y0 değişkeninin değeri bir önceki şıkta olduğu gibi yerine yazılır ve denklemin son hali elde edilir. İç noktalar için herhangi bir değişikliğe gerek yoktur. Sağ uç noktası için denklem yazılırsa aşağıdaki ifade elde edilir.

n1nnnn1nn dycybya =++ −+ (6.41)

Bu denklemde n+1 noktası sanal bir noktadır. yn+1 bağlı değişken değeri türevin tanımından elde edilir. n noktasında birinci türev merkezi farklarla yazılırsa,

Şekil 6.15 Sağ uçta sanal nokta kullanılarak sınır koşulunun uygulanması

x2yyy 1n1n

n ∆−

=′ −+ (6.42)

elde edilir. (6.40) ile verilen sınır koşulu kullanılarak aşağıdaki ilişki elde edilir.

n1n1n yx2yy ′∆+= −+ (6.43) Eşitlik (6.43), Eşitlik (6.41)’da yerine yazılarak n. denklem aşağıdaki şekilde elde edilir.

nnnn1nnn a)x2(dyby)ca( ∆α−=++ − (6.44)

Çözülecek lineer cebirsel denklem takımı aşağıdaki şekilde elde edilir.

+−−−

nnn

1n1n1n

44

333

222

11

bca00000abc0000

00bc0000abc0000abc0000ab

n

1n

4

3

2

1

yy

yyyy

=

∆α−

×−

nn

1n

4

3

2

011

xa2dd

ddd

ycd

(6.45)

120

(c) sabitydxdyde'xxyyde'xx RLL =γ=β+===

(6.46)

Bu sınır koşulları, sol sınırda birinci çeşit, sağ sınırda üçüncü çeşit sınır koşulu durumunu temsil etmektedir. Bu sınır koşullarına göre bağlı değişkenin sadece sol sınırdaki değeri bilinmektedir. Buna göre (6.34) denklemi i=1:n için, yani bağlı değişkenin bilinmediği noktalar için yazılmalıdır. Böylece (n) bilinmeyenli lineer cebirsel denklem takımı elde edilir. Birinci satırda bulunan y0 değişkeninin değeri bir önceki şıkta olduğu gibi yerine yazılır ve denklemin son hali elde edilir. İç noktalar için herhangi bir değişikliğe gerek yoktur. Sağ uç noktası için denklem yazılırsa aşağıdaki ifade elde edilir.

n1nnnn1nn dycybya =++ −+ (6.47)

Bu denklemde n+1 noktası sanal bir noktadır. yn+1 bağlı değişken değeri türevin tanımı ve sağ uçtaki sınır koşulu kullanılarak elde edilir. n noktasında birinci türev merkezi farklarla yazılır ve (6.46) ile verilen sağ sınırı koşulu kullanılırsa

γ=β+∆− −+

n1n1n y

x2yy

(6.48)

elde edilir. Bu eşitlik düzenlenerek sanal noktadaki bağlı değişken değeri elde edilir.

)y(x2yy n1n1n β−γ∆+= −+ (6.49) Eşitlik (6.49), Eşitlik (6.47)’de yerine yazılarak n. denklem aşağıdaki şekilde elde edilir.

nnnnn1nnn xa2dy)xa2b(y)ca( ∆γ−=∆β−++ − (6.50)

Çözülecek lineer cebirsel denklem takımı aşağıdaki şekilde elde edilir.

∆β−+−−−

nnnn

1n1n1n

44

333

222

11

xa2bca00000abc0000

00bc0000abc0000abc0000ab

n

1n

4

3

2

1

yy

yyyy

=

∆γ−

×−

nnn

1n

4

3

2

011

yxa2dd

ddd

ycd

(6.51)

121

Örnek 6.9 Sınır Değer Problemi (Sağ uçta 1. çeşit sınır koşulu) Aşağıdaki sınır değer problemini Δx = 2 alarak sonlu farklar yöntemiyle çözün.

0xydxdy2

dxyd8 2

2=+−− ,

y(0) = 5 ve y(20) = 8

(Analitik çözüm, x+2-x)*exp(-0.25*07.00045614+x)*exp(0.5*0.00045614- :=y ) Çözüm: Koşullar bağımsız değişkenin farklı değerlerinde tanımlanmıştır. Bu nedenle bu bir sınır değer problemidir. Verilen sınır şartlarından x’in 0’dan 20’ye kadar değiştiği anlaşılmaktadır. Δx = 2 alınırsa x değişkeni on aralığa bölünmüş olur ve toplam 11 nokta var demektir.

x125.0)x(r125.0)x(q25.0)x(p −=−=−=

5.1)25.0(22)x(p)x(2a ii =−−=∆−=

5)125.0()2(24)x(q)x(24b 2i

2i −=−+−=∆+−=

5.2)25.0)(2(2)x(p)x(2c ii =−+=∆+= i2xi)x125.0()2(2)x(r)x(2d i

2i

2i −=∆=−=∆=

İlk ve son noktalar (x = 0 ve x = 20) sınır koşullarıyla verildiği için 6.3.2. (a)’daki duruma karşı gelmektedir. Buna göre (6.39) eşitliği kullanılarak aşağıdaki lineer cebirsel denklem takımı elde edilir.

−−−−−−−−

=

−−

−−

−−

−−

3016141210864

5.14

yyyyyyyyy

55.200000005.155.2000000

05.155.200000005.155.200000005.155.200000005.155.200000005.155.200000005.155.200000005.15

9

8

7

6

5

4

3

2

1

Bu denklem uygun bir yöntemle çözülerek bilinmeyen fonksiyon değerleri hesaplanır. Bu denklemi sayısal olarak çözen ve analitik çözümle karşılaştıran MATLAB programı Tablo 6.6’da verilmiştir. Programdan elde edilen çözümler Şekil 6.16’da sunulmuştur.

122

Tablo 6.6 Örnek 6.9 için yazılan MATLAB programı

clc clear all % Bu program Örnek 6.9da verilen ADD'yi [A]{y}={b} %şeklinde lineer cebirsel denklem takımına %dönüştürerek çözer. x0=0;xL=20;y0=5;yL=8;dx=2;n =10 a = zeros(n-1,n-1);b = zeros(n-1,1);;x=zeros(1,n-1); for j=1:n-1 x(1,j)=x0+j*dx; end syms xx t;p=-0.25;q=-0.125;r=-0.125*xx; a(1,1)=-4+2*dx^2*q;a(1,2)=2+dx*p; b(1,1)=2*dx*dx*subs(r,xx,x(1,1))-(2-p*dx)*y0; for i=2:n-2 a(i,i-1)=2-dx*p;a(i,i)=-4+2*dx^2*q; a(i,i+1)=2+dx*p; b(i,1)=2*dx*dx*subs(r,xx,x(1,i)); end a(n-1,n-2)=2-dx*p;a(n-1,n-1)=-4+2*dx*dx*q; b(n-1,1)=2*dx*dx*subs(r,xx,x(1,n-1))-(2+p*dx)*yL; c=a\b; analytic=dsolve('D2y = 0.25*Dy+0.125*y-0.125*t',... 'y(0) = 5','y(20)=8') for i=1:9 d(i)=subs(analytic,t,2*i); end out=[x' c d'];disp(out);ezplot(analytic,[0 20]) hold on plot(x',c,'ro')

123

Şekil 6.16 Örnek 6.9 için sayısal ve analitik çözümlerin karşılaştırılması

Örnek 6.10 Sınır Değer Problemi (Sağ uçta 2. ve 3. çeşit sınır koşulu)

0y9

dxdy6

dxyd2

2=−+

diferansiyel denklemini aşağıda verilen sınır koşulları için sonlu farklar yöntemini kullanarak bir lineer cebirsel denklem takımına dönüştürünüz. (n=5 alınacaktır).

a) 0)1(yve1)0(y =′= b) 0)1(y)1(yve1)0(y =′+= Çözüm:

0y9)x(2

yy6)x(

yy2yi

1i1i2

1ii1i =−∆−

+∆

+− −+−+

2.05/)01(x =−=∆ 0y2.3y72.4y8.0 1ii1i =+− +− 8.0y2.3y72.41i 21 −=+−= 0y2.3y72.4y8.02i 321 =+−=

124

0y2.3y72.4y8.03i 432 =+−= 0y2.3y72.4y8.04i 543 =+−= 0y2.3y72.4y8.05i 654 =+−=

6y sanal bir noktadır. Bu noktadaki bağlı değişken değeri sağ uçtaki sınır şartı kullanılarak hesaplanır. a) 0dx/dy1x ==

46

46 yy0)x(2

yy=⇒=

∆−

6y nın değeri 5. Satırda yerine yazılırsa, 5 bilinmeyenli 5 denklem elde edilir.

b) 0dx/dyy1x =+= olduğundan,

546

465 y4.0yy0

)x(2yy

y −=⇒=∆−

+

bulunur. 6y nın değeri 5. Satırda yerine yazılırsa,

0y6y45i 54 =−=

elde edilir. Buna göre lineer cebirsel denklem takımı aşağıdaki şekilde yazılabilir.

=

−−

−−

0000

8.0

yyyyy

640002.372.48.000

02.372.48.00002.372.48.00002.372.4

5

4

3

2

1

=

−−

−−

0000

8.0

yyyyy

72.440002.372.48.000

02.372.48.00002.372.48.00002.372.4

5

4

3

2

1

125

6.3.3 bvp4c FONKSİYONU İLE SINIR DEĞER PROBLEMLERİNİN ÇÖZÜMÜ Bu fonksiyon en basit şekliyle aşağıdaki formda kullanılır. sol = bvp4c(odefun, bcfun, solinit) odefun Diferansiyel denklemi tanımlayan fonksiyon. Aşağıdaki şekilde tanımlanabilir. dydx = odefun(x,y) Burada x bir skaler olup bağımsız değişkene, y bir sütun vektör olup bağlı değişkene karşı gelmektedir. dydx ise çıkış vektörünü temsil etmektedir. bcfun sınır koşullarını tanımlayan fonksiyon. Aşağıdaki şekilde tanımlanabilir. res = bcfun(ya,yb) Burada ya ve yb iki boyutlu kolon vektörleridir. Sırasıyla sol ve sağ sınır koşullarını tanımlayan vektörlerdir. ya(1): fonksiyonun sol sınırdaki değeri ya(2): fonksiyonun türevinin sol sınırdaki değeri yb(1): fonksiyonun sağ sınırdaki değeri yb(2): fonksiyonun türevinin sağ sınırdaki değeri res ise çıkış değişkenini temsil etmektedir. solinit çözümün başlangıç tahminini içeren bir yapıdır. nır koşullarını tanımlayan fonksiyon. Aşağıdaki şekilde tanımlanabilir. solinit = bvpinit(xx,yinit) xx, başlangıç mesh seçimini belirleyen vektör. Örneğin, xx = linspace(a,b,10) tanımı , [a b] bağımsız değişken aralığını 9 aralığa bölerek 10 nokta için çözüme başlanacağını gösterir. yinit, bağlı değişkenlerin başlangıç tahmin değerlerini tanımlar. yinit= [1 0] tanımı, bütün problem bölgesinde y1=1 ve y2=0 tahmini anlamına gelmektedir.

126

Örnek 6.11 bvp4c fonksiyonu ile sınır değer problemi çözümü

2)4(yve0)0(y,0yy −===+′′ sınır değer problemini bvp4c fonksiyonu ile çözünüz. Çözüm:

21 yyyy =′= dönüşümleri yapılırsa model ADD aşağıdaki şekilde I. mertebeden ADD takımına dönüştürülür.

12

21

yyyy−=′

=′

Tablo 6.7’de bu problemin çözümü için yazılan MATLAB programı verilmiştir. Programdan elde edilen çözüm ise Şekil 6.18’de gösterilmiştir.

Tablo 6.7 Örnek 6.11 için yazılan ve bvp4c fonksiyonunu kullanan MATLAB programı

clc solinit = bvpinit(linspace(0,4,11),[1 0]) sol = bvp4c(@fonksiyon1_6_11,@ fonksiyon2_6_11,solinit); x = linspace(0,4,11);%[0 4]aralığını 10 aralığa böler yy = deval(sol,x); % yy, x vektörüne karşı gelen çözüm matrisidir. plot(x,yy(1,:),x,yy(2,:)); hold on xr=0:0.001:4; plot(xr,xr*0,'b-') ;% x ekseni çizdiriliyor out=[x' yy(1,:)' yy(2,:)'] % y1 fonksiyonu y2 fonksiyonun türevini gösterir. display(out) function dydx = fonksiyon1_6_11(x,y) % ADD tanımlanıyor. dydx = [ y(2); -abs(y(1))];

function res = fonksiyon1_6_11(ya,yb) % sınır koşulları. res = [ ya(1);yb(1) + 2];

127

Şekil 6.18 Örnek 6.11’de bvp4c fonksiyonu ile çözülen ADD’yi sağlayan fonksiyon ve bu

fonksiyonun türevi

128

KAYNAKLAR 1. Steven C. Chapra & Raymond P. Canale, Mühendisler için Sayısal Yöntemler,

Literatür Yayıncılık, 2003. 2. Faires J.D & Burden R.L, Numerical Methods (third edition), Brooks Cole ,2002 3. Shampine L. F. Gladwell I. Thompson S., Solving ODEs with MATLAB,

Cambridge University Press, 2003

128

EK

MATLAB SEMBOLİK ARAÇ KUTUSU

SEMBOLİK HESAPLAMALAR sym komutu bir sembolik değişken veya ifade üretir. x = sym('x') a = sym('alfa') Bu komutlar x ve a değişkenlerinin sembolik değişkenler olarak tanımlanmasını sağlar. f = ax2 + bx + c ikinci derece denklemi ile çalışmak isteyelim. Aşağıdaki satırla bu sembolik ifadeyi tanımlayabiliriz. f = sym('a*x^2 + b*x + c') Ancak, bu sembolik ifadenin örneğin türevini sembolik olarak bulmak için, ifadenin içindeki değişkenlerin de sembolik olarak tanımlanması gerekir. Bunun için a = sym('a') b = sym('b') c = sym('c') x = sym('x') veya syms a b c x komutları kullanılabilir. Türev Aşağıdaki sembolik ifade verilsin.

129

f ifadesinin x’e ve a’ya göre türevleri aşağıdaki şekilde hesaplanır. Komut Çıktı syms a x f = sin(a*x) df = diff(f,x) dfa = diff(f,a)

df = cos(a*x)*a dfa= cos(a*x)*x

Matematiksel Fonksiyon MATLAB komutu f = xn f' = nxn–1

f = x^n diff(f) veya diff(f,x)

g = acos(at+b) g' = acos(at+b)

g = acos(a*t + b) diff(g) veya diff(g,t)

x veya a’ya göre ikinci türevleri hesaplamak için aşağıdaki komutlar kullanılır. Komut Çıktı diff(f,x,2) diff(f,a,2)

ans = –sin(a*x)*a^2 ans = –sin(a*x)*x^2

diff fonksiyonu sembolik bir matrisin türevini hesaplamak için de kullanılır. Bu durumda her bir elemanın türevi ayrı ayrı hesaplanır. Komut Çıktı syms a x A = [cos(a*x),sin(a*x);–sin(a*x),cos(a*x)]

A = [ cos(a*x), sin(a*x)] [ –sin(a*x), cos(a*x)]

dy = diff(A)

dy = [ –sin(a*x)*a, cos(a*x)*a] [ –cos(a*x)*a, –sin(a*x)*a]

130

Limit Bir f(x) fonksiyonunun x noktasındaki limiti aşağıdaki şekilde tanımlanır.

h

)x(f)hx(flim)x(f0h

−+=′

Sembolik Araç Kutusu bu limiti direkt olarak hesaplar.

Matematiksel İşlem Komut Çıktı )xcos()x(f =

h)x(f)hx(flim)x(f

0h

−+=′

syms h n x dc = limit( (cos(x+h) – cos(x))/h,h,0 )

-sin(x)

n

h nx1lim)x(f

+=′

∞→

limit( (1 + x/n)^n,n,inf )

ans= exp(x)

Fonksiyonun süreksiz olduğu noktalarda sağdan ve soldan limitler farklı değerler alır.

Matematiksel İşlem Komut )x(flim

0x→ limit(f)

)x(flimax→

limit(f,x,a)

)x(flimax −→

limit(f,x,a,’left’)

)x(flimax +→

limit(f,x,a,’right’)

İntegral Bir sembolik ifadenin, bir bağımsız değişkene göre belirsiz ve belirli integralleri aşağıdaki şekilde hesaplanır.

Matematiksel İşlem Komut

1nxdxx

1nn

+=

+

int(x^n,x)

131

1dx)x2sin(2/

0=∫

π

int(sin(2*x),x,0,pi/2)

∫ +=

+=

a/)batsin(dt)t(g

)batcos(g

g = cos(a*t + b) int(g,t)

∫∞

−0

dx)xexp( =1 int(exp(-x),x,0,inf)

Sembolik Toplama

Matematiksel İşlem Komut Çıktı

....31

211

k1

221k

2 +++=∑∞

=

syms x k s1 = symsum(1/k^2,1,inf)

s1 = 1/6*pi^2

1x....xx1x 2

0k

k <+++=∑∞

=

s2 = symsum(x^k,k,0,inf) s2 = -1/(x-1)

Taylor Serisi

+−+−+−+−+= 44

33

2210 )ax(c)ax(c)ax(c)ax(cc)x(f (*)

+−+−+−+=′ 34

2321 )ax(c4)ax(c3)ax(c2c)x(f

+−+−+=′′ 2432 )ax(c3.4)ax(c2.3c2)x(f +−+=′′′ )ax(c2.3.4c2.3)x(f 43

+= 4)4( c2.3.4)x(f

00 c)!0(c)a(f ==

11 c)!1(c)a(f ==′

22 c)!2(c2)a(f ==′′ 33 c)!3(c2.3)a(f ==′′′

44)4( c)!4(c2.3.4)a(f ==

132

c katsayılarının değerleri fonksiyonun a noktasındaki türevleri cinsinden elde edilir ve (*) denkleminde yerlerine yazılırsa f(x) fonksiyonu x=a civarında bir seri olarak ifade edilmiş olur.

+′′

−+′

−+=−= ∑∞

= !2)a(f)ax(

!1)a(f)ax()a(f

!n)a(f)ax()x(f 2

)n(

0n

n

Matematiksel İşlem Komut Çıktı

)xsinxexp(f = syms x T = taylor(f,12,0)

T = 1+x^2+1/3*x^4+1/120*x^6-11/560*x^8-1079/362880*x^10

xsinxg =

syms x T = taylor(g,8,2)

taylor(f,8,2) komutu f fonksiyonunu, x^8 e kadar olan terimleri içerecek şekilde (x^8’li terimi içermez) x=2 civarında Taylor serisine açar. Eğer seri x=0 civarında Taylor serisine açılırsa, bu özel durumda seri MacLaurin serisi olarak isimlendirilir. factor

bir ifadeyi çarpanlarına ayırır factor(x^3–y^3) , çıktı (x–y)*(x^2+x*y+y^2) factor([a^2–b^2, a^3+b^3]) çıktı [(a–b)*(a+b), (a+b)*(a^2–a*b+b^2)] factor(sym('12345678901234567890')) (2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541) finverse Bir fonksiyonun tersini bulur finverse(1/tan(x)) atan(1/x) finverse(exp(u–2*v),u) 2*v+log(u) inv Bir matrisin tersini bulur A = sym([2,–1,0;–1,2,–1;0,–1,2]);

133

inv(A) [ 3/4, 1/2, 1/4] [ 1/2, 1, 1/2] [ 1/4, 1/2, 3/4] syms a b c d A = [a b; c d] inv(A) [ d/(a*d–b*c), –b/(a*d–b*c)] [ –c/(a*d–b*c), a/(a*d–b*c)]

solve Cebrik denklem veya denklem takımlarını çözer. g = solve(eq) g = solve(eq,var) g = solve(eq1,eq2,...,eqn) g = solve(eq1,eq2,...,eqn,var1,var2,...,varn) solve('a*x^2 + b*x + c') returns [ 1/2/a*(–b+(b^2–4*a*c)^(1/2)), 1/2/a*(–b–(b^2–4*a*c)^(1/2))] solve('a*x^2 + b*x + c','b') returns –(a*x^2+c)/x solve('x + y = 1','x – 11*y = 5') returns y = –1/3, x = 4/3 A = solve('a*u^2 + v^2', 'u – v = 1', 'a^2 – 5*a + 6') returns A = a: [1x4 sym] u: [1x4 sym] v: [1x4 sym] where A.a = [ 2, 2, 3, 3] A.u = [ 1/3+1/3*i*2^(1/2), 1/3–1/3*i*2^(1/2), 1/4+1/4*i*3^(1/2), 1/4–1/4*i*3^(1/2)] A.v = [ –2/3+1/3*i*2^(1/2), –2/3–1/3*i*2^(1/2),

134

–3/4+1/4*i*3^(1/2), –3/4–1/4*i*3^(1/2)]

funtool fonksiyonlarla ilgili işlemler yapan araç (bileşke fonksiyon, ters fonksiyon,

dsolve

Diferansiyel denklemlerin sembolik çözümünü yapar. r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v') dsolve('Dy = a*y') returns exp(a*t)*C1 dsolve('Df = f + sin(t)') returns –1/2*cos(t)–1/2*sin(t)+exp(t)*C1 dsolve('(Dy)^2 + y^2 = 1','s') returns –sin(–s+C1) dsolve('Dy = a*y', 'y(0) = b') returns exp(a*t)*b dsolve('D2y = –a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0') returns cos(a*t) dsolve('Dx = y', 'Dy = –x') returns x= cos(t)*C1+sin(t)*C2 y = –sin(t)*C1+cos(t)*C2

subs a = 980 and C1 = 3 workspace’de var olsun y = dsolve('Dy = -a*y') ifadesi

135

y = exp(-a*t)*C1 çıktısını üretir. subs(y) ifadesi ans = 3*exp(-980*t) çıktısını üretir. Single Substitution: subs(a+b,a,4) returns 4+b. Multiple Substitutions: subs(cos(a)+sin(b),{a,b},{sym('alpha'),2}) returns cos(alpha)+sin(2) Scalar Expansion Case: subs(exp(a*t),'a',-magic(2)) returns [ exp(-t), exp(-3*t)] [ exp(-4*t), exp(-2*t)] Multiple Scalar Expansion: subs(x*y,{x,y},{[0 1;-1 0],[1 -1;-2 1]}) returns [ 0, -1] [ 2, 0]

136

SEMBOLİK GRAFİK İŞLEMLERİ ezplot syms x f=1/(5+4*cos(x)) sembolik ifadesi oluşturulsun. ezplot(f) komutu f fonksiyonunun -2<x<2 aralığında grafiğini çizer. Bu aralık default değeridir.

Eğer fonksiyonun grafiği a<x<b aralığında çizilmek istenirse komut aşağıdaki şekilde kullanılır. ezplot(f,[a b]) f fonksiyonunun ikinci türevini bulalım. f2=diff(f,x,2) çıktı aşağıdaki şekildedir. f2 = 32/(5+4*cos(x))^3*sin(x)^2+4/(5+4*cos(x))^2*cos(x)

137

Eksen sınırlarını da belirleyerek f2 fonksiyonunun grafiği aşağıdaki şekilde çizilir. ezplot(f2) axis([-2*pi 2*pi -5 2])

ezplot3 Üç boyutlu parametrik eğri çizer.

syms t; ezplot3(sin(t), cos(t), t,[0,6*pi])

138

ezpolar Kutupsal (polar) koordinatlarda eğri çizer.

syms t ezpolar(1+cos(t))

ezmesh

3 boyutlu grafik çizer

syms x y

-1-0.5

00.5

1

-1-0.5

0

0.510

5

10

15

20

x

x = sin(t), y = cos(t), z = t

y

z

139

ezmesh(x*exp(-x^2-y^2),40)