################################################
## Modül yolunu varsayılan yol olarak ekleme ve modülü içe aktarma
import os
import sys
# Bu dosyanın bulunduğu dizini al
current_dir = os.path.abspath('')
# 3 üst dizine çık
module_dir = os.path.join(os.path.abspath(os.path.join(current_dir, os.pardir, os.pardir, os.pardir)), 'moduller')
# moduller dizinini yol olarak ekle
sys.path.append(module_dir)
# bilYonMod.py modülünü içe aktar
import bilYonMod as bym
################################################
import numpy as np
import matplotlib.pyplot as plt
# Fonksiyon
def fonk_y_x(y, x):
return x
# Başlangıç koşulları
x0 = 0
y0 = 1
xSon = 1
n = 10
# Çöz
xTum, yTum = bym.add_coz_euler(fonk_y_x, x0, xSon, y0, n)
# Çiz
plt.plot(xTum, yTum, 'o-', color='r', label='Euler')
plt.plot(xTum, 1+(xTum**2)/2, 'k', label='Analitik')
plt.xlabel('$x$')
plt.ylabel('$y(x)$')
plt.legend()
plt.show()
BDP - Euler Yöntemi
- Euler yöntemi diferansiyel denklem çözümü için kullanılan en basit yöntemdir.
- Alternatif isimleri Euler-Cauchy veya nokta-eğim (point-slope) yöntemidir.
- Kabaca türevin tanımını kullanır.
Çözüm olarak Taylor serisini kullanacağız.
- Amacımız başlangıç koşulundan itibaren adım adım
fonksiyonunu bulmaktır. noktasından noktasına ilerlediğimiz için bu yöntem “ileri adım” yöntemidir.
Alternatif olarak her (x+h) noktası için integral de alabiliriz ancak diferansiyel denklem çözerken sayısal integral alma yöntemleri kullanmak sakıncalıdır.
Hata Analizi
Bir uygulamada Taylor serisi kullanılırsa hata analizi aşağıdaki gibi yapılır. Farz edelim ki
Hata terimi
Burada
Euler Yöntemi ile Çözümde Hata Analizi
Euler yöntemi kullanılırken her bir adımdaki kesme hatası
Euler yöntemi ile diferansiyel denklem çözümünde kesme hata payı
Euler Yönteminin Geometrik Tasviri
Basitlik için çözmek istediğimiz
Buradan şu sonuç çıkarılabilir. Bulmak istediğimiz
Euler Yönteminin Kodlanması
add_coz_euler
adlı fonksiyon bilYonMod.py modülünde tanımlıdır.
add_coz_euler
fonksiyonunu inceleyiniz.
add_coz_euler(fonk_y_x, xBaslangic, xBitis, yBaslangic, adimSayisi)
fonksiyonunu çağırırken diferansiyel denklemin (
Aşağıdaki diferansiyel denklemi çözen bir örneği inceleyelim.
Çözüm aşağıdaki gibi olacaktır.
Alıştırma 1
Euler yöntemi ile aşağıdaki diferansiyel denklemi çözün ve analitik çözüm ile karşılaştırın.
Analitik çözüm:
Çözüm
################################################
## Modül yolunu varsayılan yol olarak ekleme ve modülü içe aktarma
import os
import sys
# Bu dosyanın bulunduğu dizini al
current_dir = os.path.abspath('')
# 3 üst dizine çık
module_dir = os.path.join(os.path.abspath(os.path.join(current_dir, os.pardir, os.pardir, os.pardir)), 'moduller')
# moduller dizinini yol olarak ekle
sys.path.append(module_dir)
# bilYonMod.py modülünü içe aktar
import bilYonMod as bym
################################################
import numpy as np
import matplotlib.pyplot as plt
# Fonksiyon
def fonk_y_x(y, x):
return -4*y + x**2
# Başlangıç koşulları
x0 = 0
y0 = 1
xSon = 0.03
n = 10
# Çöz
xTum, yTum = bym.add_coz_euler(fonk_y_x, x0, xSon, y0, n)
# Analitik çözüm
yAnalitik=(31/32)*np.exp(-4*xTum) + (1/4)*(xTum**2) - (1/8)*xTum + (1/32)
# Çiz
plt.plot(xTum, yTum, 'o-', color='r', label='Euler')
plt.plot(xTum, yAnalitik, 'k', label='Analitik')
plt.xlabel('$x$')
plt.ylabel('$y(x)$')
plt.legend()
plt.show()
Problemler
Problem 1
- Basit bir RC devresi ele alalım. Bu devrede voltaj kaynağı olmasın, kondansatör
s’de V gerilime sahip olsun. Devrede k direnci ve F kondansatörü olsun. Devre bu haldeyken devreyi tamamlayalım. Devrenin voltajı-zaman grafiğini Euler yöntemi kullanarak çiziniz.
Analitik çözüm:
Problem 2
Thoryum-234’ün yarılanma ömrü
Analitik çözüm: