AST409 Astronomide Sayısal Çözümleme

Slides:



Advertisements
Benzer bir sunumlar
LİMİT.
Advertisements

Matlab ile sayısal integrasyon yöntemleri.
Matlab ile Sayısal Diferansiyel
5 EKSENLİ ROBOT KOLUNUN YÖRÜNGE PLANLAMASI ve DENEYSEL UYGULAMA
Giriş Erciyes Üniversitesi Mühendislik Fakültesi
TBF Genel Matematik II DERS – 8 : Çift Katlı İntegral
8. SAYISAL TÜREV ve İNTEGRAL
YMT 222 SAYISAL ANALİZ (Bölüm 6a)
Karar ifadeleri ve Döngüler
Fonksiyonlar ve Alt Programlar
1.BELİRSİZ İNTEGRAL 2.BELİRSİZ İNTEGRALİN ÖZELLİKLERİ 3.İNTEGRAL ALMA KURALLARI 4.İNTEGRAL ALMA METODLARI *Değişken Değiştirme (Yerine Koyma)Metodu.
AST409 Astronomide Sayısal Çözümleme
YMT 222 SAYISAL ANALİZ (Bölüm 2b)
AST409 Astronomide Sayısal Çözümleme
Sürekli Olasılık Dağılımları
Fonksiyonlar.
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
AST409 Astronomide Sayısal Çözümleme
6. HAFTA
Maddenin ölçülebilir özellikleri
Bölüm 4: Sayısal İntegral
AST409 Astronomide Sayısal Çözümleme
AST409 Astronomide Sayısal Çözümleme
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
FONKSİYONLARIN GRAFİKLERİ
Bölüm 3: Sayısal Türev BirinciTürev: Bir f(x) fonksiyonunun [a,b] tanım aralığında bir x noktasındaki türevi, Limit ifadesiyle tanımlanır. Eğer f(x)’in.
Bölüm6:Diferansiyel Denklemler: Başlangıç Değer Problemleri
Çevre ve Alan İlköğretim 6. Sınıf.
Entegral almada yamuk metodu Şekilde gösterilen fonksiyonun x 0 ’dan x n ’e kadar entegralini almak istiyoruz. Bu, taralı alanın bulunması demektir. x0x0.
YMT 222 SAYISAL ANALİZ (Bölüm 5)
Bölüm5 :Kök Bulma Sayısal bilgisayarlar çıkmadan önce, cebirsel denklemlerin köklerini çözmek için çeşitli yollar vardı. Bazı durumlarda, eşitliğinde olduğu.
DERS 11 BELİRLİ İNTEGRAL (ALAN).
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
a) b) c) d) e) Pi= 4* atan(1) y=Log10 | x | +4 Y= LOG10 (ABS(x))+4
ÇOK DEĞİŞKENLİ FONKSİYONLARDA
Ters Hiperbolik Fonksiyonlar
A409 Astronomide Sayısal Çözümleme
Yıldız Teknik Üniversitesi Makina Müh. Bölümü
Yard. Doç. Dr. Mustafa Akkol
HESAPLAMA FONKSIYONLARI
Yıldız Teknik Üniversitesi Makina Müh. Bölümü
Python Aslı Ergün.
Tekli trapezoidin alanı = h
BİL542 PARALEL PROGRAMLAMA
Yıldız Teknik Üniversitesi Makina Müh. Bölümü
SONLU ELEMANLAR DERS 6.
TBF Genel Matematik II DERS – 8 : Çift Katlı İntegral
TBF Genel Matematik I DERS – 11: Belirsiz İntegral
Python Programlama Dilini Oyun Oynayarak Öğreniyorum
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
SAYISAL ANALİZ Doç. Dr. Cüneyt BAYILMIŞ.
Sayısal Analiz Sayısal İntegral 3. Hafta
İNTEGRAL.
ANA SAYFA BELİRSİZ İNTEGRAL TANIM: f:[a,b]  R tanımlı iki fonksiyon olsun.Eğer F(x) in türevi F(x) veya diferansiyeli f(x).d(x) olan F(x) fonksiyonuna,
HATA VE HATA ANAL İ Z İ. 2  Fiziksel veya sosyal olayların matematiksel olarak çözülmelerinde yapılan hatalar genellikle üç ana ba ş lıkta toplanır.
Fonksiyonlar ve Diziler
AST415 Astronomide Sayısal Çözümleme - I
Bilgisayar Programlamasına ve Veri Analizine Giriş - IV
AST416 Astronomide Sayısal Çözümleme - II
BELİRLİ İNTEGRAL.
DERS 7 SAYISAL İNTEGRASYON DERS 7.1 TRAPEZOIDAL (YAMUK) KURAL
TÜREV ve TÜREV UYGULAMALARI
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
Bilgisayar Programlamasına ve Veri Analizine Giriş
Python ile Bilimsel Hesaplama
Bilgisayar Bilimi Fonksiyonlar-2.
a) b) c) d) e) Pi= 4* atan(1) y=Log10 | x | +4 Y= LOG10 (ABS(x))+4
4. HAFTA.
NİŞANTAŞI ÜNİVERSİTESİ
G(s) 2b-1 Laplace Dönüşümü:
Sunum transkripti:

