38
MATLAB ILE PROGRAM YAZMAK Su ana kadar Matlab ile gerçeklestirdigimiz uygulamalarda ,belirli bir islemi gerçeklestirmek üzere gerekli olan Matlab komut ya da fonksiyonlarini Matlab komut satirindan,>> sembollerinden sonra tek tek girerek icra ediyorduk. Oysa,Matlab komut ya da fonksiyonlarindan gerçeklestirmek istediginiz bir isle iliskili özel bir grubu,bir dosyaya kaydederek,bu dosya isminin çagrilmasi ile icra edebilirsiniz.Sonuçta çok pratik ve etkin bir yol ortaya çikar;söz konusu islemin gerektigi her anda hazirlanan dosya icra edilerek,komutlarin tek tek girilmesine gore, önemli bir zaman tasarrufu saglanir. Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M- dosyasi( M-file ) adi verilir.Bu tip dosyalariin uzantisi daima .m seklinde olmalidir.Bir Matlab M dosyasi,bir komut grubu içerdigi için tanim itibari ile bir program dosyasidir.Dolayisi ile ,Matlab’de,M-dosyalari olusturularak programlama yapilabilir. M dosyasi içine tüm Matlab komut ve fonksiyonlari yerlestirilebilir;bunlar arasinda asagida inceleyecegimiz kontrol komutlari da bulunabilir.M-dosyalari aslinda bilinen metin(text) dosyasi tipinde dosyalardir.Ancak özel bir komut yorumlayicisi içinden geçirilirler. Matlab’de birçok matematik ya da mühendislik problemini çözmek için yazilacak programlar C/C++,FORTRAN ya da PASCAL’daki karsiliklarina göre çok daha basit ve kisadir.Bu aslinda beklenen bir sonuçtur çünkü Matlab’de gerçekte bu amaçla kullanilacak pek çok hazir fonksiyon mevcuttur. MATLAB’TE BIR m-DOSYAYI(PROGRAMI) ÇALISTIRMAK Matlab’de bir program çalistirmak için asagidaki adimlar izlenmelidir: 1)Program Matlab editörü içinde yazilir ve saklanir. 2)Programin saklandigi dosya daima .m uzantili olmalidir. 3)Programi çalistirmak için ya komut satirindan ismi girilerek enter’a basilir veya asagidaki gibi Debug/Run menüsü kullanilir: 4)Programi icra edebilmek için,komut satirinda, sadece programin adi yazilir;uzantisi yazilmamalidir.

MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

  • Upload
    lynhi

  • View
    251

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

MATLAB ILE PROGRAM YAZMAK

Su ana kadar Matlab ile gerçeklestirdigimiz uygulamalarda ,belirli bir islemi gerçeklestirmek üzere gerekli olan Matlab komut ya da fonksiyonlarini Matlab komut satirindan,>> sembollerinden sonra tek tek girerek icra ediyorduk.

Oysa,Matlab komut ya da fonksiyonlarindan gerçeklestirmek istediginiz bir isle iliskili özel bir grubu,bir dosyaya kaydederek,bu dosya isminin çagrilmasi ile icra edebilirsiniz.Sonuçta çok pratik ve etkin bir yol ortaya çikar;söz konusu islemin gerektigi her anda hazirlanan dosya icra edilerek,komutlarin tek tek girilmesine gore, önemli bir zaman tasarrufu saglanir.

Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin uzantisi daima .m seklinde olmalidir.Bir Matlab M dosyasi,bir komut grubu içerdigi için tanim itibari ile bir program dosyasidir.Dolayisi ile ,Matlab’de,M-dosyalari olusturularak programlama yapilabilir.

M dosyasi içine tüm Matlab komut ve fonksiyonlari yerlestirilebilir;bunlar arasinda asagida inceleyecegimiz kontrol komutlari da bulunabilir.M-dosyalari aslinda bilinen metin(text) dosyasi tipinde dosyalardir.Ancak özel bir komut yorumlayicisi içinden geçirilirler.

Matlab’de birçok matematik ya da mühendislik problemini çözmek için yazilacak programlar C/C++,FORTRAN ya da PASCAL’daki karsiliklarina göre çok daha basit ve kisadir.Bu aslinda beklenen bir sonuçtur çünkü Matlab’de gerçekte bu amaçla kullanilacak pek çok hazir fonksiyon mevcuttur.

MATLAB’TE BIR m-DOSYAYI(PROGRAMI) ÇALISTIRMAK

Matlab’de bir program çalistirmak için asagidaki adimlar izlenmelidir:

1)Program Matlab editörü içinde yazilir ve saklanir.

