Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

AST409 Astronomide Sayısal Çözümleme VI. Python ve Türev.

Benzer bir sunumlar


... konulu sunumlar: "AST409 Astronomide Sayısal Çözümleme VI. Python ve Türev."— Sunum transkripti:

1 AST409 Astronomide Sayısal Çözümleme VI. Python ve Türev

2 scipy.misc.derivative fonksiyonu Bu fonksiyon, verilen türevlenebilir bir fonksiyonun herhangi bir noktadaki n. türevini merkezi türev ifadesini kullanarak alır. Örnek1 : def f(x): return x**3 + x**2 x = 1.0 turev_x = misc.derivative(f, x, dx = 1e-6) turev_x_gercek = 3*x**2 + 2*x bagil_hata = abs((turev_x_gercek - turev_x)/turev_x_gercek) print "x^3 + x^2 fonksiyonunun x = %.2f noktasindaki turevi %.12f" % \ (x,turev_x) print "Turevin bu noktadaki gercek degeri %.2f ve yapilan bagil hata %.12f" % \ (turev_x_gercek,bagil_hata) Kodun ekran çıktısı: x^3 + x^2 fonksiyonunun x = 1.00 noktasindaki turevi Turevin bu noktadaki gercek degeri 5.00 ve yapilan bagil hata

3 scipy.misc.derivative fonksiyonu Bir önceki örneğimiz için ikinci türevi hesap edelim Örnek 2 : # ayni fonksiyonun ikinci turevini alalim turev_2_x = misc.derivative(f, x, dx = 1e-6, n = 2) turev_2_x_gercek = 6 * x + 2 bagil_hata_2 = abs((turev_2_x_gercek - turev_2_x)/turev_2_x_gercek) print "x^3 + x^2 fonksiyonunun x = %.2f noktasindaki ikinci turevi %.12f" % \ (x,turev_2_x) print "Ikinci bu noktadaki gercek degeri %.2f ve yapilan bagil hata %.12f" % \ (turev_2_x_gercek, bagil_hata_2) Kodun ekran çıktısı: x^3 + x^2 fonksiyonunun x = 1.00 noktasindaki ikinci turevi Ikinci bu noktadaki gercek degeri 8.00 ve yapilan bagil hata

4 SymPy fonksiyonları ile sembolik türev Problem “yeterince” basitse sembolik türev de yeterli olabilmektedir. SymPy paketi fonksiyon ve metotlarını kullanmak bu anlamda etkin bir çözümdür. Örnek 3: import numpy as np import sympy as sym x = sym.Symbol('x') y = x**2 + 1 turev_y = y.diff(x) print "%s 'in turevi %s 'tir." % (y,turev_y) Kodun ekran çıktısı: x**2 + 1 'in turevi 2*x 'tir. Örnek 4: y1 = sym.diff(sym.sin(x), x) print "sin(x) fonksiyonunun turevi %s 'tir" % y1 y2 = sym.diff(sym.sin(2*x),x) print "sin(2x) fonksiyonunun turevi %s 'tir" % y2 y3 = sym.diff(sym.tan(x), x) print "tan(x) fonksiyonunun turevi %s 'tir" % y3 Kodun ekran çıktısı: sin(x) fonksiyonunun turevi cos(x) 'tir sin(2x) fonksiyonunun turevi 2*cos(2*x) 'tir tan(x) fonksiyonunun turevi tan(x)**2 + 1 'tir

5 SymPy fonksiyonları ile yapılabilecek diğer işlemler SymPy paketi başka matematiksel işlemleri de sembolik olarak yapabilmek üzere pek çok olanak sağlar. Örnek 5: import math as math a = sym.Rational(1,2) print a print "a^2 = %s, 2*a = %s, sin(a) = %s" % (a**2, 2*a, math.sin(a)) Kodun ekran çıktısı: 1/2 a^2 = 1/4, 2*a = 1, sin(a) = # evalf -evaluate as function- fonskiyonu sembol olarak yazilan bir ifadenin # sayisal karsiligini verir print sym.pi**2 print "Sayisal olrak %.6f 'e esittir" % (sym.pi**2).evalf() Kodun ekran çıktısı: pi**2 Sayisal olrak 'e esittir # bir diger ornek print "pi + e^2 = %.8f" % (sym.pi+sym.exp(2)).evalf() Kodun ekran çıktısı: pi + e^2 =