AST409 Astronomide Sayısal Çözümleme VII. Python ve İntegrasyon

scipy.integrate paketi quad fonksiyonu quad fonksiyonu, scipy integrate paketinin belirli integral almak için en sık kullanılan fonksiyonudur. Fonksiyon “adaptive quadrature*” adı verilen bir algoritma ile integral hesabı yapar. Scipy.integrate paketine Fortran QUADPACK fonksiyonundan** uyarlanarak entegre edilmiştir. Örnek 1: from scipy import integrate as integral def integrant(x, a, b): return a * x + b a = 2 b = 1 altlim = 0 ustlim = 1 I = integral.quad(integrant, altlim, ustlim, args=(a,b)) print "%dx + %d fonksiyonunun x=%d ile x=%d arasindaki integrali %.16f 'e, bu degerin hatasi %.16f 'e esittir" % (a, b, altlim, ustlim, I[0], I[1]) Kodun ekran çıktısı: 2x + 1 fonksiyonunun x=0 ile x=1 arasindaki integrali 2.0000000000000000 'e, bu degerin hatasi 0.0000000000000222 'e esittir * http://en.wikipedia.org/wiki/Adaptive_quadrature ** http://en.wikipedia.org/wiki/QUADPACK

scipy.integrate paketi quad fonksiyonu Fonksiyonun ilk argümanı integrant (integrali alınacak fonksiyon) fonksiyonudur. Bu fonksiyonu dilediğiniz şekilde tanımlayabilirsiniz. Burada bir lambda fonksiyonu olarak tanımlayacağımız bir örnek görelim. Örnek 2: x2 = lambda x: x**2 altlim = 0 ustlim = 4 I = integral.quad(x2, altlim, ustlim) print "x^2 fonksiyonunun x=%d ile x=%d arasindaki integrali %.16f 'e, bu degerin hatasi %.16f 'e esittir" % (altlim, ustlim, I[0], I[1]) Kodun ekran çıktısı: x^2 fonksiyonunun x=0 ile x=4 arasindaki integrali 21.3333333333333321 'e, bu degerin hatasi 0.0000000000002368 'e esittir

scipy.integrate paketi quad fonksiyonu Nümerik integrasyonun bir başka amacı da analitik yollarla alamadığımız integralleri alabilmektir. Örnek olarak, bu türden bir fonksiyon olan xx-1 fonksiyonunun x = 1 ile x =3 noktaları arasındaki integralini almaya çalışalım. Örnek 3: fonk = lambda x: x**(x-1) altlim = 1 ustlim = 3 I = integral.quad(fonk,altlim,ustlim) print "x^(x-1) fonksiyonunun x=%d ile x=%d arasindaki integrali %.16f 'e, bu degerin hatasi %.16f 'e esittir" % (altlim, ustlim, I[0], I[1]) Kodun ekran çıktısı: x^(x-1) fonksiyonunun x=1 ile x=3 arasindaki integrali 5.7638362750896270 'e, bu degerin hatasi 0.0000000000000640 'e esittir

scipy.integrate paketi quad fonksiyonu (sınırı sonsuzda olan integraller) Limitlerden en az biri sonsuz olduğu zaman bu limit için numpy.inf fonksiyonunu kullanarak integral alabliiriz. Örnek olarak e-xt / tn fonksiyonun 1 ile sonsuz arasındaki integralini bulalım Örnek 4: def integrant(x,t,n): return np.exp(-x*t) / t**n t = 2 n = 1 I = integral.quad(integrant, 1, np.inf, args=(t,n)) print "(e^-2x)/2 fonksiyonunun x=%d ile x=%s arasindaki integrali %.16f 'e, bu degerin hatasi %.16f 'e esittir" % (1, "sonsuz", I[0], I[1]) Kodun ekran çıktısı: (e^-2x)/2 fonksiyonunun x=1 ile x=sonsuz arasindaki integrali 0.0338338208091532 'e, bu degerin hatasi 0.0000000000052341 'e esittir

scipy.integrate paketi quad fonksiyonu (çok katlı integraller) Çoklu (ikili, üçlü, n’li) integralleri de scipy.integrate paketi fonksiyonları ile alabilmek mümkündür. İkili integraller için dblquad, üçlü integraller için tplquad, n’li integraller için nquad fonksiyonları kullanılır. Örnek olarak yandaki integrali almaya çalışalım Örnek 5: def I(n): return integral.dblquad(lambda t, x: np.exp(-x*t)/t**n, 0, np.inf, lambda x: 1, lambda x: np.inf) print "Verilen ikili integralin degeri %.16f 'e, bu degerin hatasi %.16f 'e esittir" % (I(4)[0], I(4)[1]) Kodun ekran çıktısı: Verilen ikili integralin degeri 0.2500000000043577 'e, bu degerin hatasi 0.0000000010518246 'e esittir

