UYGULAMA MATLAB PROGRAMLAMA DİLİNE GİRİŞ

Embed Size (px)

Citation preview

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN

UYGULAMA : MATLAB PROGRAMLAMA DLNE GR

GIRI MATLAB yksek seviyeli bir teknik programlama dili olmasnn yannda algoritma gelitirme, verilerin grselletirilmesi,veri analizi ve saysal hesaplamalar iin etkileimli bir yazlm platformu sunar. MATLAB ile teknik hesaplama problemlerini, C, C++ ve Fortran gibi geleneksel programlama dillerinden daha hzl bir ekilde zebilirsiniz. MATLAB yazlmnn birok alanda uygulamalar vardr. erdii toolbox ad verilen aralar araclyla saysal iaret ileme, kontrol tasarm, test ve lm, finansal modelleme ve analiz, haberleme gibi birok alanda kullanlabilmektedir. MATLAB programlama paketi MATHWORKS firmas (http://www.mathworks.com) tarafndan gelitirilmi ve gnmzde 14.03 srm kullanma sunulmutur.

Ana zellikleri Teknik hesaplamalar iin yksek seviyeli bir dil, Kodlarn ,dosyalarn ve verilerin dzenlenmesi iin bir gelitirme ortam, teratif tasarm ve problem zme yntemleri iin interaktif aralar, Lineer cebir, istatistik, Fourier Analizi, Filtreleme, Optimizasyon, Saysal trev ve integral iin matematik fonksiyonlar, Verilerin grselletirilmesi iin 2 ve 3 boyutlu grafik aralar, Grafik arayzler tasarlamak iin aralar, MATLABin kullanm olmayan bir mhendislik alan hemen hemen yok gibidir. Ara Kutular MATLAB n kullanlrl ve ok ynll, uygulamalara zg eitli ara-kutular eklemekle gelitirilebilir. Ara kutular, eitli bilimsel alan ve konularda yazlan MATLAB fonksiyon dosyalarndan oluurlar. Aada ksaca aklanan, deiik bilim dallar ile ilgili olarak yazlm hazr ara-kutular yer almaktadr. Signal Processing Toolbox (Sinyal leme Ara kutusu ): 1-boyutlu ve 2-boyutlu saysal sinyal ileme (zaman serilerinin analizi gibi ) ile ilgili fonksiyonlardan olumaktadr. Ayrca, saysal filtreler iin gelitirilen analiz ve tasarm fonksiyonlar ile g spektrumu analizine ilikin fonksiyonlar da iermektedir. Control Systems Toolbox (Kontrol Sistemleri Ara kutusu ): Durum uzay (state space) tekniklerini kullanarak kontrol mhendislii ve sistemler teorisi ile ilgili fonksiyonlardan olumaktadr.

1

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN System Idendification Toolbox (Sistem Tanmlama Ara kutusu ): Parametrik modelleme ve sistem tanmlama ile ilgili fonksiyonlardan olumaktadr. Neural Network Toolbox (Yapay Sinir Alar Ara kutusu ): Yapay sinir alar iin tasarm ve benzetim (simlasyon ) fonksiyonlarndan olumaktadr. Bu fonksiyonlar birka kategoriye ayrlrlar. Bunlar; 1 ) A benzetimi iin transfer fonksiyonlarnn belirtilmesi, 2 ) A parametrelerini gncelletirmek iin kurallarn belirtilmesi, 3 ) Veriler zerinde an ilem yapabilmesi iin fonksiyonlarn belirtilmesi. Baz fonksiyonlar, lineer ve nonlineer alarn dorudan tasarm iin kullanlabilirler. Spline Toolbox (Oluum Ara kutusu ): Oluumlar ile ilgili M-dosyalarndan olumaktadr. Oluum ara kutusu fonksiyonel modellemede kullanlmaktadr. Erilerin modellenmesi, verilere gre eri uydurulmas, fonksiyonel denklemlerin zlmesi vb. iin olduka kullanldr. Robust-Control Toolbox (Robot Kontrol Ara kutusu ): Robot kontrol sistemleri tasarm ile ilgili fonksiyonlardan olumaktadr. m-Analysis and Synthesis Toolbox (p.Analiz ve Sentez Ara kutusu ): m -Analiz ve sentez tekniklerinin kullanlarak robot ve lineer kontrol sistemlerinin incelenmesi ve tasarlanmas iin yazlm fonksiyonlardan olumaktadr. MATLAB LE ALIMAK MATLAB gznzde canlandrmann en kolay yolu, onu tm niteliklerle donatlm bir hesap makinesi gibi dnmektir. Basit bir hesap makinesinin yapt toplama, karma, arpma ve blmeden ibaret drt ilemi kolaylkla yapar. Bunlara ilaveten teknik bir hesap makinesinde bulunan karmak saylar, karekk, ve st alma ve sins, kosins ve tanjant gibi geometrik ilemlerde kolaylkla yrtlr. Bunun dnda, programlanabilir bir hesap makinesinde olduu gibi veri saklama ve geri ykleme gibi ilemler ile nemli bir sorunun hesaplamasn otomatik hale getirmek iin komut satrlarn oluturabilir, icra edebilir veya saklayabiliriz. Ayrca ok gl bir hesap makinesinde olduu gibi ok eitli yollardan veri grafiklerinin oluturulmas,matris aritmetiinin icras, polinomlarn incelenmesi, fonksiyonlarn integre edilmesi, denklemlerin sembolik olarak kullanlmas v.b. ilemlerin yaplmasn olanakl klar. Gerekte, MATLAB ok daha fazla zelliklere sahip olup, herhangi bir hesap makinesinden daha ok ynldr. MATLAB matematik hesaplamalar yapmaya yarayan bir aratr. FORTRAN, BASIC, PASCAL, C gibi bilgisayar programlama dillere gre kullanm daha kolay ve daha gelikin niteliklere sahip bir programlama dilidir. Gl grafik yetenekleri sayesinde verilerin grntlenmesi ve canlandrlmas iin zengin bir ortam salar. MATLAB, zgn problemlerin zmne grsel yaklam sunan grafik kullanc ara birimleri (GUIS ) oluturulmasna olanak salayan bir uygulama gelitirme platformudur. Btn bunlara ilaveten MATLAB Toolbox`lar ad altnda zgn uygulama alanlar iin problem zc ara takmlar sunar. rnein MATLAB renci basks Control Sistem Toolbox, Signal 2

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN Processing Toolbox ve Symbolic Math Toolbox gibi nemli toolbox iermektedir. Ayrca zgn problemle uraanlar kendi Toolbox`larn da oluturabilirler.

MATLAB ALIMA ALANI MATLAB alma alan, MATLAB komut penceresinden(command window) kullanlabilecek deikenler (dizimler olarak bilinen ) takmn ierir. who veya whos komutlarn kullanarak o andaki alma alan iindekiler grntlenebilir. who komutu sadece deikenlerin isimlerini ksa bir liste halinde verirken, buna karlk whos komutu ayrca boyutu ve veri tr bilgileri de ierir. alma alan ayrca komut penceresinde yer alan aralar zerindeki alma alan taraycs (Workspace Brower ) penceresini aarak da grntlenebilir. Tm bilgilerin grntlendii bu pencerenin aralar zerinde kp biimde bir ekil vardr. Bu ekil zerinde tklandnda tarayc pencere alr. alma alannda yer alan tm deikenleri silmek iin clear komutu kullanlr. MATLAB komut penceresi MATLAB aldnda karmza gelen pencere MATLABn komut penceresidir. Komut penceresi kullanc ile MATLAB komut yorumlaycs arasnda iletiimi salayan bir ara yzdr. Yorumlayc hazr hale geldiinde >> iletisi karmza gelir. Bu ileti MATLABa komut ya da komut dizileri girilebileceini gsterir. Genel Komutlar Demo komutu(demo ): Eer MATLAB ilk defa kullanlyor ya da belli komutlarn almasn merak ediliyorsa demo komutu ile demostrasyon listesini grntlenebilir. Listeden yapacanz bir seimle setiimiz ilevin icraatlarn adm adm izleme imkan bulabilirsiniz. Saklama ve geri arma komutlar (save-load ): Bilgisayarnzda MATLAB ile alrken bilgisayarnz kapatmay arzulayabilirsiniz. Daha sonra geri dnerek kaldnz yerden devam etmek isteyebilirsiniz. te bunu baarmak iin kullanyor olduunuz btn deikenleri yeniden ayarlamadan bilgisayarnz kapatmadan nce >>save 3

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN komutunu kulann. Bu komut kullanmda olan MAT dosyasn alt dizininde veya MATLAB dosyanzda MATLAB.mat diye yapar veya stne yazar. Sonra MATLAB.mat da yer alan alma alann yeniden arma ihtiyac duyduunuzda >> load komutunu girmelisiniz. MATLAB.mat haricinde baka bir isim ile de deikenleri saklayabilirsiniz. rnein; >>save dosyam Bunun yannda >> load dosyam komutu ile de saklam olduunuz deikenleri geri arabilirsiniz.

alma alanndaki verilerin kaydedilmesi ve yklenmesi, save ve load komutlar: MATLAB`n save ve load komutlar bir oturumun her hangi bir annda MATLAB alma alan ieriklerinin kaydedilmesi ve bu oturum srasnda veya daha sonraki bir oturumda kaydedilen bu verilerin tekrar alma alanna yklenmesini salar. save ve load komutlar ayn zamanda yaz (text ) tr veri dosyalarnn da alma ortamna ithal edilmesini salar. save komutu alma alan ieriini bir ikili kod da (binary ) MAT-dosyas olarak kaydeder. Bu dosya daha sonra load komutu ile geri arlabilir.

MATLAB Komut Penceresi Menleri: Bir ok programda olduu gibi MATLABda da komut penceresi menleri byk kolaylklar salar. Buna gre MATLABdaki menler ve ilevleri u ekildedir. File (Dosya ) Mens: File mens dosya veya dosyalarn oluturulmas ve yazdrma ileminin ayarlamalarnn olduu komutlar ierir. New: Bu komut u seenekleri ierir: M-File: yeni M-dosyas oluturmak iin bo bir pencere aar. Figure: yeni bir ekil penceresi oluturur. Model: yeni bir SIMULINK penceresi oluturur.

4

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN Open M-File: Bir dosya seebileiniz pencere ekrana getirerek dosya ad girilmesini veya gereken dosyann seilmesini ister ve ardndan seilen yada ismi yazlan dosya metin dzenleyici program altrlarak alr. Open Selected: Komut penceresinde seilerek belirtilen bir M-dosyasn varsaylan dzenleyiciyi altrarak aar. Save Workspace As...: alma alann kaydetmek iin bir iletiim kutusu grntlenir, yeni bir dosya ad girmeniz gerekmektedir. Run M-File: Dosya Yneticisinin altr... komutuna benzer. Bir M-dosyas ad girmeniz veya semeniz iin bir iletiim kutusu grntlenir ve belirtilen M-dosyasn altrr. Look for Selected: MATLABin lookfor komutunu altrr. MATLABin arama yolunda bulunan tm M-dosyalarnn iindeki yardm metinlerinin ilk aklama satrlarn tarayarak komut penceresi iinde seilen katar aratrr ve sonucu ekranda grntler. Print...: Komut Penceresinde seilen metni o an ykl bulunan bir yazcya dker. Eer seilen metin yoksa, tm MATLAB oturumu boyunca girilen metni yazdrr. Printer Setup...: O andaki yazc ayarlarn ve seeneklerini (renk tonu gibi ) deitirmek iin bir iletiim kutusunu grntler.

Exit MATLAB: MATLAB oturumunu kapatr. Edit (Dzen ) Mens: Edit (Dzen ) mens komutlar kullancya dzenleme fonksiyonlarn uygulamak iin byk kolaylklar salarlar. Cut: Komut Penceresinde seilen metni keser ve ortamda saklar. Copy: Komut Penceresinde seilen metni kopyalar ve ortamda saklar. Paste: O andaki pano ieriini komut satrna yaptrr. Clear Session: Komut penceresinin ieriini siler. Bu komut, clc komutu ile ayn grevi icra eder. Options (Seenekler ) Mens: Bu men; MATLABda pencere seeneklerini ayarlamak, varsaylan dzenleme programn semek ve MATLABin format ve echo komutlarnn ilevlerini deitirmek iin kullanlr. Numeric Format: Ekran kt biimlerini deitirmek iin bu komutu kullanabilirsiniz. Bu komut u seeneklerden olumaktadr. Turn Echo On/Off (Yansma Ak/Kapal ): Yansma durumu iin ak ve kapal arasnda gei yapar. Echo on ise verilen bir komutun sonucunun ekranda grntlenmesini salar.

5

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN Enable/Disable Background Process: Artalan ilemlerinin olup olmamas arasnda geii salar. Font...: Yaz fontlar iletiim kutusunu aarak buradan komut penceresinde kullanlan font ve artalan rengini seebiliriz. MATLAB Deikenleri: MATLAB da, herhangi bir tip tanmlamas veya boyut ifadesine gerek yoktur. MATLAB, yeni bir deiken ismi ile karlatnda, otomatik olarak ans isminde bir deiken oluturur ve uygun bir bellek miktar ayrr. Eer deiken zaten varsa, MATLAB gerekli bir bellek ayrdnda ierii deiir. rnein, ogrenci_say=51 ogrenci_say diye isimlendirilen 1x1 matrisi olutur ve 51i ykler. Deiken isimleri; bir harfden veya alt izgiden oluur.MATLAB, sadece deiken isminin ilk 31 karakterini kullanr. MATLAB, byk ve kk harfe duyarldr, byk harf ile kk harfi ayrdeder. A ve a deikenleri ayn deildir. Saylar: MATLABda saylar yaygn olarak kullanlan onluk tabanda ifade edilirler. Bunun yansra onluk tabanda stel olarak veya i veya j olarak kompleks say biimlerinde de ifade edilebilirler. rnek olarak, 3, -99, 0.0001 9.6397238, 1.60210e-20, 6.02252e+23 1i, 3.141592j saylar gsterilebilir. Saylarn duyarlln belirtmek iin kullanlan eps says onluk tabanda 16 basamakl olarak gsterilmektedir.

Operatrler(saysal ilemciler ): Matematiksel ifadeleri oluturmak iin operatrler ve nceden tanmlanm sembolleri kullanabilirsiniz. Operatrler zetle unlardr: ki skaler say arasndaki aritmetiksel ilemler Bir deyim aada olduu gibi deer atanarak belli bir deer iinde saklanabilir. x=a + b Bu ifadede a ve b nin topland ve x deikeni iinde sakland belirtilmektedir. Bu atama ilemini; a iindeki bir deerin b iindeki bir deerle toplanarak bu toplamn x deikenine atanaca eklinde yorumlamak mmkndr.

6

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN Eer atama ilemi bu ekilde yorumlanacak olursa, aada verilen bir MATLAB bildirimi de geerli olur. say = say + 1; Ak bir ekilde bu bildirim geerli bir cebirsel bildirim olamaz, fakat MATLAB iindeki 1 in say iindeki bir deere ilave edileceini ve sonucun tekrar say iinde saklanacan belirtir. Sonuta say iindeki deerin her seferinde 1 artacann belirtilmesine denktir. Belli bir deiken tanmlamadan girilen deyimlerin icrasnda ans isimli bir deiken iinde otomatik olarak saklanr. Her defasnda ans iindeki deer bir ncekinin yerini alr. Burada ans ngilizce cevap anlamna gelen answer kelimesinin ksaltlm eklidir. Matrislerle yaplan ilemlerde blme ilemi iin iki farkl sembol kullanlmaktadr. Bunun yannda eer saylar skaler ise iki blme ileminin sonucu da ayn deeri gsterecektir. rnein 3/2 ile 2\3 ifadelerinin sonular ayn olup 1.5 dir. Aritmetiksel lemlerde ncelik Durumu: Tek bir aritmetiksel durum iinde birden fazla durum bir arada bulunabildiine gre hangi ilemin ncelik hakkna sahip olunduunun bilinmesi yerinde olacaktr.

Disp FONKSYONU MATLAB da bir matematiksel ifadeyi argman olarak alp, bu ifadenin sonucunu ekrana aktaran bir fonksiyon mevcuttur bu da disp fonksiyonudur. Ancak disp fonksiyonunu kullanmakszn sadece ifadeyi yazarsak ta sonucu grebiliriz. 2+8 ans = 10 disp(2+8 ) 10 , SEMBOL Dizi ya da matris elemanlar arasna ayra olarak yerletirilir. Bu sembol yerine boluk sembol kullanlmas da ayn etkiyi salar. [5,7] ans = 5 7 disp( [ 3 , 4 ] ) 3 4 disp( [3 4] ) 34 Karakter tr veriler ' sembolleri iine alnr. disp fonksiyonu ile aadaki gibi grntlenirse bitiik olarak ekrana aktarlrlar. 7

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN disp([3 4]) 34 disp(['a' 'c']) ac ; SEMBOL ; Sembol, aralarnda yerletirildii iki skaleri iki farkl satra yazar. disp([4;8]) 4 8 ; sembol ayrca ilerde grlecei gibi matrislerde satr ayrac olarak kullanlr. : SEMBOL : Sembol balang ve son deerleri belirten bir say dizisini 1er artmlarla retilir. Balang ve son deerler yannda bir de artm deerleri nc parametre olarak verilirse bu durumda da belirten artm kullanarak bir say dizisi retir(rnein for dngsnde olduu gibi). parametre kullanlrsa ilk parametre balang, ikinci parametre artm ve nc parametre ise son deerdir. 1:6 ans = 1 2 3 4 5 6 disp(2:5) 2345 ve ayn zamanda 2:3:18 ans = 2 5 8 11 14 17 0.4:0.7:10 ans = Columns 1 through 7 0.4000 1.1000 1.8000 2.5000 3.2000 3.9000 4.6000 Columns 8 through 14 5.3000 6.0000 6.7000 7.4000 8.1000 8.8000 9.5000 AYNI UZUNLUKLARDAK VEKTRLER ZERNDE LEMLER TOPLAMA VE IKARMA 8

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN + ve sembolleri iki vektr arasnda da kullanlabilir; a ve b er elemanl iki vektr olsun: a=[2 1 -1] a= 2 1 -1 b=[4 -2 3] b = 4 -2 3 a+b ans = 6 -1 2 a-b ans = -2 3 -4 yukardaki rneklerde grld gibi, toplama ve karma ilemlerinde bilinen vektr toplam ve fark ilemi gerekletirilecektir. ARPMA VE BLME Eit uzunlukta iki vektr iin * ve / operatrleri kullanlrken dikkatli olunmaldr. a=[4 5] a=45 b=[3 -2] b = 3 -2 c=a*b ??? Error using ==> * Inner matrix dimensions must agree. Burada MATLAB iin * sembol matris arpm semboldr ve a ve b arplabilecek tipte matrisler olmadklar iin yukardaki hata mesajn alnmaktadr. .* sembol, elemanlar, iki vektrn karlkl elemanlarn arpmndan oluan ayn uzunlukta yeni bir vektr retecektir. Yani dizey veya vektrlerin eleman eleman arpmnda kullanlr. c=a.*b c = 12 -10 Benzer biimde ./ ve .\ operatrleri de geerlidir. Aada rneklerde inceleyelim: a=[4 5] a=45 b=[3 -2] b = 3 -2 d=a./b d = 1.3333 -2.5000 e=a.\b e = 0.7500 -0.4000

9

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN ET UZUNLUKTA K VEKTR ARASINDA ^ OPERATR a=[4 5] a=45 b=[3 -2] b = 3 -2 h=a^b ??? Error using ==> ^ Matrix dimensions must agree. Yukarda grld gibi iki vektr arasnda ^ ilemi tanmszdr. .^ sembol geerlidir ve birinci vektrn bileenleri taban ve ikinci vektrn bileenlerini de st kabul ederek st alma ilemi sonucu ayn boyutta yeni bir vektr oluturacaktr. Aada rnei inceleyelim. h=a.^b h = 64.0000 0.0400 BR VEKTR VE SKALER ARASINDAK LEMLER TOPLAMA VE IKARMA LEMLER: Aada rneklerde grld gibi, bir skaler ile bir vektr operatr ile ileme sokulursa, skaler vektrn her iki bileeni ile de toplanr. 4+[2 -2] ans = 6 2 - operatr iin de ayn ey sz konusudur. 7-[2 -1] ans = 5 8 ARPMA VE BLME Bir skaler bir vektr operatr ile ilem sokulursa sonuta bileenleri skaler ile vektrn bileenlerinin ayr ayr arplmas ile oluan yeni bir vektr elde edilir. 3*[2 -1] ans = 6 -3 Bir skalerin bir vektre blm ise tanmszdr ( / sembol ile ):

10

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN 3/[2 -1> ??? Error using ==> / Matrix dimensions must agree. Ters blme ( \ ) sembol kullanlrsa vektrn bileenlerinin skaler ile blnmesinden elde edilen iki say yeni bir vektr oluturacaktr. 2\[4 8] ans = 2 4 Oysa bir vektrn bir skalere blnmesi tanmldr ve bileenleri vektrn bileenlerinin skalere blnmesinden elde edilen yeni bir vektr elde edilecektir. [4 -8]/2 ans = 2 -4

MATLAB TA PROGRAM HAZIRLANMASI M-dosya Programcl MATLAB da algoritmalar bilinen programlar hazrlamak ve altrmak ok kolaydr. Ayrca FORTRAN, BASIC, C/C++ ve PASCAL gibi programlama dillerinde hazrlanm programlar MATLAB iin uyarlamak mmkndr. Bu durumda ounlukla ayn program iin daha az sayda satr kullanmak yeterlidir. MATLAB n hazr M-dosya paketlerini kullanmak suretiyle programlamay ok ksa tutmak mmkndr. M-dosyalar MATLAB dil kodu ieren dosyalara M-dosyas (M-files) ad verilir. M-dosyalarnn iki tr mevcuttur. Bunlar; Fonksiyonlar (functions): Giri olarak argmanlar kabul eder ve k olarak bu argmanlara karlk gelen zm retir. Dzyaz (scripts) dosyalar: Bir dizi MATLAB deyimini otomatik olarak icra eder. Bir M-dosyasnn MATLAB tarafndan bir dosya olarak onaylanmas iin .m uzantsna sahip olmas gerekir. MATLAB n kendisi byk oranda herhangi bir program iinde arlp kullanlabilen fonksiyon (alt program ) M-dosyalarndan olumutur. Bunlarn dnda ayrca yine program iinde arlabilen kendi zne gml (built-in) zel fonksiyonlara sahiptir. M-dosyalar ASCII karakterinde hazrlanm okunabilir ve yazlabilir dosyalardr. Bu nedenle MATLAB a ait M-dosyalarn yanllkla deitirilmemesi gerekir. Aksi taktirde orijinal grevini yerine getiremez. Bu nedenle kullancnn kendi hazrlad M-dosyalarn kendisine ait bir klasrde saklamas tavsiye edilir.

11

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN M-dosyalarnn Oluturulmas, Metin Editrne Giri: M-dosyalarn bir metin olarak kullanarak oluturulabilecek sradan metin dosyalardr. M-dosyalar bu editrde hazrlanabilecei gibi herhangi bir baka metin (text ) editrnde de hazrlanabilir. Dzyaz M-Dosyalar Bir dizi komutlardan ibaret dzyaz dosyalar, MATLAB iinde arldnda dosya iinde bulunan komutlar otomatik olarak altrlr. Bylece her seferinde klavyeden komutlar tekrar tekrar girmeye gerek kalmaz. Bir dzyaz dosyas iinde yer alan deyimler MATLAB alma ortamnda yer alan verileri iletir ve sonulandrr. Dzyaz dosyalar, MATLAB ortamnda etkileimli biimde allmayacak uzun komutlar dizisi gerektiren analizlerin icras, problemlerin zm veya tasarm yaplmasnda kullanl olmaktadr. rnein aada verilen MATLAB komutlar dizisi hata_example1.m ad verilen bir dosyada oluturulup saklanabilir. MATLAB ortamnda hata_example1 yazmak (.m uzants yazlmaz) sureti ile program altrlabilir. Yalnz bunun iin program iinde yer alan x ve dx parametre deerlerinin program altrlmadan nce atanm olmas gerekir. Bu, ya hata_example1 komutu yazlmadan nce klavyeden yukarda belirtilen parametre deerlerini girmek sureti ile ya da hazrlanm bir veri dosyasn yklemek sureti ile atanabilir.% % PROGRAM hata_example1.m % JFM224 Saysal Analiz ve Programlama III Dersi uygulama % Konu: Hata Analizi % % % Program f(x)=exp(x) fonksiyon deerini verilen bir x ve dx deeri % ve adm aral iin Taylor serisinin ilk bir, iki ve terimi % kullanarak yaklak deeri, bal ve yaklam hatalarn hesaplar. % % Yazan : Dr.Unal Dikmen % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % function = hata_example1(x,dx) fclose('all'); clc format long f = 'exp(dx)'; x = 0.0; dx = 0.5 ; % exp(x) fonksiyonun x=0.5 iin gercek deeri g = eval(f,dx) ; % Taylor aclm: % 2 3 n % f(x+dx)=f(x)+dxf'(x)+( dx/2!)f''(x)+dx/6)f'''(x)...+...(dx/n!)fn(x) % % Seri almnda ilk terim iin fonksiyonun yaklak deerleri f1t = 'exp(x)' ; f2t = 'exp(x) + 0.5*exp(x)'; f3t = 'exp(x) + 0.5*exp(x) + (0.125)*exp(x)' ; ft1 = eval(f1t,x); ft2 = eval(f2t,x); ft3 = eval(f3t,x); %yuzde olarak bagl hatalar re1 = 100.*(g-ft1)/g ;

12

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMENre2 = 100.*(g-ft2)/g ; re3 = 100.*(g-ft3)/g ; % yuzde olarak yaklam hatalar ye21 = 100.*(ft2-ft1)/ft2 ; ye32 = 100.*(ft3-ft2)/ft3 ; % sonuclarn ekrana aktarlmas clc disp(' Fonksiyon = exp(x) ') disp(sprintf(' x=0.5 iin gerek deeri = %15.12f\n',g)); disp(sprintf(' Taylor serisinin ilk terim yaklak degeri = disp(sprintf(' Taylor serisinin iki terim yaklak degeri = disp(sprintf(' Taylor serisinin terim yaklak degeri = % disp('Bal Hatalar :') disp(' ') disp(sprintf(' 1 terim yaklamndaki bal hata yzdesi = disp(sprintf(' 2 terim yaklamndaki bal hata yzdesi = disp(sprintf(' 3 terim yaklamndaki bal hata yzdesi = % disp('Yaklam Hatalar:') disp(' ') disp(sprintf(' iki terim hesaplamada yaklam hata yzdesi= disp(sprintf(' terim hesaplamada yaklam hata yzdesi =

%5.4f',ft1)); %5.4f',ft2)); %5.4f\n',ft3));

%4.2f',re1)); %4.2f',re2)); %4.2f\n',re3));

%4.2f',ye21)); %4.2f',ye32));

bu ekilde hata_example1 altrld zaman MATLAB dosyas iinde yazl komutlar icra eder ve sonular ekrana aktarlr. Fonksiyon M-Dosyalar Fonksiyon dosyalar ilk satrda function kelimesi bulunan .m uzants bulunan dosyalardr. MATLAB iinde bulunan tm M-dosyalar fonksiyon dosyalar biiminde olup, bunlar hazrlanan herhangi bir program iinde arlabilir. Gerekte bunlar FORTRAN, BASIC, C ve benzeri programlama dillerinde kullanlan alt programlar (subroutines) gibi ilem grrler. MATLAB ta normal M-dosyalar biiminde ve znde gml fonksiyon olmak zere iki tr fonksiyon mevcuttur. Fonksiyon dosyas; function satrnda yer alan giri argmanlar (function tarafndan bulunan sonular ) istenirse dier hesaplamalarda kullanlabilir. Fonksiyon dosyalar, MATLAB komut iletisindeki alma alanndan ayrlm, kendi alma alan iindeki deikenleri iletirler. Fonksiyon dosyasnn oluturulmas ve altrlmas aada verilen basit bir rnekle aklayabiliriz. Burada MATLAB ta mevcut bir vektrn ortalamasn hesaplayan ortalama.m dosyasna ait bildirimler listesi verilmitir. Function y = ortalama(x) %ortalama (x)her bir stunda ortalama deeri olan bir satr vektrdr. [m,n]=size (x) ; if m=1 m=n; end; y=sum (x ) /m;

13

JFM224SaysalAnalizveProgramlamaIIIDr.nalDKMEN bu ekilde yazlp yine ortalama.m olarak saklanan (dosya ad ile fonksiyon ad ayn olmaldr) yeni fonksiyon dosyasnn kullanm herhangi MATLAB dosyasnn kullanmndan farkl deildir. Bir fonksiyon dosyasnn belli bal blmleri ve zellikleri rnek ortalama.m fonksiyon dosyas zerinden aadaki ekilde aklayabiliriz. Birinci satr fonksiyon tanm satr olup, fonksiyon adn, giri ve k argmanlarnn saysn ve srasn tanmlar. Bu satr bulunmad zaman, dosya dzyaz dosyas gibi ilem grr. % iareti ile balayan satrlar yardm aklama satrlardr. Bu satrlarn birincisi 1.yardm (help1) satrdr. lookfor fonksiyonu veya tm klasr yolu zerinden yardm talebi olduunda bir fonksiyon iin MATLAB bu satr grntler. Bundan sonraki satrlar yardm metnidir. Belli fonksiyon hakknda yardm istendiinde MATLAB yardm satr ile birlikte tm yardm metnini grntler. Bu satrlara yazlanlar MATLAB tarafndan icra edilmez. Fonksiyon gvdesi, % iareti ifade eden satrlardan sonraki satrlardr. Fonksiyonun bu ksm hesaplamalar yerine kod ierir ve herhangi k argmanlar iin deerleri saptar. Fonksiyon dosyas iinde yer alan m, n ve y gibi deikenler ortalama dosyasnn almas srasnda kendi iinde geerli olup daha sonra alma ortamnda grntlenemez ve kullanlamaz. Fonksiyon dosyalar hakknda daha ayrntl bilgi alma ve eitli MATLAB fonksiyon dosyalarn incelemek iin MATLAB ortamnda edit fonksiyon ad yazlarak biimleri grntlenebilir. Baz komutlarn isimleri ve aklamalar izelge 1 de verilmitir. izelge 1. komutlarKomut help who whos what size lenght clear quit save lev MATLAB'n operatr ve fonksiyonlarn tanmlar Deikelerin isimlerini listeler Deikenlerin simlerini ve boyularn listeler Diskinizdeki M-dosyalarn listeler Argmanlarn boyutlarn verir Argmanlarn maksimum boyutlarn verir alma ortamndaki tm deikenleri temizler MATLAB ortamn sona erdirir MATLAB ama ortamnda bir MAT-dosyasn saklar

14

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

MATLABdaOPERATRLER AveBskalerveyamatrisintoplanmasnda:A+Bveyaplus(A,B) AveBskalerveyamatrisinkartlmasnda:ABveyaminus(A,B) AveBskalerveyamatrisinarplmasnda:A*Bveyamtimes(A,B) AveBskalerveyamatrisinelemandzeyindearplmasnda:A.*Bveyatimes(A,B) AveBskalerveyamatrisinsadanblnmesi:A/Bveyamrdivide(A,B) AveBskalerveyamatrisinelemandzeyindesadanblnmesi:A./Bveyardivide(A,B) AveBskalerveyamatrisinsoldanblnmesi:A\Bveyamldivide(A,B) AveBskalerveyamatrisinelemandzeyindesoldanblnmesi:A.\Bveyaldivide(A,B) Matrisingc:A^bveyampower(A,b) Matrisinelemandzeyindegc:A.^bveyapower(A,b) Adizeyininkarmakdevrii:Aveyatranspose(A) Adizeyininkarmak(komplex)devrii:A'veyactranspose(A) MATLAB'TABAZITEMELKOMUTLAR lsveyadr:allandizindekidosyaisimlerinigrntler whoveyawhos:oanbellektekideikenlerigrntler pwd:allandizinyolunuekranaverir. clear:belleitemziler clc:ekrantemizler(commandwindow'u) size(A):Adizeyininboyutunuverir. length(a):avektrnnuzunlugunuverir. max(a):avektrierisindekimaksimumdeeribulur.abirdizeyise herbirstnunmaksimumdeerinibulur. min(a):avektrierisindekimimumumdeeribulur.abirdizeyise herbirstnunmimumumdeerinibulur. norm(A):Adizeyininnormunuverir. [d,ind]find(A>k):Adizeyiierisindekdeerindenbykelemanlarbulur. d:kdanbykdeerleritutarveindkomutuhangisatr vestn'daoldugunugsterenindisitutar. diag(A):Amatrisinindiagonalelemanlarnverir. trace(A):Adizeyininiziniverir. inv(A):Adizeyinintersinialr. [UDV]=svd(A):AdizeyiniSVD(SingularValueDecomposition)ynteminegrezer cross(A,B):AveBgibiikimatrisiarpar dot(A,B):AveBgibiikimatrisiskalerarpar disp('string'):yazlanstringifadeyiekrandagrntler Linspace(a,b,N):avebarasndaNadeteitaralklnoktaierenvektrretir. logspace(a,b,N):avebarasndaNadeteitaralkllogaritmiknoktaierenvektrretir. %%%%%%%%%%%%%%%%%%%% plot(x,y,'b','LineWidth',2):x,yveriiftiniploteder.'b'plotunsreklicizgive mavirenkliolmasnsyler.'LineWidth'isecizgikalnlgngsterir15

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

MATLABTAMATRSLEMLER MaTLAB programlama dili farkl yapda matris ve vektr oluturmak iin eitli hazr fonksiyonlar kulland gibi kullanc da kendisine zg matris ve vektrleri kolaylkla oluturabilir.ncelikleMATLABnhazrmatrisvevektroluturmafonksiyonlarnaksaca bakacakolursak; x=pascal(n)veyax=pascal(n,opt) komut [nxn] boyutlu pozitif tam tanml bir simetrik matris oluturur. opt seenei verilmeyebilir(budurumda0deeridefaultolarakvardr) pascal(n,1):PascalmatrisininaltgenCholeskykatsaylarnierir.,ascal(n,2):pascal(n,1) indndrlmhalidir. rnek: x=pascal(3) x= 111 123 136 x=pascal(3,1) x= 100 110 121 x=pascal(3,2) x= 111 210 100 x=magic(n) Komut [nxn] boyutlu 1 den n2 ye kadar deerlerden eit satr, eit stn ve diagonal elemalarntoplamndanoluansimetrikolmayanbirkarematrisoluturur. rnek: x=magic(3) x= 816 357 492 eye(n)veyaeye(n,m) Komut(nxn)veya(n,m)boyutlubirimmatrisoluturur.16

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

rnek: x=eye(2,3) x= 100 010 zeros(n,m) Komut(nxm)boyutlusfrmatrisioluturur. rnek: x=zeros(2,3) x= 000 000 rand(n)veyarand(n,m) Komutnxnveyanxmboyutlarndaniformmatrisretir. rnek: x=rand(3) x= 0.95010.48600.4565 0.23110.89130.0185 0.60680.76210.8214 y=rand(3,2) y= 0.44470.9218 0.61540.7382 0.79190.1763 randn(n)veyarandn(n,m) komutnormaldalmlnxnveyanxmboyutlumatrislerretir. rnek: x=randn(3) x= 0.43260.28771.1892 1.66561.14650.0376 0.12531.19090.3273 17

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

y=randn(3,2) y= 0.17460.5883 0.18672.1832 0.72580.1364 sprand(n) Komutniformseyrek(sparse)yapdanxnboyutlumatrisoluturur. rnek: x=sprand(3) x= (1,1)0.4186 sprandn(n,m,density) komutnxmboyutundanormaldalmasahipseyrekyapdamatrisoluturur. rnek: x=sprandn(3,3,2) x= (1,1)1.6236 (2,1)0.8580 (3,1)1.5937 (1,2)0.6918 (3,2)1.4410 (2,3)1.2540 (3,3)0.5711 sprandsym(n,density) komut,nxnboyutundaseyreksimetrikrandommatrisretir. rnek: sprandsym(3,1) ans= (2,1)1.1908 (3,1)2.0022 (1,2)1.1908 (3,2)2.1742 (1,3)2.0022 (2,3)2.1742 Matrislerdetoplamavekarma 18

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

Matrislerde toplama ve karma ilemi matrisin veya vektrn elemanlar zerinde gerekletirilir. rnek: a=pascal(3); a= 111 123 136 b=magic(3); b= 816 357 492 x=a+b x= 927 4710 5128 y=xa y= 816 357 492 MATLABtakolonilemleri Kolonoperatrolarak:kullanlr. rnein X=1:10 X 12345678910 veya X=0:pi/4:pi X= 00.78541.57082.35623.1416 19

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

gibi kolon operatr ile matris ve vektrlerin istediimiz kolon veya satrlar zerinde ilemleryapabiliriz.rneinAgibibirmatriszerinde, A(1:k,j) ilemiileAmatrisininj.cistnzerinde1denkncsatrlarnalabiliriz.rnekolarak, a= 0.69020.34870.0742 0.68970.96340.1656 0.44500.12590.3717 >>a(1:2,3) ans= 0.0742 0.1656 rneinAmatrisinin2.stnunu4ilearpmakve5eblmekistersek, a=rand(3) a= 0.81680.73390.9250 0.01850.47760.6458 0.53570.18750.8134 >>a(:,2)=4.*a(:,2)./5 a= 0.81680.58710.9250 0.01850.38210.6458 0.53570.15000.8134 veyaAdizeyinin3stunundan2.stununukartmakistersek a=rand(3) a= 0.87080.94050.6957 0.48170.29450.0910 0.10390.28420.9548 >>a(:,3)=a(:,3)a(:,2) a= 0.87080.94050.2447 0.48170.29450.2035 0.10390.28420.6706 yadaAdizeyinin2.satrn1.satrilearpmakistersek,20

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

a=rand(3) a= 0.11290.05850.0565 0.49490.11580.4606 0.05880.11540.9807 >>a(2,:)=a(2,:).*a(1,:) a= 0.11290.05850.0565 0.05590.00680.0260 0.05880.11540.9807 Amatrisininsonstnunukullanmakiin a=rand(3) a= 0.98510.27500.4407 0.11450.05560.3954 0.42020.81720.4408 >>a(:,end) ans= 0.4407 0.3954 0.4408 Amatrisininsonsatrnkullanmakiin a=rand(3) a= 0.11880.06030.9717 0.64020.73860.6048 0.81380.02430.6677 >>a(end,:) ans= 0.81380.02430.6677 Buvebunlarabenzermatriszerindehertrlilemde:operatrnkullanabiliriz. MatrisinTranspoze(devrii),vektrelarpmveskalerarpm21

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

BirAdizeyinintranspozesi(devrii)operatrileverilir. rnek: A=rand(3) A= 0.16920.55040.3248 0.15580.00670.9042 0.73330.50680.1569 AnntranspozesiA' =A ans= 0.16920.15580.7333 0.55040.00670.5068 0.32480.90420.1569 Aynsatrvestnboyundakiikimatrisinvkterarpm, x=[3;1;4]; y=[201]; z=x*y z= 603 201 804 Skalerarpm z=y*x z= 2 Elemandzeyindeikiaynboyutlumatrisiarpmakiin.*operatrkullanlr. a=randn(3) a= 0.21930.05920.5077 0.92191.01061.6924 2.17070.61450.5913 b=randn(3)22

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

b= 0.64360.01950.3179 0.38030.04821.0950 1.00910.00001.8740 c=a.*b c= 0.14120.00120.1614 0.35060.04871.8532 2.19050.00001.1081 MATLABtamatrisvevektrilemlerindekullanlanbazfonksiyonlar: norm(a): birmatrisinveyavektrnnormunu(max(svd(X))verir. a=rand(3) a= 0.43990.03190.0310 0.94730.97570.4143 0.20670.80490.0762 >>c=norm(a) c= 1.6296 svd(A) komutAdizeyizerindetekildeerayrmynteminiuygular [u,s,v]=svd(a) a=rand(3) a= 0.19530.99440.7043 0.66530.66140.3014 0.73670.33370.3126 >>[u,s,v]=svd(a) u= 0.68530.69750.209123

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

0.56970.33480.7505 0.45350.63350.6268 s= 1.677700 00.64120 000.1414 v= 0.50490.86290.0232 0.72100.40680.5609 0.47460.29990.8275 MATLABprogramlamadilindematrislerinsatrveyastnlararasndakiilemlerdeyine: operatrkullanlr. rnek: Amatrisi6x6lkbirmatrisise 1. Amatrisinin3.Satrile5.Satrnyerdeitirelim. Tmp=A(3,:); A(3,:)=A(5,:); A(5,:)=Tmp; Yadaaynilemibakabirifadeile A=[A(1,:);A(2,:);A(5,:);A(4,:);A(3,:)]; ledeyapabiliriz. 2. Akarematrisinin1.Stnile3.Stnunuyerdeitirelim. Tmp=A(:,3); A(:,3)=A(:,1); A(:,1)=Tmp; Yadaaynilemibakabirifadeile A=[A(:,3);A(2,:);A(:,1);A(4,:);A(5,:)]; iledeyapabiliriz.24

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN

3. Amatrisinin2.satrnn2.cielemanndansonrakielemanlar(2,3,4,5,6.celemanlar) ileAmatrisinin4.Stunun2.cielemanndansonrakielemanlarn(2,3,4,5,6.c elemanlar)yerdeitirirsek, Tmp=A(2,2:6); A(2,2:6)=A(2:6,4); A(2:6,4)=Tmp; GenelolarakNxNboyutlubirAmatriszerindeelemanterdzendeilemyapacagimiz zaman, A(:,a)ileastununu(tmsatrn)naaitelemanlar A(a,:)ileasatrnn(tmsutunlarn)naaitelemanlarn A(a:b,:)ifadesiiletmailebsatrlarnierentmsutunelemanlarn A(:,a:b)iledeailebstunlararasndakitmsatrelemanlar zerindeilemyapyoroluruz. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A=[32;21] [V,D]=eig(A)%Amatrisininzdegervezvektrlerinibulur %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Ax=bdenklemsistemininCholeskyyntemiylezm a=[113;213;221]%Katsaydizeyi b=[11;8;1]%bilinenvektr [L,U]=lu(a);%altvestgendizeyler z=inv(L)*b; x=inv(U)*z;%aranansonuzmvektr %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Ax=bdenklemsistemininEHELON(birimmatriseindirgeme)yntemiylezm c=[ab] d=rref(c); x=d(:end);%buradaendiledmatrisininsonkolonugrntlenir. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%MATLABTAYNELEMELYNTEMLERLEDENKLEMTAKIMLARININZM 25

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN 1. JacobiYntemi 2. GaussSeidelYntemi 1. JacobiyntemiMatlabKodu: functionx=jacobi(A,b,N) %Jacobi(A,b,N)sistemizm % %Akatsaydizeyi %bsakolonvektr %Nyinelemesays % %baslangvektrsfralnmtr. %JacobidnmdizeyiA=inv(D)*(L+U) %c=inv(D)*b. % n=size(A,1); L=zeros(n); U=zeros(n); tol=1e05; k=1; x(:,1)=zeros(n,1); %baslangcvektr %AdizeyiniL,UveDdizeylerinebol fori=1:n ifA(i,i)==0 disp('sifirkosegenelemanilekarlald') return else D(i,i)=A(i,i); end; end; fori=2:n forj=1:i1 L(i,j)=A(i,j); end; end; fori=1:n1 forj=i+1:n U(i,j)=A(i,j); end; end; T=inv(D)*(L+U); c=inv(D)*b; whilek>a= 4011 0401 1040 1104 >>b= 1 2 3 4 >>jacobi(a,b,10) >> ans= 0000 0.25000.50000.75001.0000 0.18750.25000.68750.8125 0.12500.29690.79690.9844 0.19530.25390.78130.9570 0.18460.26070.79880.9854 0.19600.25370.79610.9810 0.19430.25480.79900.9856 0.19620.25360.79860.9849 0.19590.25380.79900.9856 0.19620.25360.79900.9855 2. GaussSeidelMatlabkodu: functionx=gauss_seidel(A,b,N) 27

JFM224SAYISALANALZVEPROGRAMLAMAIIIDr.nalDKMEN %Gauss_seidel(A,b,N)zm %Akatsaydizeyi %bsagvektr %Nyinelemesays % %Tg=inv(DL)*U %cg=inv(DL)*b. % n=size(A,1); L=zeros(n); U=zeros(n); tol=1e05; k=1; x=zeros(n,1); %balangvektr %L,UandDdizeyleri % fori=1:n ifA(i,i)==0 disp('sifirdiagonaleleman') return else D(i,i)=A(i,i); end end fori=2:n forj=1:i1 L(i,j)=A(i,j); end end fori=1:n1 forj=i+1:n U(i,j)=A(i,j); end end T=inv(DL)*U; c=inv(DL)*b; whilek>a= 211 231 325 >>b= 4 6 10 >>gauss_seidel(a,b,10) ans= 000 2.00000.66670.5333 1.40000.88890.8044 1.15330.96300.9228 1.05710.98770.9707 1.02080.99590.9891 1.00750.99860.9961 1.00270.99950.9986 1.00090.99980.9995 1.00030.99990.9998

29