matlab01_tr - Derleyen: A.Gün, Denetleyen:...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 MATLAB’E GÝRݪ BÖLÜM 1 TEMEL BASAMAKLAR 1. Programý Baºlatmak ve Programý Sonlandýrmak 1.A. Program Nasýl Baºlatýlýr? Matlab 6.1 Windows ortamýnda çalýºabilen, matematik iºlemler yapabilen yazýlýmdýr. ">>" iºaretine Matlab’in promptu adý verilir. Yazýlýmý çalýºtýrýnca oluºan pencerede prompt’dan itibaren komutlar yazýlabilir. Komutlar sonlandýrýlýp enter tuºuna basýlýnca cevap gözükür. Aºaðýdaki bölümler sizleri Matlab ile tanýºtýracak ve hesaplamalarý yapmak, problemleri çözmek, grafikleri çizdirmek, ve kendi özel fonksiyonlarýnýzý yazabilmek için Matlab’in nasýl kullanýlacaðýnýzý açýklayacaktýr. Matlab programlama dilinde dikkat edilmesi gereken en önemli husus ºudur. Yazýlmýº olan bir program üzerinde Run komutunun kullanýlmasýyla elde edilen istenmeyen sonuçlarýn giderilmesi amacýyla, program üzerinde deðiºikliklerin yapýlmasý gerekmektedir. Fakat Matlab’ta program üzerinde yapýlan bu tür deðiºiklikler bazen sonuçlarý deðiºtirmemektedir. Bundan dolayý Matlab’taki cash diye ifade edilen workspace, command window, command history dosyalarýnýn edit menüsü kullanýlarak temizlenmesi gerekmektedir. Bu cash’lerin temizlenerek programlarýn çalýºtýrýlmasý bizlere doðru sonucu verecektir. Command window’da uygun windows path’ini yazarak programlarý icra edebildiðimiz gibi dosyadan program çaðýrýp run komutuylada icra edebiliriz. >> Aºaðýdaki komut satýrý kullanmýº olduðunuz Matlab programlama dilinin sürümünü göstermektedir. >> version 1.B. Program Nasýl Sonlandýrýlýr? MATLAB Programlama dilini sonlandýrmak için >> quit >> exit komutlarý kullanýlýr. 2.Yardým Ýsteme 2.A. MATLAB Online Yardým MATLAB’in yardýmýndan yaralanmak için birkaç yol vardýr. Bunlarýn en iyi olaný : >> helpdesk komut satýrýdýr. Ayrýca örnek olarak aºaðýdaki satýrý incelersek >> help quit ºeklinde kullanýlan komut satýrý quit komutu hakkýnda bilgi edinmek için yardým menüsünden gerekli açýklamayý çaðýracaktýr. Ilk örnekleriniz esnasýnda alabileceðiniz diðer bir komutta: >> demo bu ifade Matlab’in deðiºik özelliklerini gösterecektir. Diðer çok fazla kullanýlan özellik lookfor komutudur. >> lookfor 'help' Yukarýda ki komut help dosyasýnda bulunan bütün komutlarý getirecektir. 3. Komut Satýrý 3.A. Komut Satýrlarý Yukarýdaki iºlemlerin yapýlacaðý anda açýlan pencereye <command window> adý verilir. yardým 1 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 kýsa komutlar veya program parçasý ENTER tuºuna basýldýðýnda icra edilir ݺlemler ve programlar burada yapýlabileceði gibi File’dan yeni bir program penceresi açýp kaydederek Debug ifadesinden Run komutuyla da çalýºtýrýlabilir ve sonuçlar yine command window’daki promptan itibaren görülebilir. Matlab programlama dili açýldýðýnda Ýlk once komut satýrý (Command Window) gelir. Bu komut satýrýna yazmýº olduðunuz. Komut satýrý birkaç komuttan da oluºabilir. >> sqrt(2) (yukarýdaki komut 2 deðerinin karekökünü alýr ve bir çýkýº gibi geri gönderir) veya: >> A = sqrt(2); ( Karekökü alýnmýº deðeri A deðiºkenine atar). Bu tip bir komut yazýmý doðrudan A sonucunu vermez. Sonucu görmek için >> A ifadesinin komut icra yazýlmasý gerekmektedir. edildikten sonra çalýºacaktýr bu da bizim için istenmeyen bir durumdur. Bundan dolayý deðiºken tanýmlarken çok dikkat edilmelidir. Programlama da türkçe karakter kullanýlamaz (ç,º,ð,ö). Örnekler MATLAB’te Legal deðiºken isimleri M , m , A , Wronsk , _A , WRONSK , wRoNsK , Wronsk_A , w1 , w0 , w234i , f_prime vs. seçilebilir. MATLAB’te illegal deðiºken isimleri 2 , #2 , a# , Wronsk! , Wronsk A , w@1 , w1,2 , f' vs. seçilemez. Aºaðýdaki örnek incelendiðinde >> degisken=3 ve bilgisayar aºaðýdaki cevabý verecektir. degisken = 3 Programlama esnasýnda kaç adet deðiºken kullanýldýysa bu deðiºkenleri görmemiz aºaðýdaki komut ile mümkündür. >> who Kullanmýº olduðunuz deðiºkenleri listeler. Deðiºkenimiz A degisken olur. >>whos bu tür komut deðiºkenin ismini boyutunu sýnýfýný tanýmlamak içindir. Deðiºkenlerin Hafýzada ne kadarlýk bir yer kapladýðýný bu komut ile görmemiz mümkündür. Name Size Bytes Class A 1x1 8 double array degisken 1x1 8 double array Hatýrlatma, MATLAB bütün matris formatýnda tanýmlar. deðiºkenleri 3.B. Eski Komut Satýrlarýnýn Yeniden Çaðrýlmasý Matlab Prompt’unda birçok komut satýrý icra edilmiº olabilir. Pratik bir yapýya sahip olmasý nedeniyle Yukarý ok tuºu ile eski icra edilmiº komutlar çaðrýlabilir. Ayný zamanda aºaðý ok tuºu ile de ileri doðru yazýlmýº komutlarý çaðýrabiliriz. 3.C. MATLAB Hesaplatmalarýnýn Durdurulmasý Klavye üzerindeki <control> ve C tuºlarýna ayný anda basarak çalýºmakta olan program sonlandýrýlýr. 3.D. Deðiºkenler Matlab’te kullanýlabilecek olan deðiºkenleri tanýmlayabilmek için aºaðýdaki örnekleri incelememiz gerekmektedir. Matlab’in mevcut kütüphanesinde bulunan hiç bir dosya ismi deðiºken olarak tanýmlanamaz. Tanýmlandýðý takdirde mevcut program hatalý 2 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 En son olarak, silmek istediðimiz deðiºkeni veya deðiºkenleri aºaðýdaki ºekilde silebiliriz. >>clear degisken veya >>clear all 4. Matris ve Vektörler 4.A. Matrisler Matris iºlemleri yapýlýrken Matris boyutlarýna dikkat edilmelidir. Aksi takdirde program hata verecektir. >> d = [2 1 >> I = eye(3) >> zeros(2,4) 4.B. Vektör Yapýlarý Matris ºeklindeki ifadelerin özel alt sýnýflarýný oluºtururlar. Örnek >> zeros(1,3) 3adet sýfýr dizisine sahip bir satýr vektörü yapýsýndadýr. Aºaðýdaki örnekleri inceleyelim. >> v = 1:9 elde edilecek sonuc: >> e = [3 1; 4 >> d + e ¿ 40 1 7] ¿ 2; 7 1] ¿ v= 123456789 Örnek >> w = 1:0.5:9 elde edilecek sonuc: w= Columns 1 through 7 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 8 through 14 >> f = [3 1; 4 >> d * f ¿ 2] ¿ 4.5000 5.0000 5.5000 6.0000 6.5000 7.0000 7.5000 Columns 15 through 17 8.0000 8.5000 9.0000 Aºaðýdaki Matris’i ele alýnýz >> M=[1,2,3;6,3,4;5,4,3] det ( f ) ¿ >> rank ( f ) ¿ eig ( f ) ¿ Aºaðýdaki komut satýrlarýný yazarak icra ediniz. >> Noise = rand(4) >> diag([1 4 5 6 -1]) M= 123 3 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 634 543 >> M(2,3) >> c = c+1 ans = 4 Örnek >> A = rand(4) 4x4 ‘lük Matris’e atamasýný saðlar. >> B = A(1:3,2:4) A’nýn ikinci satýrýný veya dördüncü sütununu almak için sýrasýyla aºaðýdaki komutlarý icra ederiz. >> second_row = A(2,:) >> fourth_col = A(:,4) Hatalý kullaným komutlarý >> clear A >> A(1,:) = 1:7 >> clear A >> A(:,1) = (1:7)' 5. Basit Matematiksel ݺlemlerin Uygulamasý Matrisler, Vektörler, ve skaler deðerler toplanabilir, çýkartýlabilir,bölünebilir ve çarpýlabilir. 5.A. Skaler Uygulamalar MATLAB’teki basit matematiksel uygulamalar aºaðýda verilen örnekler incelenerek kolayca anlaºýlabilir. >> 2+3 >> 2-3 >> 2*3 >> 3/2 >> [1,2;3,4]+[2,1;0,4] >> A=[1,2;3,4];B=[2,1;0,4];C=A+B >> A-B >> A = A + B >> v=1:7;w=7:-1:1;v+w >> v-w >> u=[1 2 3 3 2 1] >> u+v Matris toplama iºlemlerinde, iki matrisin toplamýnýn yapýlabilir veya yapýlamaz olduðunu anlamanýn en kolay yolu size komutuyla açýklanabilir Örnek >> size(u) ans = 16 >> size(v) ans = 17 Rastgele deðerlerin 5.B. Matris Toplamý M1 ve M2 deðiºkenli iki matris’in toplanabilmesi için sütun ve satýr sayýlarýnýn eºit olmasý gerekmektedir. Örnek Deneme amaçlý verilmiºtir. birkaç örnek burada >> a = 4; b = 5; c = a*b >> a+b 4 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 Birinci çýktý bize u matrisinin 1 satýr ve 6 sütundan oluºtuðunu, ikinci çýktý ise v matrisinin 1 satýr ve 7 sütundan oluºtuðunu göstermektedir. Dolayýsýyla bu iki matris için toplama iºleminin yapýlmasý mümkün deðildir. 5.C. Satýr-Sütun Matris Çarpýmý Ýki Matrisin Çarpýmý için gerekli olan koºul. M1 matrisinin sütun sayýsý M2 matrisinin satýr sayýsýna eºit olmalý. Burada M1*M2 çarpýmý tanýmlanabilir ama M2*M1 tanýmlanamaz. Örnek: Aºaðýdaki örnekleri command windows’ta yazarak enter tuºu ile çalýºtýrýnýz ve sonuçlarý deðerlendiriniz. >> M1=[1 2 -1 3 4 5]; >> M2=[2 -1 03 1 10]; >> M3=M1*M2 >> M4=M2*M1 >> M5=M2*M4 >> v1=[0;1;2] >> a = [3]; M1 >> w1=[-1,1] >> a*M1 >> M1*v1 >> M1*a >> w1*M1 >> w1*M1*v1 >> v1*M1 >> A=[1 3 4 5]; >> A*A >> A*A*A*A*A*A*A*A*A*A*A*A*A 5.D. Kuvvet Alma Yukarýdaki örneðin en son satýrýnda ki ifadeyi aºaðýdaki gösterimde yazabiliriz. n x n boyutunda bir A matrisi ve n boyutunda bir vektör verilsin >> c = 1000; f = [1 3 -1 4]; c+f ans = 1001 1003 sonucunu elde ederiz 999 1004 5.G. Skaler – Matris Toplamý Aºaðýdaki komut satýrýný çalýºtýrdýðýmýzda >> A^13 5.E. Transpose Uygulamasý Bu uygulama ile matris iºlemlerinde sütun indeksleri ile satýr indeksleri yerdeðiºtirmektedir. Örnek >> v1 >> v1' >> w1 >> w1' >> M1 >> M1' >> A >> A' 5.F. Skaler-Matris Çarpýmý Verilen bir M1 matrisini a skaler sayýsý ile çarpabiliriz. Örnek 5.H. Matris Bölümü:Doðrusal Sistemlerin Çözümü 5 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 Ax=b eºitliðinin saðlanabilmesi için çözümü yaparken sol bölme komutunu kullanmalýyýz.(Bkz. 6. Skaler Fonksiyonlar) Burada A Matrisi sýfýr matrisi olmamalýdýr. Örnek >> A = [ 1 2 3 300 0 1 -1]; >> b=[1 1 -2]'; >> x=A\b x= 0.3333 -1.0667 0.9333 6. Skaler Fonksiyonlar MATLAB komutlarýnýn birçoðu fonsiyonlardan oluºur. Bu fonksiyonlarýn bazýlarý matematiksel fonksiyonlar olarak gösterilir. Bazý Matematiksel Ýfadeler Sembol Sembol adý + * / \ ^ () () = == Toplama Çýkarma Çarpma ans = 1.0000 2.0000 2.2361 5.0000 >> W = [10.334 12.307 -13.554 14.306] Örnek 2+3 2-4 2*3 2/3 2\3 2^4 2*(3 + 4) x=2 x == X ans = 1 1 -1 1 >> x=.1:.1:1.9;log_table=[x;log(x)]' >> x=0:pi/6:pi; y=sin(x) 7. Dizi Uygulamalarý Aºaðýdaki Matrisi düºünelim >> M = [1 2;3 4] Örnek >> sqrt(14.407) >> log(2) >> sin(pi/3) >> cosh(3.27) >> abs(-15) ve bu matrisin her bir elemanýnýn karesini almak istiyelim. Eðer problemin çözümü için aºaðýdaki komut satýrýný çalýºtýrýrsak istediðimiz sonucu elde edemeyiz. >> M^2 Yukarýdaki satýr M*M ifadesine karºýlýk gelmektedir. W= 10.3340 12.3070 -13.5540 14.3060 >> sign(W) >> rem(13,3) >> floor(13/3) >> round(13/3) >> round(14/3) >> ceil(13/3) Örnekler >> A = [1 4 5 25] A= 14 5 25 >> sqrt(A) Bölme (Saðdan) Division (Soldan) Kuvvet alma Parantez (normal) Atama Eºitlik Parantez (Fonksiyon) cos(x) 6 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 Ama M. ifadesiyle birlikte kare alma komutunu kullanýrsak istenilen sonucu elde ederiz. >> M.^2 Aºaðýdaki örnekleri deneyiniz. >> Z = [1 3 ; 4 1]; Y = [-2 3 ; 4 -5]; >> Z*Y >> Z.*Y 8. Matris ve Vektör Fonksiyonlarý 8.A. Matris fonksiyonlarý MATLAB’te önemli matris fonksiyonlarý Determinant >> M=[1,2;2,7];det(M) ans = 3 >> A=hilb(5);det(A) ans = 3.7493e-12 Özdeðerler >> eig(A) Matrisin Tersi >> inv(A) Rank >> rank(A) Size (Boyut) det, eig ve inv gibi bazý matris fonksiyonlarý sadece kare matrislerde uygulanabilir. Rank veya size gibifonksiyonlarda her matrise uygulanabilir. 8.B. Vektör fonksiyonlarý Bu fonksiyonlarý olursak örneklerle açýklayacak x^3 grafiði [-3,3] aralýðýnda çizdirilecektir. >> x = -3:.1:3; y = x.^3; plot(x,y); veya istatiksel fonksiyonlar: >> median(v) >> mean(v) >> std(v) BÖLÜM 2 GRAFIKLER, ÇIKIª, FORMAT VE SEMBOLIK HESAPLATMALAR 1. Ýki Boyutlu Grafikler 1.A. plot fonksiyonu X ve y gibi iki vector düºünelim ve bu vektörlerin ayný uzunluða sahip olduðunu varsayalým. Komut satýrý >> plot(x,y) yukarýdaki komut satýrý x’e karºýlýk gelen y elemanlarýnýn grafiðini çizdirmektedir Örnek >> v = 10*rand(1,10); >> max(v) >> min(v) >> sort(v) Matematiksel fonksiyonlar: >> sum(v) >> prod(v) 7 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 Parametrik bir eðri çizdirmek istersek Öncelikle t deðiºkeninin tanýmlanmasý gerekmektedir. >> t = 0:pi/30:2*pi; >> plot( (cos(t)).*sin(t) , (1-cos(t)).*cos(t) ); Ayný zamanda MATLAB’te deneysel verilerin grafiklerini de çizdirebiliriz. Örnek: Her bir ay’ýn sýcaklýk deðerlerini çizdiren bir program yazarak grafik ortamda gösterelim. >> months = 1:12; >> temp_max=[39,44,59,65,82,89,95,102,96,88,6 4,55]; >> plot(months,temp_max); 1.C. Ayný plot üzerine birden fazla grafik çizdirilmesi Bazen iki grafiði ayný düzlem üzerinde karºýlaºtýrmak isteriz. Bunun için MATLAB’te üç farklý yöntem vardýr. Taylor seri açýlýmýný örnek olarak incelersek; 1+x+(1/2)x2 1+x+(1/2)x2+(1/6)x3. Birinci örnek yöntem >> x=-1:.02:1; >> func=exp(x);second=1+x+1/2*x.^2;third=seco nd+1/6*x.^3; >> plot(x,exp(x),x,second,x,third); Ýkinci Örnek yöntem >> x=-1:.02:1; >> Functions=[exp(x);1+x+1/2*x.^2;1+x+1/2*x.^ 2+1/6*x.^3]'; >> plot(x,Functions) MATLAB otomatik olarak renk atamasý yapmaktadýr. Eðer renk atamasýný kendimiz yapmak istersek >> plot(x,exp(x),'b',x,second,'m',x,third,'g'); Aºaðýdaki komutta getirebilmektedir. >> plot(temp_max); 1.B. Ýsteðe baðlý çizim stilleri Örnek >> x = -3:.1:3; y = x.^3; plot(x,y,'o') veri olarak grafik ekrana daire yerleºtirecektir. >> x = -3:.1:3; y = x.^3; plot(x,y,'g-.') Yeºil renkte kesikli çizgiler yerleºtirir. ayný iºlevi yerine ºeklinde komut tanýmý yapabiliriz. Grafik çizdirme esnasýnda farklý çizgi stillerini de kendimiz belirleyebiliriz. >> plot(x,exp(x),':',x,second,'--',x,third,'-.'); Üçüncü Örnek Yöntem (hold komutu) Örnek >> x=-1:.02:1; >> plot(x,exp(x)); >> second=1+x+(1/2)*x.^2;third=second+(1/6)*x. ^3; >> hold 8 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 Current plot held >> plot(x,second);plot(x,third); >> hold Current plot released >> temp_min=[27,25,29,39,48,61,70,77,69,51,44, 30]; >> bar(temp_max,'r'); >> hold Current plot held >> bar(temp_min,'b');hold Current plot released Ayrý veri deðerlerini de girerek çizdirme yapýlabilir, ama bu tür iºlem hem uzun hem de pratik deðildir. >> data=[ 1.2 3.3 1.4 3.5 1.5 3.3 1.7 3.9 1.3 3.4 1.5 3.5 1.8 4.5 1.9 5.4 1.8 4.4 1.9 5.2 1.4 3.6 1.3 3.2 2.2 10.3 1.5 3.7 0.9 3.1 1.7 4.1 1.6 3.5 1.2 3.2 1.9 5.7 1.0 3.2 1.7 3.8 1.4 3.0 1.8 4.9 2.5 13.1 1.6 3.4 ]; >> plot(data(:,1),data(:,2),'o'); 2. Sembolik Hesaplatmalar 2.A.Sembolik Eºitliklerin oluºturulmasý Programlamaya baºlamadan once sembolik deðiºkenlerimizi tanýmlamamýz gerekmektedir. Örnek >> syms a b c d x y z >> A= [a b; c d] >> A(1) >> det(A) >> eig(A) 2.B.Sembolik Fonksiyonlarýn Oluºturulmasý f fonksiyonunu sembolik bir eºitlik olarak tanýmlayabiliriz. Örnek >> f = 1 + 2*x^2 + cos(x) Bu tanýmlamadan sonra f’in türevini aºaðýdaki komut ile hesaplatabiliriz. >> diff(f) Bu yeni eºitliði atayabiliriz. >> f_prime=diff(f) ve kaçýncý dereceden türev almak istersek aºaðýdaki formda yazabiliriz. Aºaðýdaki form 2. dereceden türev almaktadýr. >> f_second=diff(f,2) Bir fonksiyonun tanýmsýz integralini veya anti türevini bulmak için komut satýrý olarak >> int(f) yazýlabilir. Ve tanýmlý bir aralýkta integral deðerini bulmak için; (0 ve 2 aralýðý örnek olarak alýnmýºtýr ). >> int(f,0,2) 2.C. Eºitliklerin Sembolik olarak çözümü farklý bir deðiºkene 9 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 Aritmatiksel eºitlikleri de MATLAB yardýmýyla sembolik olarak çözmemiz mümkündür. Örnek: Aºaðýdaki iki bilinmeyenli denklemi ele alalým. ax2 + b x + c = 0. Bu denklemin çözümünü aºaðýdaki program basamaklarýnda görebiliriz. >> syms x a b c >> p = a*x^2 + b*x + c >> solve(p) Örnek: Aºaðýdaki eºitliði ele alalým ln (y) - ln (r-y) = k t + C r, k ve C sabitler, t herhangi bir parametre ve y’ de bilinmeyen olsun. y’yi çözmek için >> syms r k C t y >> equation = 'log(y) - log(r-y) = k*t + C' >> solve(equation,y) program satýrlarý kullanýlýr. Burada çözüm tek’dir. Bu deðere Atama’da yapabiliriz. >> y = solve(equation,y) ªimdi y bir eºitlik haline geldi. y=5 t için >> solve(y-5,t) 2.D. Diferansiyel Eºitliklerin Çözümü Sembolik olarak diferansiyel Denklemlerin çözümünü yapabilmek için dsolve fonksiyonu kullanýlýr. Aºaðýdaki diferansiyel denklemi çözmek için y'=y Öncelikle y’yi tanýmlamalýyýz. sembolik deðiºken >>sym y Daha sonra eºitliði çözebilmek için dsolve komutunu kullanmalýyýz. >>dsolve('Dy=y') D diferansiyel operator, Dy ise y’nin türevi demektir. Eðer baºlangýç koºulu yerleºtirilecekse fonksiyon >>dsolve('Dy=y', 'y(0)=1') halini alýr. 3. Birinci Dereceden Diferansiyel Denklem Çözümleri (ODE) Matlab programlama dilinde birinci dereceden diferansiyel denklem çözümlerini yaparken aºaðýdaki program parçalarýný kullanabiliriz. Birinci dereceden diferansiyel denklem formu x baðýmsýz deðiºken, y’de x’e baðlý bir fonsiyon olduðunda aºaðýdaki ºekilde tanýmlanabilir. y¢ = dy = g( x , y ) dx Örnek y = x 3 - 7.5 y¢ = g1( x, y ) = 3x 2 y = f ( 2 ) = 0.5 matlab’te nasýl hesaplatýlýp çizdirildiðini aºaðýdaki program parçalarýyla görebiliriz. main.m [x,num_y]=ode23('g1',2,4,0.5); y=x.^3-7.5; plot(x,num_y,x,y,'o') ylabel('y=f(x)') xlabel('x') grid g 1 ( x , y ) = [2 ,4 ] aralýðýnda x , y grafiðinin 10 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 g1.m function dy=g1(x,y) dy=3*x.^2; Bu tip programlarda dikkat edilmesi gereken en önemli husus ºudur. Eðer bir program için alt program (subroutine ) yazýldýysa bu programýn çalýºtýrýlabilmesi için alt programdaki olarak verilen dosya adýnýn fonksiyon içerisinde de ayný isimle verilmiº olmasý gerekmektedir, ayný zamanda ode23 komutundada alt program adýný ayný tanýmlamalýyýz. Örnek & y1 = y 2 y 3 & & y 2 = - y1 y 3 & y 3 = -0.51 y 1 y 2 y1 ( )= 0 0 y 2 (0 )= 1 y 3 ( )= 1 0 Örnek & x 1 = - x 1 + 3 x 2 - sin (t ) 2 & x 2 = - x1 - x 2 Yukarýdaki denklem sistemini ode23 komutunu kullanarak çözünüz ve grafik ortamda gösteriniz. main6.m options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]); [t,y] = ode45('eqns6',[0 12],[0 1 1],options); plot(t,y(:,1),'-',t,y(:,2),'-.',t,y(:,3),'.') grid eqns6.m function dy = eqns6(t,y) dy = zeros(3,1); dy(1) = y(2) * y(3); dy(2) = -y(1) * y(3); dy(3) = -0.51 * y(1) * y(2); denklem sistemini ode23 komutunu kullanarak çözünüz. main.m initial = [0;0]; tsim=[0 16*pi]; [t,u]= ode23('eqns5',tsim,initial); subplot(2,1,1),plot(t,u(:,1)),title('1st derivative of y'),grid subplot(2,1,2),plot(t,u(:,2)),title('y'),xlabel('x'), grid eqns.m function u_prime=eqns5(t,u) u_prime(1,1)=-4*u(1,1)+3*u(2,1)-sin(t); u_prime(2,1)=-u(1,1)-u(2,1).^2; 11 Derleyen: A.Gün, Denetleyen: A.Karamancýoðlu, OGU-EE.003, Aðustos 2002 BÖLÜM 3 KONTROL YAPILARI 1.For Döngüsü For döngüsünün iºlevini aºaðýdaki basit örnek ile açýklayabiliriz. for x=1:5 for y=1:6 A(x,y)=1/x*y; end end A Yukarýdaki program çalýºtýrýldýðýnda aºaðýdaki sonuçlar elde edilmiºtir. Bu basit programda dikkat edilmesi gereken en önemli husus A(x,y)=1/x*y; ifadesinin sonunda ; (noktalý virgül) kullanýlmasýdýr. Noktalý virgül kullanýmý A deðerlerinin ekrana sürekli olarak bastýrýlmasýný önlemektedir. Sonuç doðrudan ekranda görüntülenebilir. Programda x satýr sayýsý y ise sütun sayýsýný göstermektedir. Örnek while 1 n=input('n deðerinin giriniz: '); if n<=0,break,end while n>1 if rem(n,2)==0,n=n/2 else n=3*n+1,end end end BÖLÜM 4 KONTROL ÝFADELERÝNÝN ÇÖZÜMÜ 1. Zaman Domaini Aºaðýda verilen denklemin basamak cevabýný t=0 ile t=10 zaman aralýðýnda hesaplatmak ve grafik ortamda çizdirmek için G (s ) = 10 s + 2 s + 10 2 num=10; den=[1,2,10]; t=[0:0.1:10]; y=step(num,den,t); plot (t, y) Program parçasýný kullanabiliriz. Bu programda 101 elemana sahip biri zaman eksenini diðeri de birirm basamak cevabý gösteren eksen olmak üzere iki sütun üretilir. Ýmpulse cevabýný da impulse çözdürebiliriz. y=impulse(num,den,t); Genel giriºlerde ki sistem cevabý da komutuyla 2. If – Break Komutu Örnek n=input('n deðerinin giriniz: '); if n<0 A=['Sayi negatif']; elseif rem(n,2)==0,A=['Sayi cift']; else A=['sayi tek']; end disp(A) Not: Programdaki koºul kelimeleri (if, elseif, else) küçük harflerle yazýlmalýdýr, aksi takdirde program çalýºmayacaktýr. y=lsim (num,den,u,t) komutuyla çözdürülebilir. Giriº vektörü u’dur. Tek giriºli sistemler için u sütun vektörüdür. Örneðin rampa cevabýný hesaplatmak için, ramp=t; y=lsim (num,den,ramp,t) kullanýlabilir. 2. Frekans domaini bode(num,den) 12 ...
View Full Document

Ask a homework question - tutors are online