Alıştırma Sorularının Cevapları:

  1. Dikey atış problemini $y_{0} = 0$, $V_{0} = 10 m/s$, $g = 9.81 m/s^2$ için aşağıdaki ifadeden faydalanarak $t \in [0, 2V_0 / g]$ aralığında eşit aralıklı a) 10, b)100 zaman ($t$) değeri için çözünüz ve zamana ($t$) karşılık yükseklik ($y$) grafiğini mavi kesiksiz eğri ile iki ayrı grafikte çiziniz.
$$ y = y_0 + V_0 t - \frac{1}{2} g t^2 $$

Grafiğin eksenlerini $zaman (s)$ ve $yukseklik (m)$, başlığını $Dikey Atis Problemi$ olarak adlandırınız.

In [5]:
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
v0 = 10 # m/s
y0 = 0 # m
g = 9.81 # m/s^2
# a)
t = np.linspace(0, 2*v0 / g, 10)
y = v0*t - 0.5*g*t**2
plt.xlabel('zaman (s)')
plt.ylabel('yukseklik (m)')
plt.title('Dikey Atis Problemi')
plt.plot(t, y)
plt.show()
In [6]:
# b)
t = np.linspace(0, 2*v0 / g, 100)
y = v0*t - 0.5*g*t**2
plt.xlabel('zaman (s)')
plt.ylabel('yukseklik (m)')
plt.title('Dikey Atis Problemi')
plt.plot(t, y)
plt.show()
  1. Fahrenheit dereceden Santigrad dereceye hızlı bir dönüşüm C = (F - 30) / 2 formülüyle yapılabilir. $[20, 120]$ kapalı aralığında birbirinden eşit uzaklıkta 250 Fahrenheit dereceyi bu formülle ve standart dönüşüm formülüyle (C = 9 / 5 * (F - 32) + 180) Santigrad dereceye dönüştürünüz. Oluşan Santigrad derece değerlerini Fahrenheit dereceye karşılık çizdirerek (standart dönüşüm mavi kesiksiz doğru, yaklaşık dönüşümü kırmızı noktalı-kesikli doğru) yaklaşık formülün başarısını karşılaştırma yoluyla test ediniz.
In [14]:
def F2C_yaklasik(F):
    return (F - 30) / 2
def F2C_tam(F):
    return 5/9*(F - 32)

fahr = np.linspace(20, 120, 250)
sant_yaklasik = F2C_yaklasik(fahr)
sant_tam = F2C_tam(fahr)
plt.plot(fahr, sant_tam, 'b-')
plt.plot(fahr, sant_yaklasik, 'r-.')
plt.xlabel("[$F^{\circ}$]")
plt.ylabel("[$C^{\circ}$]")
plt.show()
    1. soruda oluşturulan grafikte görüldüğü gibi iki ifade belirli bir fahrenheit değerinde eşit olmakta (doğrular kesişmekte) ve bu doğrudan uzaklaştıkça yaklaşık ifade tam ifadeden giderek uzaklaşmaktadır. Bu değeri bularak, grafik üzerinde yeşil, içi dolu bir kare ile gösteriniz.
In [17]:
# Oncelikle grafiklerin kesistigi yer mutlaka analitik olarak
# bulunmalidir. Bunun icin iki ifadeyi esitlemeniz
# ve hangi Fahrenheit derece icin bu iki ifadenin esitlendigini
# bulmanız gerekir (Bunu numpy linalg paketiyle de yapabilirsiniz)
# (F - 30) / 2 = 5/9*(F - 32) --> F = 50
# F'in 50 oldugu noktada her iki ifade de C = 10 verir
# Bir onceki grafigi tekrar cizdirdikten sonra bu noktayi
# grafikte gosterelim.
plt.plot(fahr, sant_tam, 'b-')
plt.plot(fahr, sant_yaklasik, 'r-.')
plt.xlabel("[$F^{\circ}$]")
plt.ylabel("[$C^{\circ}$]")
# Tek bir nokta cizdirmek icin bile x ve y ekseni
# birer liste, demet ya da numpy dizisi olarak verilmelidir
plt.plot([50], [10], 'gs')
plt.show()
  1. $V_0$ hızı ile yatayla $\theta$ açı yapacak şekilde $g$ yerçekim ivmeli ortamda fırlatılan bir cismin izleyeceği yol aşağıdaki formülle verilir.
$$ y = x tan(\theta) - \frac{1}{2 V_0^2} \frac{g x^2}{cos^2 \theta} + y_0 $$