6 SymPy fonksiyonları ile yapılabilecek diğer işlemler Örnek 7: # integral almak icin kullanabiliriz print "6x^5 fonksiyonunun integrali %s" % sym.integrate(6*x**5, x) # belirli integralleri almak icin de kullanabiliriz print "x^3 fonksiyonunun x=-1 ile x=1 arasindaki integrali %s" %\ sym.integrate(x**3, (x, -1, 1)) # bir diger ornek print "cos(x)'in x=-pi/2 ile x=pi/2 arasindaki integrali %s" %\ sym.integrate(sym.cos(x), (x, -1*sym.pi/2, sym.pi/2)) Kodun ekran çıktısı: 6x^5 fonksiyonunun integrali x**6 x^3 fonksiyonunun x=-1 ile x=1 arasindaki integrali 0 cos(x)'in x=-pi/2 ile x=pi/2 arasindaki integrali 2 # verilen bir fonksiyonu Taylor serisine acabiliriz print "cos(x) fonksiyonunun McLaurin serisine acilimi ", \ sym.series(sym.cos(x), x) print "cos(x) fonksiyonunun x=1 civarinda Taylor serisine acilimi ", \ sym.series(sym.cos(x), x, 1) Kodun ekran çıktısı: cos(x) fonksiyonunun McLaurin serisine acilimi 1 - x**2/2 + x**4/24 + O(x**6) cos(x) fonksiyonunun x=1 civarinda Taylor serisine acilimi cos(1) - x*sin(1) - x**2*cos(1)/2 + x**3*sin(1)/6 + x**4*cos(1)/24 - x**5*sin(1)/120 + O(x**6)

7 SymPy fonksiyonları ile yapılabilecek diğer işlemler Örnek 8: # # denklem cozmek icin kullanabiliriz print "x^4 - 1 = 0 denkleminin cozumu ", sym.solve(x**4 - 1, x) # birden fazla bilinmeyen iceren bir denklem takimini da cozebiliriz print "x + 5y = 2 ve -3x + 6y = 15 denklemlerinin cozumu" print sym.solve([x + 5*y - 2, -3*x + 6*y - 15], [x, y]) Kodun ekran çıktısı: x^4 - 1 = 0 denkleminin cozumu [-1, 1, -I, I] x + 5y = 2 ve -3x + 6y = 15 denklemlerinin cozumu: {x: -3, y: 1} # bazi komplike denklemlerin -bazi limitleri olmakla birlikte- cozumu vardir print "e^x + 1 = 0 denkleminin cozumu ", sym.solve(sym.exp(x) + 1,x)

8 SymPy fonksiyonları ile lineer cebir Örnek 9: # ornegin matris gosterimini kullanabiliriz x = sym.Symbol('x') y = sym.Symbol('y') A = sym.Matrix([[1,x], [y,1]]) print A # simdi bu matrisini karesini alalim print A**2 Kodun ekran çıktısı: Matrix([[1, x], [y, 1]]) Matrix([[x*y + 1, 2*x], [2*y, x*y + 1]]) # birden fazla matrisi carpabiliriz A = sym.Matrix([[1,x], [y,1]]) B = sym.Matrix([[x,x], [y,-1]]) C = sym.Matrix([[1,0], [0,1]]) print sym.MatMul(A, B, C) print A*B*C Kodun ekran çıktısı: Matrix([ [1, x], [y, 1]])*Matrix([ [x, x], [y, -1]])*Matrix([ [1, 0], [0, 1]]) Matrix([[x*y + x, 0], [x*y + y, x*y - 1]])

9 Ödev 6 Teslim Tarihi: 26 Aralık 2014 Soru: a) Aşağıdaki fonksiyonları bir python fonksiyonu şeklinde yazdıktan sonra 1. ve 2. türevlerini scipy.misc.derivative fonksiyonunu kullanarak verilen x ve dx değerleri için hesaplayınız. b) Bu fonksiyonların türevlerini (ister SymPy fonksiyonlarını kullanarak isterseniz elinizle) analitik olarak aldıktan sonra gerçek değerlerini verilen x değerleri için hesaplayınız. c) scipy.misc.derivative fonksiyonu ile hesapladığınız değerlerin bağıl hatasını bulduğunuz gerçek değeri de kullanarak türetiniz. 1.3xe x – 2e x, x = 1, dx = e -x * cos (2πx), x = π / 2, dx = π / x 4 – 0.15 x 3 – 0.5 x 2 – 0.25 x , x = 0.5, dx = 0.25 Bonus (10’ar puan): 1.sinx / x, x 1 = π / 2, x 2 = 0, dx = π / 64 (Eğer hata verirse hata kodunun ne demek istediğini anlamaya çalışınız. Anladığınızı koda yorum satırı olarak ekleyiniz) 2.log 2 ( x 2 – 2x + 1), x = 5, dx = 0.1


"AST409 Astronomide Sayısal Çözümleme VI. Python ve Türev." indir ppt

Benzer bir sunumlar


Google Reklamları