Algoritmalar ve Programlama DERS - 4 Yrd. Doç. Dr. Ahmet SERBES
Geçen Derste Değişken oluşturma Skaler Diziler, vektörler Matrisler Aritmetik işlemler Bazı fonksiyonların kullanımı Operatörler İlk değer verme İndeksleme Örnekler 2
Bu Derste Temel Çizim İşlemleri Fonksiyonlar 3
Temel Çizim İşlemleri Örnek: >> x = linspace(0, 4*pi, 10); >> y = sin(x); Kendi indeksine göre çizdirme: >> plot(y); Genellikle y ye göre x çizdirilir: >> plot(x, y); 4
plot fonksiyonu plot( ) fonksiyonu (x, y) çiftlerinin olduğu yerlere nokta koyar ve bu noktaların arasına çizgi çekerek çizer. Çizimlerin daha yumuşak görünmesi için daha fazla nokta alınmalı: >> x = linspace(0, 4*pi, 1000); >>plot(x, sin(x) ); x ve y vektörlerinin boyutu aynı olmalı, yoksa hata verir! 5
Uygulama Yeni bir betik açıp 1. figure komutunu kullanarak yeni bir çizim oluşturacağız 2. t vektörünü 0 ile 2π arasında yeteri kadar küçük adımlarla tanımlayacağız 3. sin(t) vektörünü çizdireceğiz hold on komutunu kullanılarak iki çizim üst üste çizdirebilir. Aynı şekilde hold off komutu bu özelliği kapatmaya yarar 4. Kırmızı kesikli çizgiyle cos(t) vektörünü demin çizdirdiğimizin üzerine çizdireceğiz 5. Daha sonra da etiketleme işlemlerini tamamlayacağız: x eksenini etiketlemek için xlabel y eksenini etiketlemek için ylabel Başlık vermek için ise title fonksiyonlarını kullanacağız. legend fonksiyonunu kullanarak vektörleri etiketleyeceğiz 6. Daha iyi bir görsellik için xlim( ) ve ylim( ) komutlarını kullanarak x ve y eksenlerini, sırasıyla [0 2π] ve [-1.4 1.4] arasında sınırlayacağız. 6
Genlik ALGORİTMALAR VE PROGRAMLAMA sin ve cos fonksiyonlari 1 sin cos 0.5 0-0.5-1 7 0 1 2 3 4 5 6 Zaman
Uygulama Top Atma Deneyi Yeni bir betik oluşturalım. Betikte ilk olarak bir takım sabitleri tanımlayalım Topun ilk yüksekliği h= 1.5m Yer çekimi ivmesi g= 9.8m/s 2 Atıldığında topun hızı v= 4m/s Atıldığında topun açısı φ= 45 derece 0 ile 1 arasında doğrusal olarak 1000 aralıklı zaman vektörü Eğer x uzaklık ve y yükseklikse, aşağıdaki denklemler zamana ve yüksekliğe bağılılığını tanımlamaktadır:, x t = v cos φ π 180 t, y t = h + v sin φ π 180 t 1 2 gt2 Topun ne zaman yere çarpacağını bulun Indeksin negatif olduğu ilk değeri bulun (find( ) fonksiyonu) Topun yere çarptığında kat ettiği x mesafesini bulun Topun çizdiği rotayı çizdirin. 8
Uzaklik (m) ALGORİTMALAR VE PROGRAMLAMA yukseklik 2 1.5 Top Atma Uygulamasi Topun Rotasi Yer Seviyesi 1 0.5 0-0.5-1 0 0.5 1 1.5 2 2.5 3 x uzakligi (m) 3 Top Atma Uygulamasi 2.5 2 1.5 1 0.5 0-0.5 x uzakligi y yuksekligi yer seviyesi -1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 zaman (ms) 9
FONKSİYONLAR Fonksiyonlar betiklere benzer. TEK bir fark vardır: Fonksiyonların fonksiyon tanımı olması gerekir. Çıkışlar Yardım Dosyası Giriş Fonksiyon Tanımı 10
Fonksiyonlar Fonksiyon tanımı: Girişler tanımlı olmalıdır function [x y z] = fonkismi(giris1, giris2) En başa ayrılmış function kelimesi yazılır. Fonksiyon ismi MATLAB dosya ismiyle aynı olmalıdır (Dosya: fonkismi.m Birden fazla çıkış varsa köşeli olmalı) parantezin içinde olmalıdır. Değerleri geri döndürmeye ihtiyaç yok! MATLAB bu işi kendiliğinden yapar. Fonksiyon içinde üretilen yerel değişkenler fonksiyon çalışmasını bitirdiğinde yok olurlar. 11
Fonksiyonlar: Örnek Aşağıdaki deklarasyon ile bir fonksiyon yazalım: function plotsin(f1) Bu fonksiyon frekansı f1 olan bir sinüsü [0 2π] arasında çizdirsin: sin(f 1 x). Fonksiyonu düzgün görüntülemek için bir periyotta 16 örnek alalım. 12
13
Örnek: Top Atma Deneyi Bir önceki örnekteki top atma deneyi için bir fonksiyon yazalım. Girişler: Topun atıldığı andaki hızı: v Topun ilk yüksekliği: h Topun atıldığı açı: theta Çıkışlar Yerin yere çarptığı süre: v sin φ π 180 + v2 sin 2 φ π 180 + 2gh t = Topun yere çarpana kadar aldığı mesafe Sabitler Yer çekimi ivmesi: g = 9.8m/s 2 Formüller: x t = v cos φ π π t, y t = h + v sin φ t 1 180 180 2 gt2 İstenenler: İlk önce topun yere çarptığı zaman aralığını bul Zaman aralığını 1000 e böl. Topun katettiği mesafeyi ve yere çarpma zamanını ekrana yazdır. Topun yörüngesini çizdir. g 14
Örnek: Faktöryel Faktöryel alan bir MATLAB programı yazalım 15
16