2)Programin saklandigi dosya daima .m uzantili olmalidir.

3)Programi çalistirmak için ya komut satirindan ismi girilerek enter’a basilir veya asagidaki gibi Debug/Run menüsü kullanilir:

4)Programi icra edebilmek için,komut satirinda, sadece programin adi yazilir;uzantisi yazilmamalidir.

Page 2: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

SEÇME(SELECTION) TIPINDEKI KONTROL DEYIMLERI

IF DEYIMI if deyimi,Matlab dilinde sartli dallanma(conditional branching) adi verilen islemi gerçeklestiren bir deyimdir. Sartli dallanma, herhangi bir programlama dili için temel kontrol yapisidir. Sartli dallanma islemi sayesinde,bir program, kararlar alma imkanina kavusur; bir ifadenin sonucuna göre, bir komutlar dizisinin icra edilip edilmeyecegine karar verebilir. Ifadenin degeri, bir icradan digerine degisebilecegi için, bu özellik bir programa farkli verilere karsi farkli sekillerde davranma imkani saglar. Matlab dilinde sartli dallanma if ve else anahtar sözcükleri ile gerçeklestirilir. if deyiminin en basit sekli için yazilis biçimi asagidaki gibidir:

if ifade deyim1; end deyim2;

Burada ifadenin degeri dogru(true) ise deyim1 icra edilir sonra icra deyim2’ye geçer.Ifadenin degeri yanlis(false) ise bu durumda da dogrudan deyim2’ye geçilir.Ifadenin degeri yanlis ise deyim1 icra edilmeyecektir.Asagida if yapisini açiklayan bir akis diyagrami verilmistir.

if deyimi için akis diyagrami(flow chart) If deyimi else sözcügü ile birlikte kullanilirsa asagidaki yazilis biçimi kullanilir: if ifade deyim1 ; else

Page 3: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

deyim2; end deyim3; ... Bu durumda,ifadenin degeri dogru ise deyim1 icra edilir ve sonra deyim3’e geçilir.Ifadenin degeri yanlis ise,bu durumda da deyim1 atlanarak dogrudan else’i izleyen deyim2’ye geçilecek ve bu icra edildikten sonra da deyim3 ile devam edilecektir.Asagida bu yapi ile iliskili bir akis diyagrami verilmistir.

if deyiminde,ifadenin degeri dogru oldugu zaman sadece deyim1 gibi tek bir deyim degil de bir deyimler grubunun icra edilmesi isteniyorsa bu durumda bu deyimler grubu if-end sözcükleri arasina yerlestirilir: if ifade deyim1; deyim2;

..

deyim_n; end deyim_x; .. Bu durumda ifade dogru ise deyim1,deyim2,..deyim_n ile belirtilen deyimler grubunun tümü icra edilerek deyim_x’e geçilecektir;ifade yanlis ise de bu durumda if’e ait deyimler blogu atlanarak dogrudan deyim_x’e geçilecektir. Ayni sey if else yapisi için de söz konusudur: If ifade Deyim1; Deyim2;

..

Page 4: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

deyim_n; else deyim_n+1; deyim_n+2;

..

deyim_m; end deyim_k; ... Yukardaki yapida,ifade dogru ise,deyim1,deyim2,..,deyim_n icra edilerek deyim_k’ya geçilecek,ifade yanlis ise bu durumda da,if içindeki deyimler atlanarak sadece deyim_n+1,deyim_n+2,..,deyim_m icra edilerek programin icrasi daha sonra deyim_k’ya erisecektir. ÖRNEK 1: I.File/New/m-file yolu ile bir m-file açiniz:

II.Asagidaki komutlari giriniz:

III.Debug/Save and Run menu adimlarini izleyiniz:

Page 5: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

IV.Karsiniza asagidaki pencere gelecektir:

m-dosyaya IF1.m adini vererek Save butonunu tiklayiniz.

V.Program Debug/Run ile çalistirilinca BIR TAM SAYI GIRINIZ mesaji gelir;mesela 12 girilip enter’a basilinca “GIRDIGINIZ SAYI 10 DAN BUYUKTUR” mesaji gelecektir:

Bu çok basit ve kisitli programda kullanici klavyeden 10’dan daha büyük bir sayi girdigi zaman,program yukardaki çiktida görülen mesaji verecek fakat 10 ya da daha küçük bir sayi girilirse bu durumda herhangi bir mesaj görüntülenmeyecektir.

ÖRNEK PROGRAM 2: I.Asagidaki m-dosyayi olusturunuz:

Page 6: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

