12.ci hafta: SAYISAL TEKNİKLER

İM 205-İnşaat Mühendisleri için MATLAB
Irfan Turk
Fatih Üniversitesi, 2013-14
Konular
1) İnterpolasyon
2) Polinom Fonksiyonu
3) Sayısal İntegral Fonksiyonları
4) Sayısal İntegral Alma
5) Diferansiyel Denklemleri Sayısal Yollarla Çözme
Interpolasyon
 Verilen dataları kullanarak, bilinmeyen bir noktadaki değeri
bulmamıza yarar.
Örnek:EDU>> t=0:4;
EDU>> y=[9 6 3 -1 -4];
EDU>> yeni_t=0:0.25:4;
EDU>> yeni _y=interp1(t,y, yeni _t);
EDU>> plot(t,y,'r', yeni _t, yeni _y,'o')
10
8
6
4
2
0
-2
-4
0
0.5
1
1.5
2
2.5
3
3.5
4
Interpolasyon Seçenekleri
Seçenek Açıklama
lineer interpolasyon, aynı
linear zamanda varsayılan seçenektir
Örnek
interp1(t,y,3.5,'linear')=2.5000
interp1(t,y,3.5,'nearest')=nearest Yakın komşulukta interpolasyon 4
Parçalı küpsel şerit
interp1(t,y,3.5,'spline')=spline interpolasyonu
2.7969
Şekilsel parçalı küpsel şerit
interp1(t,y,3.5,'pchip')=pchip interpolasyonu
2.6161
interp1(t,y,3.5,'cubic')=cubic
pchip ile aynıdır
2.6161
Eğer x eşit aralıklı değilse, şerit interp1(t,y,3.5,'v5cubic')=v5cubic interpolasyonu kullanır.
2.6250
Alıştırma
 Alışırma 13.1: Aşağıda, Bandırma’da ölçülen ortalama
sıcaklıklar verilmiştir.
Ay
°C
1=Oca 2=Şub 3=Mar 4=Nis 5=May 6=Haz 7=Tem 8=Ağu 9=Eyl 10=Eki 11=Kas 12=Ara
8.6
9.6 11.9 17.2 21.5 26.2 27.8 27.6 24.8
19.9
15.6
Nisan ve Kasım ortasındaki sıcaklıkları bulunuz(Nisan
ortası için 4.5, Kasım ortası için 11.5 alınız).
11.1
Polinom Fonksiyonu
y = polyval(P,X) komutu P polinomunun X noktasındaki
değerini verir. P, N+1 elemanlı bir vektörün
katsayılarından oluşur. Bu katsayılar büyük dereceden
küçük dereceye doğru sıralanmalıdır.
y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X + P(N+1)
Alışırma 13.2:
fonksiyonu için
y(0), y(-3), ve y(10) nı polyval fonksiyonuyla bulunuz.
Çözüm 13.2: EDU>> x=[1 1 -6];
EDU>> y=polyval(x,0)
EDU>> y=polyval(x,-3);
EDU>> y=polyval(x,10)
Sayısal İntegral Fonksiyonları
Fonksiyon
integra1
integral2
integral3
quadgk
quad2d
cumtrapz
trapz
polyint
Yapılan İş
İntegrali sayısal olarak bulur.
Çift katlı integrali sayısal olarak bulur.
Üç katlı integrali sayısal olarak bulur.
İntegrali sayısal olarak bulur., Gauss-Kronrod quadrature
uyarlamasıyla
Çift katlı integrali sayısal olarak parçalamayla bulur.
Toplama trapezoidal sayısal integrasyon
Trapezoidal sayısal integrasyon
Polinomun integralini analitik olarak bulur.
Not: Yukarıdaki tüm fonksiyonlar MATLAB ın tüm versiyonlarında
çalışmayabilir.
Sayısal İntegral
 İntegral bir fonksiyonun altında kalan alan olarak
düşünülür. Bu alan, dikdörtgenlere bölünerek,
dikdörtgenlerin alanlarının toplamı şeklide de
bulunabilir.
 Bu yönteme trapezoid kuralı denir.
 Herhangi bir x değerine karşılık, y değeri bulunur ve
alan, trapz(x,y) fonksiyonuyla hesaplanır.
Alıştırma
Alıştırma 13.1: :Aşagıdaki fonksiyonun integralini bulunuz.
Çözüm 13.1: : Sayısal çözüm için x vektörü
tanımlamalıyız. Mesela x=0:0.1:1; ve bunlara karşılık
gelen, y=x.^2 değerlerini bulmalıyız .Daha sonra
trapz(x,y) fonksiyonuyla cevabı buluruz.
EDU>> x=0:0.1:1;
EDU>> y=x.^2;
EDU>> trapz(x,y)
ans =
0.3350
Alıştırma
 Bulunan değer 0.3350 ’dir. Bu integralin
gerçek çözümünüde bulabiliriz
EDU>> int('x^2',0,1)
ans =
1/3=0.3333
Hata =0.3350-0.3333=0.017
Problemler
Aşağıdaki integrali sayısal yöntemlerle bulunuz. Gerçek
çözümlerle karşılaştırıp hataları bulunuz.
1)
2)
Diferansiyel Denklemleri Sayısal
Yollarla Çözme
Çözücü
Problem Tipi
Doğruluk
Derecesi
Nezaman kullanılır
ode45
Nonstiff
Orta
Genellikle ilk akla gelen bu olmalıdır.
ode23
Nonstiff
Düşük
Basit hatalı toleranslar için yada stiff problemler
için.
ode113
Nonstiff
Düşükten Yükseğe Zorlu hata toleranslı problemler için yada hassas
hesaplamalı problemler için kullanılır.
ode15s
Stiff
Düşükten Ortaya
Eğer ode45 yavaşsa problem stiff tir.
ode23s
Stiff
Düşük
Basit hatalı toleranslı stiff sistemler için yada
yüksek matriksler için.
ode23t
Moderately Stiff Düşük
Sayısal damping yapmadan kısmen stiff
problemler için.
ode23tb
Stiff
Basit hatalı toleranslı stiff sistemler için
Düşük
Alıştırma
 Alıştırma 13.3: ode45, ode23, ve ode113 kullanarak
aşağıdaki denklemin sonucunu bulan kodu yazınız.
Çözüm 13.2: function dy=my_fonk(t,y)
dy=-5*y;
>>[t,y]=ode45('my_fonk',[0 10],1.43)
 >> plot(t,y)
Problem
ode23 ve ode45 kullanarak aşağıdaki denklemin
sonucunu bulan kodu yazınız. Cevapları aynı grafikte
karşılaştırınız.
İpucu: function f=fun1(t,y)
f=-t*y/sqrt(2-y^2);
>> [t1 f1]=ode23('fun1',[0 5],1);
>> [t2 f2]=ode45('fun1',[0 5],1);