Verilen bu ifadeyi $g = 9.81$ ve $y_0 = 0$ parametrelerini bu varsayılan değerlerle anahtar kelime argümanları, diğer tüm parametreleri ($x$, $\theta$, $V_0$) ise konum argümanı olarak alan, $yatay\_atis$ adında bir fonksiyon olarak kodlayınız.

Burada x cismin yatay eksendeki koordinatı, y ise yüksekliğidir. $x \in [0, \frac{V_{0}^2 sin 2 \theta}{g}]$ aralığında oluşturacağınız a) 10 $x$ değeri için ($x_1$) cismin aldığı yolu (x'e karşılık y) kırmızı kesiksiz doğru, b) 100 $x$ değeri için ($x_2$) ise yeşil noktalı doğru ile çizdiriniz. $V_0 = 10$ m/s, $\theta = \pi / 6$ radyan alınız.

Cismin maksimum yüksekliğe çıktığı andaki x koordinatını ($xmax$) $\frac{V_0^2 sin 2\theta}{2 g}$ formülünden hesaplattıktan sonra $yatay\_atis$ fonksiyonunuzda yerine koyarak y koordinatını ($ymax$) bulunuz ve grafiğinizde bu ($xmax$, $ymax$) koordinatını mavi bir baklava dilimi (ing. diamond) işareti ile işaretleyiniz.

In [32]:
import math
def yatay_atis(x, theta, V0, y0 = 0, g=9.81):
    y = x*np.tan(theta) - 1 / (2*V0**2) * ((g*x**2) / (np.cos(theta)**2)) + y0
    return y

# ornegin parametreleri
ilk_hiz = 10
ilk_yukseklik = 0
aci = math.pi / 6
yercekimi_ivmesi = 9.81

x1 = np.linspace(0, ilk_hiz**2*np.sin(2*aci) / yercekimi_ivmesi, 10)
y1 = yatay_atis(x1, aci, ilk_hiz)
plt.plot(x1, y1, 'r-')
x2 = np.linspace(0, ilk_hiz**2*np.sin(2*aci) / yercekimi_ivmesi, 100)
y2 = yatay_atis(x2, aci, ilk_hiz, ilk_yukseklik)

xmax = ilk_hiz**2*math.sin(2*aci) / (2*yercekimi_ivmesi)
ymax = yatay_atis(xmax, aci, ilk_hiz)

plt.plot(x2, y2, 'g-.')
plt.plot([xmax], [ymax], 'bd')
plt.xlabel("x [m]")
plt.ylabel("y [m]")
plt.show()
  1. $L$ uzunluğunda kütlesiz bir sarkaç ipine bağlı $m$ kütlesi $T$ salınma dönemiyle salınıyor olsun. Aşağıda farklı uzunluklardaki sarkaçlarla yapılan salınma dönemi ölçümleri birer $numpy$ dizisi ile verilmiştir. L dizisine karşılık T dizisini kırmızı içi dolu dairelerle çizdiriniz. L ile T arasındaki ilişkinin sırasıyla 1, 2, ve 3. dereceden polinomlarla ifade edilebileceğini varsayarak ve $np.polyfit$ ile $np.poly1d$ fonksiyonlarını kullanarak elde edeceğiniz polinomları gözlemsel noktalarınızın üzerine çizdiriniz. Sizce hangi dereceden polinom veriyi daha iyi temsil etmektedir?
In [34]:
L = np.linspace(0.1, 1.0, 10)
T = np.array([0.6, 0.9, 1.1, 1.3, 1.4, 1.6, 1.7, 1.8, 1.9, 2.0])
plt.plot(L, T, 'ro')
ks1 = np.polyfit(L, T, 1) # 1. dereceden polinom katsayilari
ks2 = np.polyfit(L, T, 2 )# 2. dereceden polinom katsayilari
ks3 = np.polyfit(L, T, 3) # 3. dereceden polinom katsayilari
dogru = np.poly1d(ks1)
parabol = np.poly1d(ks2)
kubik = np.poly1d(ks3)
# Iyi bir goruntu icin daha cok nokta iceren bir 
# L dizisine ihtiyacimiz olacak (L2)
L2 = np.linspace(0.1, 1.0, 100)
plt.plot(L2, dogru(L2), 'b--')
plt.plot(L2, parabol(L2), 'g--')
plt.plot(L2, kubik(L2), 'm--')
plt.show()