II.Programi çalistirdiginizda,bu programda ,klavyeden,10’dan büyük bir sayi girilirse,asagidaki BIR TAM SAYI GIRINIZ..14 GIRDIGINIZ SAYI 10 DAN BUYUKTUR

Çiktisi elde edilecek,10 ya da daha küçük bir sayi girilirse de asagida görüldügü gibi,

>> if1 BIR TAM SAYI GIRINIZ..7 GIRDIGINIZ SAYI 10 YA DA DAHA KUCUK BIR SAYIDIR >>

Bir mesaj elde edilecektir.Böylece if-else yapisi ile daha kapsamli bir kontrol isleminin gerçeklestirilebilecegi söylenebilir.

PROBLEM:

f(x) ve g(x) fonksiyonlari,

x>0 ise f(x)=1/(1+ln(x)) ve g(x)=1/(x+ln(x))

x≤0 ise f(x)=1/(1+x2) ve g(x)=1/(1+x+ x2 )

Page 7: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

seklinde tanimlanmaktadir.x degeri klavyeden girildigine göre,f(x) ve g(x)’i hesaplatan ve yazdiran bir Matlab programi yaziniz.

PROBLEMIN ÇÖZÜMÜ OLAN MATLAB M-DOSYASI

PROGRAMIN ÇIKTISI:

x’in degeri yaklasik olarak e sayisi olarak girilirse(e sayisinin degeri e=2.718..)

çiktisi elde edilir.x negatif bir deger olarak girilince de,

çiktisi elde edilecektir.

PROBLEM:

Page 8: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

Bir satis elemaninin ,sattigi ürün miktarina göre alacagi günlük ücret asagidaki gibi belirlenmektedir:

Günlük satis miktari 50’den az ise,4,000,000TL lik sabit ücrete satilan ürün basina 50,000TL’lik prim eklenerek günlük ücret belirlenecektir. Günlük satis miktari 50 ya da daha fazla ise bu durumda günlük sabit ücret 5,000,000TL alinarak satilan ürün basina da ilk 50 ürün için 50,000TL,50’yi asan kisim için de 60,000TL prim verilerek günlük ücret belirlenecektir.

Bir saticinin günlük satis miktari bilgisayara girildiginde saticinin alacagi günlük ücreti hesaplayan bir C programi yaziniz.

SATIS PROBLEMI IÇIN MATLAB PROGRAMI:

Gerekli tüm araliklarin kontrolü için,program 40,50 ve 60 satis miktarlari için test edilrek asagidaki sonuçlar elde edilmistir:

Page 9: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

PROBLEM:Bilgisayara negatif olmayan bir sayi girildiginde bu sayinin karekökünü hesaplayan ,negatif bir sayi girildiginde ise kullaniciyi uyaran bir MATLAB programi yaziniz.

KAREKÖK PROGRAMININ LISTESI:

KAREKÖK PROGRAMININ ÇIKTISI:

Programda,verilen bir sayinin karekökünü hesaplayan sqrt fonksiyonu kullanilmistir..

Page 10: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

KARSILASTIRMA IFADELERI Dogal olarak, sartli bir ifadede iki deger arasinda karsilastirma islemi gereklidir. Bazen iliskisel operatörler olarak ta anilan (relational operators ) 6 karsilastirma operatörü vardir.Bunlar asagidaki tabloda belirtilmistir:

Iliskisel operatörler de ikili operatörlerdir. (binary operators ) Yani bu operatörlerin her biri iki farkli deger(operand) üzerinde islem görür. Iliskisel bir ifadenin sonucu dogru ise Matlab derleyicileri bunu 1,iliskisel bir ifadenin sonucu yanlis ise de Matlab derleyicileri bunu 0 olarak kabul ederler.Buna göre asagidaki ifadelerin sonuçlarini inceleyiniz:

Asagidaki Matlab m-dosyasi ise,çesitli karsilastirma islemlerinin sonuçlarini ekrana aktarmaktadir:

Page 11: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

DIKKAT EDILECEK NOKTA: Karsilastirma islemlerinde esitlik kontrolünün == sembolü yerine yanlislikla = sembolü ile yapilmasi durumu.

IÇ IÇE IF DEYIMLERI(NESTED IF STATEMENTS)

Tek bir if deyimi programin iki seçenekten birini seçmesine olanak saglar. Fakat bir çok pratik uygulamada tek bir if deyimi yetersiz kalir. Birinci karari aldiktan sonra ikinci karar, ikinciden sonra üçüncü kararin alinmasi gerekebilir. Bu tipte bir program akisi,iç içe if deyimlerini gerektirir. Farz edelim ki üç tamsayiyi kabul eden ve bunlarin en küçügünü bulan ve yazdiran bir program yazmak istiyorsunuz, Iç içe if deyimleri ile programi asagidaki gibi yazabilirdiniz.

