BİLGİSAYAR PROGRAMLAMA VE FİZİKTE PROGRAMLAMA DERSLERİ İÇİN MATLAB ÇALIŞMA NOTLARI Mehmet ÖZKAN input:bu komut kullanıcıdan veri girişi istiğinde kullanılır. Etkin ve etkileşimli bir program yazımında çok kullanışlıdır. Genel formatı; degisken_adi=input('ifade') şeklindedir. ÖRNEK:Program çalıştırıldığında bizden bir A değeri girmemizi istesin; >> A=input('Bir değer giriniz = ') Bir değer giriniz = 5 A = >> Gibi 5 ÖRNEK:A ve B gibi girilen iki sayıyı çarpan bir program yazmak istesek; A=input('A sayısının değerini girin = '); B=input('B sayısının değerini girin = '); SONUC=A*B A sayısının değerini girin = 12 B sayısının değerini girin = 5 SONUC = 60 :Atanan ya da girilen bütün değer ve tanımlamaları siler. ÖRNEK:A=5 ve B=3 olarak girdiniz ve C yi de A ve B nin toplamı şeklinde tanımladınız. Bu işlemlerin sonucunda A=5, B=3 ve C=8 olarak atanmış olur. Bundansonra siz yazana kadar yada bu derleri değiştirene kadar A,B ve C nin değerleri değişmez. Bu değerler yandaki Workspace penceresinde görülebilir. Clear yazıp enter e basıldığında yada program kodları içinde herhangi bir yere yazıldığıda komutu çalıştıktan önceki değerler silinir. Bu komut çalıştıktan sonra yeni değer girilene kadar yandaki Workspace penceresi boş görünür. >> A=5
A = 5 >> B=3 B = 3 >> C=A+B C = >> 8 Girilen değerler Workspace sayfasında görülür
Clear komutu çalıştıktan sonra girilen değerler Workspace sayfasından silinir. :Sadece komut penceresini temizler girdiğiniz yada atadığınız herhangi bir değer kaybolmaz.
disp:bu komutun çok çeşitli kullanımları olmasına rağmen bizim öğreneceğimiz iki kullanım şekli vardır bunlardan birincisi ekrana yzı yazdırmak ikincisi ise satırlar arasında satır boşluğu bırakmak. Kullanım şekli; disp(sayı) eğer ekrana rakam yazdıracaksak parentez içine sadece rakam yazılır. Disp( ifade ) Eğer ekrana bir harf, yazı ya da cümle yazdıracaksak parantez içerisine tırnak içinde yazdıracağımız ifadeyi yazarız.
ÖRNEK: İkinci kullanımında ise satırlar arasında boşluk bırakmak için kullanılır.
Yukarıda editör de yazılan program çalıştırıldığında aşağıdaki çıktıyı alırız. Yukarıda da görüldüğü gibi üstten üç satır ve ortadan üç satır boşluk bırakılmıştır.
if fonksiyonu: Genel yazım biçimi if mantıksal ifade işlem yada deyim şeklindedir. Eğer mantıksal ifade doğru ise deyim ya da işlem yapılır ve ile işlem sona erdirilir. İf ile mantıksal ifade arasında en az bir boşluk bırakılmalıdır. Daha doğrusu if ve sözcükleri mavi renkte olmalıdır. Eğer mavi renkte iseler her türlü yazım düzeni doğrudur. ÖRNEK:Editörde yazdığımız bir programda girilen sayının pozitif mi, negatif mi yosa sıfır mı olduğunu söyleyen programı yazınız. A=input('Bir sayı giriniz = '); if A<0 disp('girdiğiniz sayı negatif bir sayıdır') if A>0 disp('girdiğiniz sayı pozitif bir sayıdır') if A==0 disp('girdiğiniz sayı sıfır dır')
if else :Eğer karşılaştırılacak iki mantıksal ifade varsa bu fonksiyon kullanılabilir. Ancak aynı durum az önce anlatılan if.. yapısı ile de yapılabilir sadece iki defa if kullanmak gerekir. Şimdi yukarıdaki örneği sayının pozitif mi yoksa negatif mi olduğunu karşılaştıran programı yazalım. Burada karşılaştırılacak iki ifade var eğer birinci doğru ise ikinciyi yapma birinci yanlışsa ikinciyi yap şeklindedir. ÖRNEK: A=input('Bir sayı giriniz = '); if A<0 disp('girdiğiniz sayı negatif bir sayıdır') else disp('girdiğiniz sayı pozitif bir sayıdır') if elseif elseif else :Eğer karşılaştırılacak bir den fazla sınama varsa bu durumda elseif yapısı kullanılır. İf ileilgili ilk örneği bu fonksiyonla tekrar yapalım. ÖRNEK: A=input('Bir sayı giriniz = '); if A<0 disp('girdiğiniz sayı negatif bir sayıdır') elseif A>0 disp('girdiğiniz sayı pozitif bir sayıdır') else disp('yazığınız rakam sıfırdır.')
for :Kullanım şekli; for döngü_değişkeni=ifade şeklindedir. işlem ya da deyimler Örneğin döngü_değişkeni=m:j:n şeklinde ise burada m:j:n in anlamı m ilk değeri n son değeri ve j de artım miktarını gösterir. Her for döngüsü ile kapatılmalıdır. ÖRNEK:1 den 5 e kadar sayıların karelerini sırasıyla ekrana yazdıran programı yazalım. for a=1:1:5 x=a^2
ÖRNEK:Ortalamasını alacağımız değer sayısını girdikten sonra girilen değerlerin ortalamasını alan programı yazınız. N=input('ortalaması alınacak sayı miktarı = '); T=0; for a=1:1:n; S=input('Sayı gir = '); T=T+S; O=T/N
ÖRNEK: şeklinde 5X5 lik bir matris oluşturabilecek bir program yazınız. A=zeros(5,5); T=0; for i=1:1:5; for j=1:1:5; T=T+1; A(i,j)=T; A
plot:x-y Kartezyen koordinatlarında verilen x-y değerlerine göre grafik oluşturulur. ÖRNEK: y=x2 grafiğini çizdirelim. x=0:1:10; y=x.^2; plot(x,y ÖRNEK: x=-2 den 2 ye kadar 5 değer alsın ve bu değerlere karşılık y=x2 grafiğini çizdirelim. x=-2:1:2; y=x.^2; plot(x,y)
ÖRNEK: aynı soruyu x in 9 değer alması durumunda yapalım x=-2:0.5:2; y=x.^2; plot(x,y) Grafiklerden de anlaşılacağı gibi plot komutu grafik çizerken programın oluşturduğu her x değerine karşılık gelen y değerlerinin oluşturduğu noktaları birleştirmektedir. Bu neden le grafiğimizin ne kadar düzgün olmasını istiyorsak okadar çok nokta oluşturmalıyız bunu da ancak x değerlerinin sayısını artırmakla başarabiliriz. Yani x değeri -2 ile 2 arasında nekadar çok değer alabilirse okadar çok noktamız olur. Biz x i ister x=-2:1:2 program satırı ile x= -2,-1,0,1,2 şeklinde 5 elemanlı bir satır vektörü yaparız isterse, x=-2:0.5:2 satırı ile x= -2,-1.5,-1,0.5,0,0.5,1,1.5,2 Şeklinde 9 elemanlı bir satır vektörü yaparız böylece 9 x değerine karşılık gelen 9 y değeri oluşur ve program plot komutu ile 9 noktayı birleştirerek bir grafik çizer istersek aradaki artırma miktarını dahada küçülterek nokta sayısını daha da artırabiliriz.
ÖRNEK: x=-2:0.01:2; y=x.^2; plot(x,y) axis:grafik çizdirirken eksenleri ayarlamamızı sağlar; kullanım şekli; axis([x1 x2 y1 y2]) x1, x ekseninin 1. Değeri x2, x ekseninin 2. Değeri y1, y ekseninin 1. Değeri y2, y ekseninin 2. Değeri ÖRNEK: yukarıdaki y=x2 grafiğini çizen programda x ekseni-10 ile 10 arasında değişsin y eksenide -20 ile 20 arasında değişsin. x=-2:0.01:2; y=x.^2; plot(x,y) axis([-10 10-20 20])
hold on: çizdirilen grafik ekranının ekranda sürekli kalması sağlanır. Daha sonra çizilen grafikler de bu ekran üzerinde gözlenebilir. hold off: daha önce kullnılan bir hold on komutu varsa bunu iptal için kullanılır. pause:çizdirilen grafiğin ekran da nekadar süre durması gerektiğini belirleyebileceğimiz komut. Kullanım şekli Pause(süre) Eğer süreyi belirtmezseniz grafik ekranda sürekli durur. ÖRNEK:Belirlibir ilk hızı ve atış açısı verilen bir cismin çıkacağı max yüksekliği, uçuş süresini ve menzili veren bir program yazınız. V0=input('Atış hızını giriniz = '); A=input('Atış açısını giriniz = '); g=9.81; V0x=V0*cos(A); V0y=V0*sin(A); tu=2*v0y/g Ymax=V0y-tu/2-1/2*g*(tu/2)^2 Xm=V0x*tu
ÖRNEK:Belirli bir ilk hız ve atış açısı verilen bir cismin çizdiği eğik atış yörüngesini çizdiren programı yazınız? V0=input('Atış hızını giriniz = '); A=input('Atış açısını giriniz = '); g=9.81; V0x=V0*cos(A); V0y=V0*sin(A); tu=2*v0y/g Ymax=V0y-tu/2-1/2*g*(tu/2)^2 Xm=V0x*tu t=0:0.01:tu; y=v0y*t-1/2*g*(t).^2 x=v0x*t plot(x,y) ÖRNEK:Belirli bir ilk hızla ve açı ile atılan bir cismin t=0 dan t uçuş süresine kadar geçen sürede izlediği eğik atış yörüngesini çizen programı yazınız? (eksenler x=0 ile 100 y=0 ile 50 olsun) V0=input('Atış hızını giriniz = '); A=input('Atış açısını giriniz = '); g=9.81; V0x=V0*cos(A); V0y=V0*sin(A); tu=2*v0y/g Ymax=V0y-tu/2-1/2*g*(tu/2)^2 Xm=V0x*tu for s=0:0.01:tu t=0:0.01:s; y=v0y*t-1/2*g*(t).^2 x=v0x*t hold on axis([0 100 0 50]) plot(x,y) pause(0.1)
ÖRNEK:Belirli bir ilk hızla ve farklı üç açı ile atılan bir cismin t=0 dan tuçuş süresine kadar geçen sürede çizdiği eğik atış yörüngelerini farklı renklerde çizen program yazınız? CEVAP % Bu program aynı hızda farklı açılarda atılan bir cismin yapmış olduğu % eğik atış yörüngelerini çizer. V0=input('Atış hızını giriniz ='); %Atış açıları A1=input('1. Atış açısını giriniz ='); A2=input('2. Atış açısını giriniz ='); A3=input('3. Atış açısını giriniz ='); g=9.81; %Birinci açı için yörünge V0x=V0*cos(A1); V0y=V0*sin(A1); tu=2*v0y/g Ymax=V0y-tu/2-1/2*g*(tu/2)^2 Xm=V0x*tu hold on axis([0 100 0 50]) for s=0:0.05:tu; t=0:0.05:s; y=v0y*t-1/2*g*t.^2; x=v0x*t; plot(x,y,'b','linewidth',2) pause(0.1) %ikinci açı için yörünge V0x=V0*cos(A2); V0y=V0*sin(A2); tu=2*v0y/g Ymax=V0y-tu/2-1/2*g*(tu/2)^2 Xm=V0x*tu for s=0:0.05:tu; t=0:0.05:s; y=v0y*t-1/2*g*t.^2; x=v0x*t; plot(x,y,'k','linewidth',2) pause(0.1) %üçüncü açı için yörünge V0x=V0*cos(A3); V0y=V0*sin(A3); tu=2*v0y/g Ymax=V0y-tu/2-1/2*g*(tu/2)^2 Xm=V0x*tu for s=0:0.05:tu; t=0:0.05:s; y=v0y*t-1/2*g*t.^2; x=v0x*t; plot(x,y,'r','linewidth',2) pause(0.1)