scipy.integrate paketi quad fonksiyonu (değişken sınırlı integraller) Bu tür integralleri scipy.integrate paketi çoklu integrasyon fonksiyonlarını kullanarak alırken içerdeki integrallerin limitlerinin sabit olması da şart değildir! Bu kez yandaki ikili integrali almaya çalışalım Örnek 6: I = integral.dblquad(lambda x, y: x*y, 0, 0.5, lambda x: 0, lambda x: 1-2*x) print "Verilen ikili integralin degeri %.16f 'e, bu degerin hatasi %.16f 'e esittir" % (I[0], I[1]) Kodun ekran çıktısı: Verilen ikili integralin degeri 0.0104166666666667 'e, bu degerin hatasi 0.0000000000000001 'e esittir

Bölünmüş Yamuklar Yöntemiyle İntegrasyon scipy.integrate paketi bölünmüş yamuk yöntemi ile integrasyon için de bir fonksiyon sağlar: trapz. Bu fonksiyon dizi değişkenlerle çalışır. Fonksiyonun argümanı belirli h (dx) aralıkları ile verilen fonskiyon değerleri (f(x0), f(x1), f(x2),…, f(xn)) ve her bir yamuğun yüksekliği olan aralık uzunluğudur (h = dx). Örnek 7: # cos x fonksiyonunun h = pi/16. yamuk yuksekligi icin x=-pi/2 ile x=pi/2 # arasindaki integralini alalim # yamuk yuksekligini degistirerek aradaki hassasiyet farkini gormeye calisiniz h = np.pi/16. altlim = -1*np.pi/2. ustlim = np.pi/2. x = np.arange(altlim, ustlim + h, h) y = np.cos(x) I = integral.trapz(y, dx = h) I_quad = integral.quad(lambda x: np.cos(x), altlim, ustlim) quada_gore_hata = abs(I - I_quad[0]) / I_quad[0] print "Yamuk yontemiyle hesaplanan deger %.16f, quad fonksiyonuna gore hatasi"\ "%.16f" % (I, quada_gore_hata) # Soz konusu integralin gercek degeri 2'dir (analitik olarak almayi deneyiniz!) gercek_integral = 2 print "Gercege gore bagil hatasi %.16f" %\ (abs((gercek_integral-I)/gercek_integral)) Kodun ekran çıktısı: Yamuk yontemiyle hesaplanan deger 1.9935703437723393, hatasi 0.0032148281138303 Gercege gore bagil hatasi 0.0032148281138303

Simpson Yöntemiyle İntegrasyon scipy.integrate paketi Simpson (1/3) yöntemi ile integrasyon için de bir fonksiyon sağlar: simps. simps fonksiyonu da tıpkı trapz gibi dizi değişkenlerle çalışır. Örnek 8: # cos x fonksiyonunun x = -pi/2 ile x = +pi/2 arasindaki integralini bu kez # Simpson yontemiyle hesaplayalim h = np.pi/16. altlim = -1*np.pi/2. ustlim = np.pi/2. x = np.arange(altlim, ustlim + h, h) y = np.cos(x) I = integral.simps(y,x) I_quad = integral.quad(lambda x: np.cos(x), altlim, ustlim) quada_gore_hata = abs(I - I_quad[0]) / I_quad[0] print "Simpson yontemiyle hesaplanan deger %.16f, quada gore hatasi %.16f" % \ (I, quada_gore_hata) ### Soz konusu integralin gercek degeri 2'dir (analitik olarak almayi deneyiniz!) gercek_integral = 2 print "Gercege gore bagil hatasi %.16f" %\ (abs((gercek_integral-I)/gercek_integral)) Kodun ekran çıktısı: Simpson yontemiyle hesaplanan deger 2.0000165910479355, quada gore hatasi 0.0000082955239677 Gercege gore bagil hatasi 0.0000082955239677

SymPy integrate fonksiyonu ile sembolik integraller Daha önce de gördüğümüz gibi SymPy integrate fonksiyonu da sembolik integral almak için kullanılabilir. Aşağıdaki yeni örneklerle bu fonksiyonu bir kez daha hatırlayalım Örnek 9: x = sym.Symbol("x") print "1/x fonksiyonunun integrali %s" % sym.integrate(1/x, x) ### belirli integralleri almak icin de kullanabiliriz print "e^-x**2 / pi fonksiyonunun x=1 ile x=2 arasindaki integrali %s" %\ sym.integrate(sym.exp(x) / sym.pi, (x, -1, 1)) ### bir diger ornek ### kodun ekran ciktisina dikkat! "nan" degeri bu integralin bu sinirlar ### dahilinde alinamadigi anlamina geliyor, nedenini dusununuz! print "1 + tan(x)**2'in x=-pi/2 ile x=pi/2 arasindaki integrali %s" %\ sym.integrate(sym.tan(x)**2 + 1., (x, -1*sym.pi/2, sym.pi/2)) Kodun ekran çıktısı: 1/x fonksiyonunun integrali log(x) e^-x**2 / pi fonksiyonunun x=1 ile x=2 arasindaki integrali -exp(-1)/pi + E/pi 1 + tan(x)**2'in x=-pi/2 ile x=pi/2 arasindaki integrali nan