ÜÇ TAMSAYININ EN KÜÇÜGÜNÜ BULAN MATLAB PROGRAMI:

Page 12: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

PROGRAMIN ÇIKTISI:

Iç içe if deyimleri, her else’ in dogru if ile uyusmasi konusunda problem yaratir. Bu genellikle yakindaki else problemi adi ile anilir. Mesela yukardaki programda, ilk else, ikinci if ile iliskilidir. Genel kural sudur:

Bir else, kendisinden önce gelen en yakin if ile iliskilidir seklindedir.

Bununla birlikte her bir if deyimi sadece bir else cümlecigine sahip olabilir.

if-else-if BASAMAK YAPISI

Birbirini izleyen çok sayida kosul kontrolünü gerçeklestirmeye yarayan bir yapi if-else- if basamagi adini alir ve yazilis biçimi asagidaki gibidir:

Page 13: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

If ifade1

Deyim1;

elseif ifade2

Deyim2;

elseif ifade3

Deyim3;

...

else

Deyim_n;

End

Deyim_n+1;

Bu yapi su sekilde çalismaktadir:

Önce ifade1 kontrol edilir;bu ifade dogru ise,Deyim1 icra edilir ve sonra Deyim_n+1’e geçilir.

Ifade1 yanlis ise,o takdirde,ifade2 kontrol edilir.Bu ifade dogru ise,bu durumda sadece Deyim2 icra edilir ve sonra Deyim_n+1’e geçilir.

Ifade2 yanlis ise,o takdirde,ifade3 kontrol edilir.Bu ifade dogru ise,bu durumda sadece Deyim3 icra edilir ve sonra Deyim_n+1’e geçilir.

Bu islemler daha fazla sayida else if bulundugu takdirde ayni sekilde devam eder.

if’ler ile kontrol edilen ifadelerin tümü de yanlis ise,bu durumda programin kontrolü else’i izleyen Deyim_n’e geçer ve bu deyim icra edilir.Daha sonra kontrol Deyim_n+1’e geçecektir.

Yukardaki yapi içinde,Deyim1,Deyim2,..Deyim_n ile belirtilen birimler tek bir deyimden ibaret olabilecegi gibi, deyimler grubundan da olusabilir.

Page 14: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

ÖRNEK PROBLEM:

Bu örnekte basit bir vergi hesabi programi gelistirmek istiyoruz.Gelir vergisinin asagidaki kurallara göre belirlendigini var sayalim:

Gelir≤150,000,000 ise vergi orani %25

Gelir≤300,000,000 ise vergi orani %30

Gelir≤600,000,000 ise vergi orani %35

Gelir≤1,200,000,000 ise vergi orani %40

Gelir>1,200,000,000 ise vergi orani %50

Bu problemi Matlab dilinde programlayabilmek amaci ile,asagidaki basit algoritmayi uygulayacagiz:

a)Gelir bilgisi klavyeden girilecektir.

b)Gelir bilgisi,yukardaki vergi hesaplama kurallarina göre kontrol edilerek vergi hesaplanacaktir.

c)Hesaplanan vergi ekrana yazdirilacaktir.

VERGI HESABINI GERÇEKLESTIREN MATLAB PROGRAMININ LISTESI:

v1=150000000*0.25;

v2=150000000*0.30;

v3=300000000*0.35;

v4=600000000*0.40;

Page 15: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

gelir=input('\nVERGI MUKELLEFININ GELIRI ');

if gelir<=150000000

vergi=gelir*0.25;

elseif gelir<=300000000

vergi=v1+(gelir-150000000)*0.3;

elseif gelir<=600000000

vergi=v1+v2+(gelir-300000000)*0.35;

elseif gelir<=1200000000

vergi=v1+v2+v3+(gelir-600000000)*0.4;

else

vergi=v1+v2+v3+v4+(gelir-1200000000)*0.5;

end

fprintf('\nHESAPLANAN GELIR VERGISI=%12.2f\n\n',vergi);

end

PROGRAMIN ÇIKTILARI:

Page 16: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

Yukardaki programda uygulanan vergilendirme mantigi su sekildedir:

Örnegin,bir kisinin geliri 200,000,000 TL olsun.Bunun ilk 150,000,000 TL’si %25’ten,kalan

200,000,000-150,000,000=50,000,000 TL’si ise %30’dan vergilendirilecektir.

O nedenle programin basinda her araliga ait sabit vergiler hesaplanarak v1,v2,v3 ve v4 degiskenlerine atanmaktadir.

ÖRNEK PROBLEM:IKINCI DERECE DENKLEMININ KÖKLERININ BULUNMASI:

Lise yillarinda ögrendiginiz ikinci derece denklemi,

ax2 + bx + c = 0

seklinde ifade edilir ve denklemin köklerinin varligi hakkinda bilgi sahibi olabilmek için,denklemin diskriminanti adi verilen,

∆=b2-4ac

ifadenin hesaplanmasi gerekir.Diskriminantin degerlerine göre,sayet,

∆<0 ise denklemin gerçel sayilarla ifade edilebilecek bir kökü yoktur.

Page 17: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

∆=0 ise denklemin ,degerleri birbirine esit olan iki kökü vardir ve bunlar,

x1=x2= -b/(2a)

seklinde hesaplanirlar.Bunlara iki kat kök ya da çakisik kök adi verilir.

∆>0 ise de denklemin birbirinden farkli iki gerçel kökü vardir ve bunlar,

x1=(-b+√∆)/(2a)

ve

x1=(-b-√∆)/(2a)

seklinde hesaplanirlar.

ÖRNEK:IKINCI DERECE DENKLEMININ KÖKLERINI BULAN PROGRAM

Bu uygulamayi gerçeklestirebilmek için asagidaki adimlari izleyiniz:

1)Matlab’in File/New /M-file menü adimlarini izleyerek matlab editörünü açiniz:

2)Gelen editöre asagidaki programi giriniz:

Page 18: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

3) Programi File/Save menüsü yardimi ile ikider.m adi ile saklayiniz.

4)Matlab komut satirina asagidaki ismi giriniz:

» ikider

a katsayisi..1

a =

1

b katsayisi..1

b =

1

c katsayisi..1

c =

1

d =

-3

gerçek kök yok

Page 19: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

Program çalisinca a b ve c katsayilarini istemis ve kullanici a=1 b=1 c=1 degerlerini girmistir.Böylece x2+x+1 =0 denkleminin kökleri aranmaktadir.Bu denklemin gerçek kökü yoktur ve program bu mesaji vermektedir.

Ayni programi bir kez daha çalistirarak x2-2x+1=0 denkleminin köklerini arastiralim:

» ikider

a katsayisi..1

a =

1

b katsayisi..-2

b =

-2

c katsayisi..1

c =

1

d =

0

x1 =

1

x1=x2

Bu durumda denklemin çakisik iki kökü vardir ve x1=x2=1’dir ve program bu sonucu bulmustur.

Son olarak ayni programi x2-5x+6=0 denklemi için test edelim:

» ikider

a katsayisi..1

a =

1

Page 20: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

b katsayisi..-5

b =

-5

c katsayisi..6

c =

6

d =

1

x1 =

3

x2 =

2

Kökler x1=3 ve x2=2 olarak bulunmustur ki bu da dogru sonuçtur.

Hem if hem de while komutlari kosul ifadeleri kullanmaktadir.Kosul ifadeleri ya iki ifadenin karsilastirilmasindan olusan mukayeseler seklinde ya da sonucu sayisal degerler olabilen ifadeler seklindedir.mukayese ifadesinde karsilastirmanin sonucu dogru ise kosul dogru kabul edilecektir;sayisal ifadelerde ise yukarda belirtildigi gibi,C diline benzer sekilde ,ifadenin sonucu 0 ‘dan farkli ise kosul dogru aksi takdirde ise kosul yanlis olarak kabul edilecektir.

Mukayese sembollerini yukarda vermistik,Tablo 2’de ise birden fazla mukayese ifadesini birlestirmek için kullanilan mantiksal islem operatörleri görülmektedir:

Tablo 2-Mantiksal islem operatörleri

Asagida ise ve ,veya,degil ve exclusive or ile iliskili tablolar verilmektedir :

Page 21: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

Asagida xor fonksiyonunun en basit kullanim sekli ile iliskili örnekler sunulmustur :

» xor(1,1)

ans =

0

» xor(1,0)

ans =

1

» xor(0,1)

ans =

1

Page 22: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

» xor(0,0)

ans =

0

»

ÖRNEK : & OPERATÖRÜ

» a=input('a..'),b=input('b...'),if a>0 & b> 0,disp('her iki sayi da pozitiftir'),end

a..4

a =

4

b...3

b =

3

her iki sayi da pozitiftir

ÖRNEK:xor FONKSIYONU

» a=input('a..'),b=input('b...'),if ~xor(a>0,b> 0),disp('her iki sayi da ayni isarettedir'),end

a..4

a =

4

b...8

b =

8

Page 23: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

her iki sayi da ayni isarettedir

» a=input('a..'),b=input('b...'),if ~xor(a>0,b> 0),disp('her iki sayi da ayni isarettedir'),end

a..-3

a =

-3

b...-6

b =

-6

her iki sayi da ayni isarettedir

» a=input('a..'),b=input('b...'),if ~xor(a>0,b> 0),disp('her iki sayi da ayni isarettedir'),end

a..7

a =

7

b...-4

b =

-4

MANTIKSAL OPERATÖRLERIN MATRISLER IÇIN KULLANILMASI

Mantiksal operatörler matrisler için de kullanilabilir.Asagidaki örnekleri inceleyiniz:

» A=eye(3,3)

A =

1 0 0

0 1 0

Page 24: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

0 0 1

» B=~A

B =

0 1 1

1 0 1

1 1 0

» C=xor(A,B)

C =

1 1 1

1 1 1

1 1 1

» D=ones(3,3)

D =

1 1 1

1 1 1

1 1 1

» E=~D

E =

0 0 0

0 0 0

0 0 0

» F=D|E

F =

1 1 1

Page 25: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

1 1 1

1 1 1

ÖRNEK:BIR LINEER DENKLEM SISTEMININ ÇÖZÜMÜNÜ BULAN PROGRAM

ÇÖZÜM:

1)Asagidaki M-file’i olusturunuz ve denksis.m adi ile saklayiniz:

2)Matlab komut satirinda

» denksis adini giriniz.Asagidaki çikti elde edilecektir:

A KATSAYILAR MATRISINI VE b SAG TARAF VEKTÖRÜNÜ GIRINIZ

DAHA SONRA return KOMUTUNU GIRINIZ

K» A=[1 1 1;2 -2 1;4 2 1]

A =

1 1 1

2 -2 1

4 2 1

K» b=[3 1 7]

Page 26: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

b =

3 1 7

K» return

x =

1.0000

1.0000

1.0000

»

MATLAB IÇINDE ÇEVRIM(DÖNGÜ,Ing.LOOP) OLUSTURMA-KONTROL KOMUTLARI

Matlab ortaminda,gerek komut satirinda gerekse m-dosyalari içinde kullanabileceginiz kontrol komutlari mevcuttur.bu komutlar yardimi ile Matlab’de olusturmak istediginiz bir programin mantiksal akisini kontrol edebilirsiniz.

Matlab’de kullanabileceginiz kontrol komutlari,

1)Tekrarli islemler anlamindaki çevrim yapilarini olusturan komutlar(For,While)

2)Bir kosulu kontrol ederek kosulun sonucuna göre bir islem yapan kontrol komutlari(if,switch/case)

olmak üzere iki gruba ayrilir.If komutunu yukarda incelemistik;digerleri ise asagida incelenecektir:

ÇEVRIM OLUSTURMA

for KOMUTU

for komutu, asagidaki biçimde kullanilabilir:

for Parametre=Baslangiç:Artim:SonDeger ,Deyim1,Deyim2,..Deyim_n,End

Bir m-file içinde ise ayni ifade okunabilirligi arttirmak amaci ile de,

for Parametre=Baslangiç:Artim:SonDeger

Page 27: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

Deyim1

Deyim2

..

Deyim_n

End

Seklinde kullanilir.

Burada Parametre degeri baslangiç degerinden baslayarak ve her seferinde artim degeri kadar arttirilarak Sondegere erisene kadar degistirilir.Parametrenin her degeri için,Deyim1,Deyim2,Deyim_n seklinde belirtilen ve for-end sözcükleri arasinda yer alan deyimler grubu icra edilir.Parametrenin degeri,SonDeger’i asinca,programin kontrolü,end’i izleyen deyime yani çevrimin disina çikacaktir.Artim degeri negatif te olabilir.Bu durumda Baslangiç degerinin SonDeger’den daha büyük olmasi gerekir.

ÖRNEK 1:

» for t=0.5:0.1:1 ,disp(t) ,end

0.5000

0.6000

0.7000

0.8000

0.9000

1

ÖRNEK 2:

» for t=2.5:-0.1:2 ,disp(t) ,end

2.5000

2.4000

2.3000

2.2000

2.1000

2

Page 28: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

ÖRNEK:FAKTÖRYEL HESABI

for çevrimini kullanacagimiz diger bir örnek program ise faktöryel hesabi programi olacaktir.Matematikte faktöryel,bilindigi gibi,

n!=1.2.3...n

seklinde tanimlanir;yani n sayisinin faktöryeli 1’den n’e kadar tam sayilarin çarpimina esittir.Asagida,faktöryel hesabi ile iliskili Matlab programi ve bu program içindeki degiskenlerin programin icrasi esnasindaki degisimlerini gösteren tablo verilmistir:

FAKTÖRYEL HESABI YAPAN MATLAB PROGRAMI:

PROGRAMIN ÇIKTISI:

FAKTÖRYEL PROGRAMINDAKI DEGISKENLERIN PROGRAMIN ICRASI ESNASINDAKI DEGISIMLERINI GÖSTEREN TABLO

Page 29: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

ÖRNEK:

1.2/(3.4)-5.6/(7.8)+9.10/(11.12)-13.14/(15.16)

seklindeki alterne seri toplaminin hesaplanmasi.

Yukardaki ifadede, . sembolü çarpma islemi anlamindadir.

ALTERNE SERI PROGRAMININ LISTESI:

ALTERNE SERI PROGRAMININ ÇIKTISI

ALTERNE SERI PROGRAMINDAKI DEGISKENLERIN PROGRAMIN ICRASI ESNASINDAKI DEGISIMLERINI GÖSTEREN TABLO

Page 30: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

AÇIKLAMA:

Sadece 4 terim oldugu için for çevrimi 1’den 4’e kadar çalistirilmistir.ilk terim 1.2/(3.4) ve ikinci terim 5.6/(7.8) oldugu için, x degiskeni ilk terimdeki ilk sayiyi temsil etmek üzere terimi,x.(x+1)/((x+2).(x+3)) seklinde ifade edebiliriz.x yerine 1 konulursa bu durum kolayca kanitlanabilir.Ikinci terimde ilk sayi 5 ,3.terimde ilk sayi 9 olduguna göre x,her seferinde 4 arttirilmalidir.Bu da programda x=x+4 ; deyimi ile gerçeklestiriliyor.

Seri alterne seri olduguna göre,yani terimlerin isaretleri +,-,+,- seklinde degistigine göre,p degiskeni yardimi ile terimlerin isaretleri ayarlanabilir.p önce 1 olarak atanmistir.Sonra çevrim içine konulan p=-p;ifadesi ise bir sonraki isareti -,bir sonrakini + ve onu izleyeni – yapacaktir.(Programi kagit üzerinde adim adim izleyiniz).

FOR ÇEVRIMI ILE ILISKILI ÖRNEK PROBLEMLER:

ÖRNEK PROBLEM:

ifadesini Matlab’te hesaplatiniz. ÇÖZÜM: I.Asagidaki m-dosyayi olusturunuz:

II.yukardaki m-dosyayi m=1000, m=10000 ve m=100000 degerleri için çalistirdiginizda gittikçe pi’ye yaklasan degerler elde edeceksiniz:

Page 31: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

ÖRNEK PROBLEM:

Ifadesini Matlab’te hesaplatiniz. Bu ifadeyi Matlab’te hesaplatabilmek için çesitli yollar mevcuttur.Biz burada bir m-dosya ile bu hesaplatmayi gerçeklestirecegiz: ÇÖZÜM Asagidaki m-dosyayi olusturunuz:

m-dosyayi çalistirdiginizda asagidaki sonucu elde edeceksiniz:

:

Tam dogru deger ‘dir ve yukardaki sonuç bu degere çok yakindir. ÖRNEK PROBLEM:

Page 32: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

Asagidaki ifadeyi Matlab’te hesaplatiniz:

ÇÖZÜM: Asagidaki m-dosyayi olusturunuz ve çalistiriniz:

Asagidaki çözümü elde edeceksiniz:

IÇ IÇE ÇEVRIMLER Bir çevrim yapisinin içine baska bir çevrim yapisinin yerlestirilmesi ile elde edilen yapiya iç içe çevrim(nested loop) adi verilir. Matlab dilinde, if deyimlerini her hangi bir derinlige kadar iç içe kullanmak nasil mümkünse, çevrim deyimlerini de iç içe kullanmak mümkün olacaktir. Iç içe çevrimlerde hatirlanacak anahtar bilgi, önce içteki çevrimlerin tamamlanmasi gerektigidir.Bu konuda asagidaki kural iç içe çevrimler için daima geçerlidir: Iç içe çevrimlerde en içteki çevrim en önce tamamlanir. ÖRNEK:

Asagidaki programda,dis çevrim olan i parametreli çevrim 5 kez çalisacaktir.(i=1,2,3,4,5).i’nin her degeri için ise içteki çevrim 3 kez çalisacaktir.(j=1,2,3).Böylece asagidaki çikti elde edilecektir:

Page 33: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

PROGRAMIN ÇIKTISI:

ÖRNEK:ÇARPIM TABLOSU PROGRAMI

1’den 10’a kadar sayilar için bir çarpim tablosu hazirlamak istiyoruz.Bunun için iç içe 2 çevrim yeterlidir ve her iki çevrimin de parametresi 1’den 10’a kadar degisecektir.Programin listesi asagidadir:

Page 34: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

ÇARPIM TABLOSU PROGRAMININ ÇIKTISI

Her x degeri için, program önce x ‘i yazdirir; sonra y ‘nin 10 degeri için çevrim yaparak her iterasyon için x*y ‘yi yazdirir ve yeni bir satira geçer. printf (“% 5d “,x*y); komutu en içteki çevrime aittir. % 5 d dönüsümü, fprintf( )nin çikista her sayi için 5 karakter basmasini saglar. Sayi daha az karakter gerektiriyorsa, ön tarafina bosluklar konur.

ÖRNEK:

Asagidaki seri toplamini hesaplayacak bir Matlab programi yaziniz:

1/ 2! + 1/3! + 1/4! +......+ 1/10!

Bu seri toplamini hesaplamak istedigimizde,iç içe iki çevrim kullanmak gerektigini hemen anlariz:

1)Her adimda,bir toplama islemi gerektiren,terimlerin toplanmasinin gerekli oldugu bir çevrim(Yukardaki tek çevrim örneklerindeki 1+2+3+..+n toplami örnegini hatirlayiniz)

2)Yukarda belirtilen çevrimin her parametre degeri için,o adimdaki faktöryeli hesaplatmak zorunda oldugumuz ve o nedenle yukardaki çevrimin içinde yer almasi gereken bir çevrim.

Bu düsüncelerle,problemin çözümünü teskil edecek olan bir Matlab programini asagidaki gibi yazabiliriz:

Page 35: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

FAKTÖRYELLI TERIMLERDEN OLUSAN SERI TOPLAMI PROGRAMI:

SERI TOPLAMI PROGRAMININ ÇIKTISI

break DEYIMI break deyiminin Matlab programlari içinde iki farkli kullanim alani mevcuttur: 1)switch yapisindaki case seçeneklerinden birinde switch yapisini terketmek ve switch’i izleyen deyime geçmek.Bu tip kullanim ile iliskili örnekler switch deyimi anlatilirken verilmistir.

2)break deyiminin ikinci kullanilis yeri,bir çevrim(loop) yapisi içinden ,çevrimi kontrol eden kosul ifadesini beklemeksizin hemen çevrim disina çikmak amaci iledir.

Break deyimi bir çevrim içinde yer almissa bu durumda break deyimi ile karsilasilir karsilasilmaz çevrim disina çikilir ve çevrimi izleyen deyime geçilir.

ÖRNEK:

Page 36: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

ÖRNEK PROGRAMIN ÇIKTISI

continue DEYIMI

continue deyimi,çevrim içinde,belirli bir kosulun kontrolü ile,bir sonraki çevrim adimina gidilmesini gerçeklestirir.

ÖRNEK:

Asagidaki programda,for çevriminin parametresi olan i degiskeni 3 ile tam bölünemeyen bir deger alinca bu deger ile islem yapilmayip bir sonraki adima geçilmesi continue deyimi ile saglanmaktadir.Böylece program,kullanici tarafindan girilen bir üst limite kadar,3 ile bölünebilen sayilarin toplamini ve bu tip sayilarin adedini bulacaktir.

Page 37: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

ÜÇ ILE BÖLÜNEBILEN SAYILAR-M-DOSYA LISTESI

PROGRAMIN ÇIKTISI:

while KOMUTU

Yazilis biçimi,

While Kosul ,Deyim1,Deyim2,..,Deyim_n,end

Seklindedir.

Kosul dogru oldugu sürece,Deyim1,deyim2,..,deyim_n seklinde belirtilen deyimler grubunu icra eder.Kosul yanlis oldugu anda,end’i izleyen deyime yani çevrim disina çikilacaktir.

ÖRNEK:

» say=2,while say>0 ,say=input('BIR SAYI GIRINIZ,DURDURMAK IÇIN NEGATIF SAYI GIRMELISINIZ'),end

Page 38: MATLAB ILE PROGRAM YAZMAK - yarbis.yildiz.edu.tr · Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de M-dosyasi(M-file) adi verilir.Bu tip dosyalariin

say =

2

BIR SAYI GIRINIZ,DURDURMAK IÇIN NEGATIF SAYI GIRMELISINIZ 9

say =

9

BIR SAYI GIRINIZ,DURDURMAK IÇIN NEGATIF SAYI GIRMELISINIZ -1

say =

-1