Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this document? Why not share!

Like this? Share it with your network

Share

Matlab

on

  • 8,229 views

 

Statistics

Views

Total Views
8,229
Views on SlideShare
8,229
Embed Views
0

Actions

Likes
1
Downloads
119
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Matlab Document Transcript

  • 1. Matlab Ders Notları MATLAB Command Window: Adından da anlaşılacağı gibi bu Matlab, MATrix LABoratuary kelimelerinden türetilmiş, pencere komut penceresi olup Matlabın en önemli daha çok matematiksel işlemler yaptırmaya yönelik penceresidir.Bu pencereden Matlab ile ilgili komutları tasarlanmış bir bilgisayar programıdır. klavyeden girer, komutun işlemesini sağlamak için de Enter tuşuna basarız.Komutları girdiğimiz satır >> ile Matlab'ın Genel Yapısı : başlar ki bu satıra komut satırı denir.Tabii dir ki komut Matlabı çalıştırdığımızda, karşımıza ana pencere satırına, Matlab için anlamlı komutlar yazmalıyız. gelir.Bu pencerede File, Edit, View, Web, Window ve Örneğin naber yazıp enter tuuna basarsak ??? Help ana başlıkları vardır.Bu başlıklar altından, diğer Undefined function or variable 'naber'. gibi bir karşılık Windows programlarında alışılagelmiş benzer işlemler alırız.Bu da naber adlı ne bir fonksiyon ne de bir değişkenin tanımlanmamış olduğu anlamına gelir. Yine komut satırına naber='Đyidir' yazıp enter tuşuna basarsak; ekranda; naber = Đyidir görünür. Örneğin a=3 (enter), b=-7 (enter) işlemlerini yapıp a*b (enter) yaptığımızda ekranda; ans = -21 görülür. Örneğin; komut satırına clc yazıp enter tuşuna basarsak, komut penceresine yazılan komutların tümü yapılabilir.Örneğin; File ile klasik dosyalama işlemleri, silinir ve kürsör (imleç) pencerenin en üst ve sol Edit ile çalışılan dosyadaki düzenleme işlemleri, View ile köşesine konumlanır. görünüm ayarlamaları, Web ile, ilgili Đnternet bağlantıları, Window ile, Matlab dışında açılan pencerelerin, Command History: Bu pencere o ana kadar komut uygulamaların ve figürlerin kapatılmasını, Help ile de satırından girilen komutları gösterir.Đstersek bunların program ya da işlemler ile ilgili yardım almayı sağlar. birini fareyle seçer, ya da bir kaçını veya tümünü fare Ortalama bir bilgisayar kullanıcısı, yukarıda sayılan ve aşağı-yukarı yön tuşları yardımıyla seçer ve delete bölümlerin, kabaca ne anlama geldiğini bilir.Ancak View tuşuna basarak silebiliriz (Görünüm) ile ilgili bilinmesi gereken birkaç maddeyi açıklamakta fayda var.Bu bölüm ve alt seçeneklerinin Workspace: görünümü yandaki gibidir.Burada Desktop Layout ile Komut satırından ya Matlabın masaüstü yerleşimini da çalıştırılan bir düzenleyebilirsiniz.Örneğin; Default ile varsayılan dosya ya da görünümünü, Command Window Only ile sadece fonksiyon ile klasik komut penceresini, Five Panel ile çok kullanışlı ve hafızada oluşturulan çok amaçlı olan 5 pencereli görünümünü değişkenlerin seçebiliriz.Genellikle Five Panel görünümünde çalışmak adlarının, tiplerinin daha uygundur.Bu görünüm seçildiğinde karşımıza, ve özelliklerinin adından da anlaşılacağı gibi Matlab 5 pencereden görüntülendiği izlenebilir ve çalışılabilir.Bu pencereler ve kısaca yapılan penceredir.Bu alana işlemler şunlardır: çalışma alanı denir. Launch Pad: Matlab kısayollarının bulunduğu Örneğin bu pencerenin görüntüsü yandaki gibiyse; a penceredir.Bu pencereden Matlab uygulamalarına, değişkeninin 1x1 boyutunda bir matris yani sayı, c simulink penceresine, araç kutularına ve blok setlerine değişkeninin ise 2x3 boyutunda bir matris, yani iki satır ulaşılabilir.Örneğin Matlab ile ilgili yapılabilecek olan ve 3 sütundan oluşan bir matris, naber adlı değişken de işlemler hakkında bilgi sahibi olmak için bu pencereden 6 karakterden oluşan bir karakter zinciri (string) olduğu yararlanabiliriz.Örneğin Matlab ile ilgili yapılabilenleri, görülür. demo olarak izlemek istersek; MATLAB-Demos sekmesine tıklamalıyız.Karşımıza Desktop Environment, Current Directory: Matlab dosyalarının kaydedildiği, Matrices, Numerics, Graphics, Language ... gibi alt yüklendiği dosyaların bulunduğu klasörü (dizin), bölümler çıkar.Örneğin Grafik ile ilgili bilgilenmek ve bazı varsayılan klasör olarak belirlemeye yarar..Aksi grafiklerin demolarını görmek istersek Graphics belirtilmedikçe bu klasör C:Matlab6p5work gibi bir bölümünü tıklamalıyız.Bu bölümü (veya yanındaki + klasördür. işaretini) tıkladığımızda, ... 2-D Plots, 3-D Plots, ... gibi bölümler görünür.Örneğin 2-D Plots tıklanırsa iki boyutlu Matlab'da Matematiksel Đşlemler: grafiklerle ilgili, 3-D Plots tıklanırsa üçboyutlu grafiklerle Matlab'da bir çok eylem, dört ilşem ve matematiksel bazı ilgili demoları görebilir ve inceleyebiliriz. işlemler yaptırabiliriz.Bunun için, ya ilgili komutları komut penceresinden teker teker girerek veya ilgili komutları bir dosyaya yazıp, o dosyayı çağırarak 1 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 2. Matlab Ders Notları çalıştırabiliriz.Đşlemleri yaptırırken, sayıları reel sayı ya Tüm programlama dillerinde olduğu gibi, program içinde da karmaşık sayı olarak alabiliriz.Bunu aşağıdaki değeri değişmeyen değerlere sabit, değeri değişebilen örneklerde inceleyelim: bellek alanına işaret eden değerlere değişken, değeri karakterlerden oluşan değerlere de metin katarı (string) 1) Komut satırına a) 2+3 b) 24-3*(4-2) c) 12-12/6*8 denir.Matlab'da değişkenler büyük küçük harfe d) 2^3 duyarlıdır.Örneğin a değişkeni ile A değişkeni farklıdır. e) (2-3i)*(4+i) f) sin(30) g) sin(30*pi/180) yazıp enter tuşuna bastığımızda ne olur? Çözüm: a) 2 ile 3 ün toplamı 5 görülür. Değişkenlere Değer Atama: b) Önce parantez içindeki işlem yapılır (2), sonra 3 ile 2 Her hangi bir programlama dilinde olduğu gibi, çarpılır (6), son olarak ta 24 ten 6 çıkarılarak 18 soncu Matlab’da da bir değişkene değer verme işlemine elde edilir. ”değer atamak” denir.Bir değişkene atanan değer, c) 12 6 ya bölünür (2), 8 ile çarpılır (16), 12 den 16 değiştirilmediği sürece aynı kalır. çıkarılarak -4 sonucu bulunur. Değer atamanın genel kullanımı aşağıdaki biçiminde d) 2 nin 3 üncü kuvveti alınarak 8 elde edilir. olur: e) 2-3i karmaşık sayısı ile 4+i karmaşık sayısının çarpımı olan 11.0000 -10.0000i sonucu görülür. <Değişken adı>=<Atanacak değer>; f) -0.9880 sonucu görülür ki bu 30° nin sinüsünde n farklıdır.Çünkü bu 30° derece de ğil 30 radyanın Örnekler: sinüsüdür. g) 0.5000 sonucu görülür ki bu da 30° nin sinüsüd ür.O 1) a=1; işlemi ile a adlı sayısal değişkene 1 sayısını halde bir sayının trigonometrik değerini buldurmak için, atamış oluruz. önce pi ile çarpıp 180 e bölerek açıyı radyan çevirip sonra trigonometrik değerini hesaplatabiliriz. 2) a=’Đzmir’ işlemi ile a adlı string değişkenine Đzmir stringini atamış oluruz. O halde örnekte görüldüğü gibi Matlab'da; matematiksel işlemleri, komut satırından girip enter 3) a=5;b=7;c=a+b; işlemleri sonucunda a değişkenine tuşuna basarak sonuçlarını görebiliriz.Đşlemlerde 5, b değişkenine 7 ve c değişkenine a ve b kullanılan semboller, bazı temel matematiksel değişkenlerinin değerleri toplamı olan 12 sayısını fonksiyonlar ve anlamları yandaki tabloda görülmektedir. atamış oluruz. 2) Komut satırına a=5 (enter) b=-3 (enter) c=a+3*b 4) Aşağıdaki atamalar sonucunda değişkenlerin son (enter) yazdığımızda ekranda sırasıyla a, b ve c durumlarının ne olacağını bulalım. değişkenlerinin değerleri nelerdir? a:=5;b:=-3;c:=a+2*b;a:=a+b; C: 5 -3 ve -4 Çözüm: 3) Hafızadaki değişkenlerin a) sadece adlarını b) her bir değişkenin tipini ve kapladığı alanı görüntülemek için a b c Açıklama hangi komutlar kullanılır?     C: a)who b) whos 5 -3 -1 5+2.(-3)=5-6=-1 2 -3 -1 5+(-3)=2 4) hafızadaki a) a değişkeninin b) a, b, z değikenlerinin c) tüm değişkenlerin değerlerini silmek için hangi Özel Sabitler: Matlab'da önceden tanımlanmış bazı komutlar kullanılır? sabitlerdir.Bunlar aağıdaki tabloda gösterilmiştir. C: a) clear a b) clear a b z c) clear Özel Anlamı Değeri 5) Yarıçapı 5 birim olan dairenin alanını buldurmak için Sabit hangi girişleri yapmalıyız? eps Sıfıra çok yakın bir sayı 2.2204e-016 C: pi*5^2 veya pi*25 (epsilon) realmin Tanımlanabilen en küçük 2.2251e-308 Matlab'da Temel Kavramlar: reel sayı Anahtar Kelimeler: Tüm programlama dillerinde olduğu realmax Tanımlanabilen en büyük 1.7977e+308 gibi (Fortran, C, Pascal, Basic vs..) Matlab'ın da özel reel sayı anlam taşıyan bazı kelimeleri vardır ki, bu kelimeler pi pi sayısı 3.1416 değişken olarak kullanılamazlar.Bu tür kelimelere i, j Karmaşık sayıların sanal 0 + 1.0000i anahtar kelime (keywords) denir.Bu kelimeler; 'break' birimi 'case' 'catch' 'continue' 'else' 'elseif' 'end' inf Sonsuz Inf 'for' 'function' 'global' 'if' 'otherwise' computer Bilgisayarın tipi PCWIN 'persistent' 'return' 'switch' 'try' 'while' dir. version Matlab'ın versiyonu 6.5.0.180913a Bu kelimelerin bir listesini almak için komut satırına; (R13) iskeyword komutunu yazarak elde edebiliriz. Sabitler, Değişkenler ve Metin Katarları: Matlab'da Dizi (Matris) Đşlemleri: 2 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 3. Matlab Ders Notları Sayılardan oluşan satır ve sütun yapısına matris (dizi) 2x3 boyutunda b adlı tüm elemanları 1 olan matrisi oluşturalım. denir. Örneğin; Çözüm: b=ones(2,3); d1=[5] 1x1 lik, d2=[ 2 -7] 1x2 lik, d3= [1 0 -3 ] c) Birim Matrisi Oluşturan Fonksiyon: [ 5 3 1 ] 2x3 lük bir dizidir.Matlab da bu dizileri; Esas köşegeni 1 lerden diğer elemanları 0 lardan oluşan matrisie kare matrise (satır ve sütun sayısı eşit olan ) birim Komut satırında; d1=[5] veya d1=5 ile; matrisi, kare olmayan matrise de diyagonal matris d2=[2 -7] veya d2=[2,-7] ile; denir.Böyle matrisleri oluşturmak için eye fonksiyonu kullanılır. d3=[1 0 -3;5 3 1] veya d3=[1,0,-3;5,3,1] veya Kullanımı; matris_adı=eye(m,n); biçimindedir. d3=[1 0 -3 5 3 1] ataması ile oluşturabilirz Örnek: Dizilerin Değerlerinin Değiştirilmesi ve a) 3x3 lük birim matris; Düzenlenmesi: b) 4x3 llük diyagonal matris oluşturalım. Bir dizinin herhangi bir elemanını belirlemek için dizi Çözüm:a) i=eye(3,); b) d=eye(4,3); adından hemen sonra parantez içinde elemanın d) Rastgele Sayılardan Oluşan Matris ve Fonksiyonu: bulunduğu satır ve sütun sayısı yazılmalıdır. Elemanları 0 ile 1 arasındaki rastgele sayılardan oluşan bir matris için rand fonksiyonu kullanılır. Örnek: Kullanımı; matris_adı=rand(m,n); biçimindedir. a) Yukarıda tanımlanan d2 dizisinin -7 elemanını Not 1) Üretilen matrisin tüm elemanlarını k gibi bir sayı görüntülemek için ne yapılmalıdır? ile çarparak, sayıları 0 ile k arasına çekebiliriz. b) Yukarıda tanımlanan d3 dizisinin 2. satır, 1. Not 2) Ondalıklı sayılardan oluşmuş bir matrisin sütununda bulunan 5 in değerinin, -7.5 olması için ne elemanlarını yuvarlayıp tam sayı yapmak için round yapılmalıdır? fonksiyonunu kullanırız. Çözüm: a)d2(1,2) b) d3(2,1)=-7.5; Örnek: Not:1) Bir dizinin bir çok elemanını yeniden değer a) 0 ile 1 arasında rastgele sayılardan oluşan 10 atamak gerekirse, komut satırından atama yapmak uzun elemanlı a adında bir satır matrisi (dizisi, vektörü) zaman alabilir.Bu durumda dizi değişkeninin üzerine çift oluşturalım. tıklayarak açılan dizi editörü (array edit) yardımıyla b) Elemanları 10 ile 50 arasında sayılardan oluşan 5x3 değişiklikleri daha kolay yapabiliriz. tipinde b matrisini oluşturalım. c) Elemanları 50 ile 300 arasındaki tamsayılardan 2) Bir diziye düzenli artış (veya azalış) kuralıyla değerler oluşan 3x4 tipinde c matrisini oluşturalım. atanmak isteniyorsa bunu; ilk_değer:artış:son değer veya ilk_değer:artış:son değer Çözüm: biçiminde yapabiliriz.Ancak artış 1 ise belirtilmeyebilir. a) a=rand(1,10); b) b=10+rand(5,3)*40; Örnek: c) c=round(50+rand(3,4)*250); a) puan adlı bir boutlu diziye 1 den 100 e kadar sayıları atayan;; e) Rastgele Sayılardan Oluşan Normal Dağılımlı Matris ve b) ortalama adlı bir diziye 0 dan 5 e kadar 0.5 er artışla elde Fonksiyonu: edilen sayı dizisini atayan; Elemanları rasstgele sayılardan oluşan bir normal dağılımlı c) 1. satır 7 den den 17 ye kadar olan tam sayılar, 2. satırı 99 bir matris için randn fonksiyonu kullanılır. dan 89 a kadar azalan tam sayılardan oluşan 2 boyutlu m Kullanımı; matris_adı=randn(m,n); biçimindedir. dizisine atayan işlemleri yazınız. Örnek: Rastgele sayılardan oluşan normal dağılımlı 2x3 Çözüm: lük bir n matrisini oluşturalım. a) puan=[1:1:100]; veya puan=1:1:100; veya puan=1:100; b) ortalama=[0:0.5:5]; Çözüm: n=randn(2,3); c) m=[7:17;99:-1:89]; f) Lineer Aralıklı (Aritmetik) Dizi ve Fonksiyonu: Özel Dizi (Matris) Oluşturan Bazı Fonksiyonlar: Başlangıç ve biiş değerleri ve kaç elemandan oluşacağı a) Sıfır Matrisi Oluşturan Fonksiyon: belirlenen diziyi oluşturmak için linspace fonksiyonu Her elemanı sıfır olan mxn boyutunda bir matrise sıfır matrisi kullanılır. denir.Böyle bir dizi oluşturmak için zeros fonksiyonu kullanılır. Kullanımı; Kullanımı; matris_adı=zeros(m,n); biçimindedir. dizi_adı=linspace(ilk_değer,son_değer,eleman_sayısı); biçimindedir. Örnek: 3x5 boyutunda s adlı sıfır matrisi oluşturalım. Örnek: 10 ile 30 arasına 9 tane daha sayı koyarak a Çözüm: s=zeros(3,5); adında bir aritmetik dizi oluşturalım. b) 1 lerden Oluşan Matris: Çözüm: 10 ve 30 (ilk ve son terimler) diziye dahil Her elemanı 1 olan mxn boyutunda bir matrisi oluşturmak için olacağından terim sayısı 11 dir.O halde komut; ones fonksiyonu kullanılır. a=linspace(10,30,11); Kullanımı; matria_adı=ones(m,n); biçimindedir. Matris Đşlemleri: Örnek: 3 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 4. Matlab Ders Notları Matlab'da sayılardan oluşan matrislerle ilgili bazı işlemler (veya a.^2), a.*a.*a, (veya a.^3), sin(a), cos(a), e yaptırmak mümkündür.Örneğin 1 den 100 e kadar olan tabanında logaritması için log(a), 10 tabanında sayıları 1x100 lük bir a matrisine, kareleri dizisini de logaritmaları için log10(a) ... biçiminde 1x100 lük bir b matrisine atamak daha sonra da karılıklı gerçekleştirebiliriz. elemanları toplamını da bir c matrisine atamak isteyebiliriz.Veya 2x3 lük iki matrisi toplaya bilir, Örnek: a=[-1 3 5;2 1 7] , b=[3 -3 -4;1 1 5] ve çıkarabilir ya da birincinin 3 katına ikincinin -3 katını ilave c=[1 0;-1 2;3 3] matrisleri veriliyor. edebilir ve sonuç matrisinin tüm elemanlarının 7 a) a matrisinin elemanları ile b matrisinin elemanlarını fazlasını buldurmak isteyebiliriz.Veya 2x3 lük bir a karşılıklı çarpımlarından oluşan c1 matrisi varsa bulalım. matrisi ile 3x4 lük bir b matrisinin çarpımını c matrisine b) a matrisi ile b matrisinin çarpım matrisi olan c2 varsa atamak isteyebiliriz.Đşte bu ve bunun gibi işlemlere bulalım. matris işlemleri denir.Şimdi bu işlemlerin bazılarını c) a matrisinin elemanları ile c matrisinin elemanlarını görelim. karşılıklı çarpımlarından oluşan c3 matrisi varsa bulalım. a) Toplama-Çıkarma Bir Sayı ile Çarpma Đşlemi: d) a matrisi ile c matrisinin çarpım matrisi olan c4 varsa Đki matrisi toplamak (veya çıkarmak) demek, matrislerin bulalım. aynı mertebedeki elemanları teker teker toplayıp (veya e) a matrisinin elemanlarının karelerinden oluşan matris çıkarıp ) aynı mertebeye yazmak demektir.Bu durumda ile b matrisinin kosinüslerinden oluşan matrisler iki matrisin de aynı mertebeden olması gereği açıktır.Bir toplamını bulalım. matrisi sabit bir sayıyla ile toplamak (veya çıkarmak) f) x=[1 0;0 3] matrisinin i) Karesini ii) Kübünü iii) 10. demek, matrisin elemanlarınının tümünü teker teker o kuvvetini bulalım. sayıyla toplamak (veya çıkarmak )demektir.Bir matrisi sabit bir sayıyla ile çarpmak demek ise, matrisin Çözüm: elemanlarınının tümünü teker teker o sayıyla çarpmak a) Đki matrisin karşılıklı elemanlarının çarpımından demektir. oluşan matrisin tanımlı olabilmesi için aynı mertebeli olması gerekir.Bu durumda c1 matrisi tanımlıdır ve bunu Örnek: a=[-1 3 5;2 1 7] ve b=[3 -3 -4;1 1 5] matrisleri c1=a.*b işlemi ile gerçekleştirebiliriz. veriliyor. b) Đki matrisin çarpılabilmesi için birinci matrisin sütun a) c=a+b toplam matrisini b) d=a-b matrisini c) a sayısı ikinci matrisin satır sayısına eşit olmalıdır.Halbuki matrisinin her elemanınının 5 eksiğine karşılık gelen e a matrisi 2x3 b matrisi de 2x3 olduğundan bu iki matris matrisini d) f=2a-3b matrisini bulduran işlemleri yazalım. çarpılamaz. c) Đki matrisin karşılıklı elemanlarının çarpımından Çözüm: oluşan matrisin tanımlı olabilmesi için aynı mertebeli a) c=a+b b) d=a-b c) e=a-5 d) f=a+a-b-b-b veya olması gerekir.Halbuki bu matrisler aynı mertebeden f=2*a-3*b olmadığından bu iki matris eleman-elemana çarpma b) Đki Matrisin Çarpımı, Bir Matrisin Kuvvetleri ve işlemi gerçeklemez. Çarpma Đşlemi: d) Đki matrisin çarpılabilmesi için birinci matrisin sütun Đki matrisin çarpım işlemi iki biçimde anlaşılır. sayısı ikinci matrisin satır sayısına eşit olmalıdır.a matrisi 1) Aynı mertebeden iki matrisin elemanlarını teker teker , 2x3 lük, c matrisi de 3x2 lik olduğundan bu iki matris çarpıp, aynı mertebeye yazmak demektir.Bunu .* işlemi çarpılabilir ve c4 çarpım matrisi 2x2 lik bir matris olur.c4 ile gerçekleştiririz. çarpım matrisini c4=a*c işlemi ile buluruz. 2) Matematiksel anlamda iki matrisi çarpmak e) a.^2+cos(b) istediğimizde; birinci matris mxn türünde ve ikinci matris f) i) x^2 ii) x^3 iii) x^10 mutlaka nxp türünde olmalıdır; yani birinci matrisin sütun sayısı ikinci matrisin satır sayısına eit olmalıdır.Bu c) Bir Matrisin Devriğini (Transpozesi) Bulma Đşlemi: durumda birinci matrisin i. sütun elemanları ile, ikinci Bir matrisin satırlarını sütun, sütunlarını satır olarak matrisin j. satırındaki elemanlar karılıklı olarak çarpılır ve yazılmasıyla bulunan matrise, bu matrisin devriği sonuçlar toplanır ve bu toplam çarpım matrisinin (i,j) inci (transpozesi) denir.Bir matrisin devriğini .' işlemi ile mertebeye yazılır.Matrisler arası çarpma işleminin bulabiliriz. sembolü de * dır. 3) Bir a matrisinin her bir elemanının n. kuvvetlerinden Örnek: Bir önceki örnekteki a matrisinin devriğini oluşan matrisi bulmak için a.^n işlemi kullanılır. buldurup d matrisine atayalım. 4) Satır ve sütun sayıları eşit bir kare matrisi ardışık olarak n defa kendisiyle çarparak, a matrisinin n. Çözüm: d=a.'; kuvvetini bulabiliriz.Örneğin a matrisinin karesi için a*a veya a^2, kübünü buldurmak için a*a*a veya a^3, d) Đki Matrisin Bölümü, Birim Matris ve Bir Matrisin dördüncü kuvvetini buldurmak için a*a*a*a veya a^4 Tersi : işlemiyle buldurabilirz.Ancak 2005 nci kuvvetini Aynı mertebeden iki matrisin elemanlarını teker teker , buldurmak için a^2005 yazmak yeterlidir. bölerek, aynı mertebeye yazılmasına iki matrisin sol bölmesi denir ve bu ./ işlemi ile yapılır. Not) Bir a matrisinin eleman -elemana çarpma işlemine benzer mantıkla, bir matrisin tüm elemanlarının kareleri, a, b ve c aynı mertebeden kare matrisler olmak üzere; kübleri, sinüsleri, kosinüsleri, logaritmalarından ... c=a*b ise a matrisine c nin b matrisine bölümü denir. oluşan matris bulunmak istenirse; bunu sırayla a.*a c bölüm matrisi / işlemi ile yapılır. 4 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 5. Matlab Ders Notları yaptırabiliriz.Bunun için Matlab'da kullanılan komut ve Esas köşegeni 1 sayılarından diğer elemanları 0 lardan deyimleri örneklerle inceleyelim. oluşan kare matrise birim matris denir. Örneğin 1x1 lik birim matris [1], 1) x değişkenine 5 atayarak x in 2 katının 3 eksiğini 2x2 lik birim matris [1 0;0 1], bulduralım. 3x3 lük birim matris [1 0 0;0 1 0;0 0 1], Ç: x=5 (enter) 2*x-3 (enter) 4x4 lük birim matris [1 0 0 0;0 1 0 0; 0 0 1 0;0 0 0 1] dir. Birim matris oluşturmak için; eye fonksiyonunu 2) Girilen bir x değerini için, karesinin 3 katından 5 kullanırız. eksiğini hesaplatan bir program yazalım. Ç: Bunun için klavyeden girilen değeri x gibi bir değikene Örneğin; atamalıyız.Bunun için input komutundan yararlanırız. 2x2 lik i2 adlı birim matrisi i2=eye(2,2); Kullanımı değişken=input('açıklayıcı ifade'); 3x lük i3 adlı birim matrisi i2=eye(3,3); işlemi ile biçimindedir. oluşturabiiriz. x=input('sayıyı gir!); (enter) Aynı mertebeden a ve b kare matrisleri için a ile b nin 3*x^2-5 (enter) çarpımı birim matris ise b matrisi a matrisinin (aynı biçimde a matrisi de b matrisinin) ters matrisidir. Not:Her ne kadar Matlab'da bu şekilde işlem yaptırabilirsek de; daha uzun işlemler yaptırmak Örneğin 3x3 lük bir a kare matrisinin tersini bulmak için istediğimizde, komutları tekrar tekrar yazmak hem uzun eye(3,3)/a veya inv(a) işlemini kullanırız. zaman alır, hem de hata durumunda düzeltmesi zor olur.Onun için program için gerekli komutları yazdıktan sonra bunları bir dosyaya kaydedip sonra gerektiğinde Örnek: bu dosyayı çalıştırabiliriz.Bu amaçla yazılan Matlab a=[2 -10 0;1 2 4;3 0 1] matrisi ile b=[1 5 4;1 -1 2;0 1 -1] dosyalarına m dosyaları denir ve bunların uzantısı m matrisleri veriliyor. dir.Böyle bir dosya yazmak için; File - New - M-File a) a matrisinin elemanlarını sırasıyla b matrisinin sekmesi tıklanırsa; yeni bir m dosyası ekranı gelir.Bu elemanlarına bölerek elde edilen matrisi b1 matrisine dosyaya Matlab komutları yazılır ve File-Save atayalım. sekmesinden, dosyaya bir ad verilerek kayıt ortamına b) a matrisinin ta ters matrisini bulalım. kaydedilir.Diske kaydedilen bir m dosyasını çalıştırmak c) a ile ta matrisinin çarpımının 3x3 lük birim matris için, komut satırından ismi girilerek çalıştırılır. olduğunu gösterelim. d) a matrisinin b matrisine bölümünü b2 matrisine 3) Bu açıklamalar sonucunda yukarıdaki probleme atayalım. uyan, yani girilen bir sayının karesinin 3 katının 5 eksiğini bulup ekrana yazdıran bir m dosyası yazalım. Çözüm: Ç:File-New-M-File sekmesi tıklanır, gelen yeni m a) b1=a./b b) ta=eye(3,3)/a veya ta=inv(a) dosyası sayfasına sırasıyla aşağıdaki komutlar yazılır. c) a*ta ==eye(3,3) d) b2=a/b x=input('sayıyı gir'); Matrisler Đle Đlgili Bir Uygulama: 3*x^2-5 Lineer Denklem Sistemlerinin Çözümü: Matris ile ilgili işlemlerin bir çok uygulama sahası Matlab'da Kullanılan Bazı Komut ve Deyimler: vardır.Bunlardan biri de lineer denklem sistemlerinin Değişkenlere Değer Atama: input çözümüdür.Bunun için önce katsayılar matrisi elde edilir, Amaç: Matlab'da bir değişkene bir değer atamak. bu matris a olsun.Denklem sistemindeki eitliklerin sağ Kullanımı: atrafındaki sabit sayılardan oluşan matris b olsun. değişken=input('Açıklama' ) veya Bilinmiyenlerden oluşan matris x olmak üzere denklem değişken=input('Açıklama','s' ) sistemi ax=b matris eşitliği biçimine getirilmiş olur. Değiken sayısal değişkense ilk yazılan ifade; karakter Buradaki x bilinmiyenler matrisini bulmak için, a nın tersi dizisi değişkeni (string) ise ikinci ifade kullanılır. ile b matrisini çarparız yani inv(a)*b işlemini yaparız. Değişken Değerlerini Ekrana Yazdırma: fprintf ve Örnek: disp 2x-3y+z= 15 Amaç: Değişkenlerin değerlerini ekrana yazdırmak. x-z = -3 Kullanımı: x+y+z = 2 denklem sistemini çözelim. fprintf('Açıklama <biçim ifadesi>',değişken) disp(değişken) Çözüm: a=[2 -3 1;1 0 -1;1 1 1 ]; b=[15;-3;2]; x=inv(a)*b Not: "Biçim ifadesi" yerine, değişken string (karakter zinciri) ise %s değişken reel sayı (kayan noktalı) ise %f , Matlab'da Programlama üstel biçimde gösterilecekse %e sembolü kullanılır. Her hangi bir bilgisayar dilinde program yaparak, Ayrıca değişkenin değeri yazdırıldıktan sonra kaç satır istediğimiz bazı işlemleri yaptırabiliriz.Matlab'da da bir atlatılacaksa okadar n ifadesi yazılır. program yazarak benzer işlemlerimizi Örnek: 5 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 6. Matlab Ders Notları Klavyeden bir kişinin adı, soyadı ve yaşı girilerek; temiz if delta>0 ekrana ilgili kişinin kaç yaşında olduğunu yazdıran bir x1=(-b-delta^0.5)/(2*a);x2=(-b+delta^0.5)/(2*a); program yazınız. fprintf('Đki reel kök; x1 = %f x2 = %f ',x1,x2); Çözüm: elseif delta==0 ad=input('Adınız :','s'); fprintf('Tek kök var; x1 = x2= %f ',-b/(2*a)); soyad=input('Soyadınız :','s'); else yas=input('Yaşınız :'); fprintf('Kökler sanal '); clc; end; fprintf('Siz %s %s %d yaşındasınız.',ad,soyad,yas); 2) switch end Deyimi: Karar Verme ve Dallanma: Genel Kullanımı aşağıdaki gibidir: Bazen bir programda, belirli bir şartın gerçekleşmesi durumunda olması gereken işlemleri yaptırabilmek için switch anahtar-ifade karar verme deyimleri kullanılır.Matlab'da kullanılan case durum-1 karar verme deyimlerinden biri if deyimi, diğeri de case (işlemler-1) deyimidir.. case durum-2 (işlemler-2) 1) Đf şartlı deyimi: ... Genel Kullanımı aşağıdaki gibidir: case durum-n Đf durum_1 (işlemler-n) (ifadeler_1) otherwise elseif durum_2 (diğer işlemler) (ifadeler_2) end elseif durum_3 (ifadeler_3) Örnek:Klavyeden girilen 1 ile 5 arasında girilen bir tam ... sayının yazı ile kaç girildiğini ekrana yazdıran, istenen else aralığın dışında bir sayı girilmesi durumunda 'Lütfen 1 (ifadeler_n) ile 5 arasında bir tam sayı girin' uyarısını yapan bir end program yazalım. Örnek: Çözüm: 0-100 aralığında girilen puanı 5 üzerinden nota çeviren s=input('Sayınızı girin :'); bir programı if deyimi kullanarak yazalım. switch s case 1;fprintf('Bir...' ); Çözüm: case 2 ;fprintf('Đki...' ); puan=input('Puanı girin :'); case 3 ;fprintf('Üç...' ); if puan<45 fprintf('Değeri : %d',1 ); case 4 ;fprintf('Dört...' ); elseif puan<55 fprintf('Değeri : %d',2 ); case 5 ;fprintf('Beş...' ); elseif puan<70 fprintf('Değeri : %d',3 ); otherwise fprintf('Lütfen 1 ile 5 arasında bir tam sayı elseif puan<85 fprintf('Değeri : %d',4 ); girin'); end; else fprintf('Değeri : %d',5 );end; Örnek: Klavyeden girilen sayının negatif, pozitif ya da sıfır olduğunu ekrana yazan bir program yazınız. Matlab'da Tekrarlı Đşlemler ve Döngüler Çözüm: Belirli bir işlem birden çok tekrar ediyorsa bunu döngü sayi=input('Sayıyı giriniz :') deyimleri ile gerçekleştirebiliriz.Bunlar for ve while if sayi<0 öngüleridir. fprintf('sayınız negatif.'); elseif sayi>0 for Döngüsü: fprintf('sayınız pozitif.'); Amaç: Bir başlangıç değerinden, son değere kadar artış else miktarı kadar arlıklarda işlemleri tekrarlamaya yarar. fprintf('sayınız sıfır.');end; Kullanımı: Örnek: for değişken=başlangıç_değeri:artış:son_değer a, b c katsayıları girilen ikinci derece ax²+bx+c=0 (işlemler) denkleminin reel köklerini bulup ekrana yazdıran bir end program yazınız. Not: Artış değeri 1 ise yazılmasa da olur. Çözüm: clc; Örnek: Temiz ekrana 20 defa alt alta Đzmir Fen Lisesi a=input('a = ');b=input('b = ');c=input('c = '); yazdıran bir program yazınız. delta=b*b-4*a*c; 6 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 7. Matlab Ders Notları Çözüm: clc; c) for i=1:20 clc;t=0;n=1; fprintf('Đzmir Fen Lisesi n');end; x=input('x değerini giriniz : '); while t<=x Örnek: 1 den 1000 e kadar olan sayıların toplamını t=t+1/n;n=n+1;end; buldurup sonucu ekrana yazdıran bir program yazınız. fprintf('Đlk %d terimin toplamı %f dir.',n-1,t); Çözüm: Örnek: toplam=0; Klavyeden girilen negatif sayıların toplamını ve kaç for i=1:1000 tane olduğunu, pozitif sayıların toplamını ve kaç tane toplam=toplam+i;end; olduğunu bulan sıfır girildiğinde programı sona erdirerek fprintf('Toplam = %d ',toplam); sonuçları temiz ekranda yazdıran bir program yazınız. Çözüm: Örnek: Girilen bir sayıdan, istenen bir sayıya kadar olan clc;x=1;nt=0;pt=0;nsay=0;psay=0; sayıların toplamını bulduran bir program yazınız. while x~=0 x=input('Sayıyı gir (bitirmek için 0) :'); Çözüm: if x<0 nt=nt+x;nsay=nsay+1; toplam=0; elseif x>0 pt=pt+x;psay=psay+1;end;end; ilk=input('Kaçtan itibaren :'); fprintf('%d tane negatif sayının toplamı %f ',nsay,nt); son=input('Kaça kadar :'); fprintf('%d tane pozitif sayının toplamı %f for i=ilk:son dir.',psay,pt); toplam=toplam+i;end; fprintf('Toplam = %d ',toplam); MATEMATĐKSEL ĐŞLEMLER Matlab'daki matematiksel işlemler ve anlamları aşağıda Örnek: 9²+13²+17²+...+2005² toplamını bulduran bir verilmiştir. program yazınız. Đşlem Anlamı Çözüm: veya toplam=0; fonksiyon for i=9:4:2005 + Toplama sembolü toplam=toplam+i*i;end; - Çıkarma sembolü fprintf('Toplam = %d ',toplam); * Çarpma sembolü / Bölme sembolü while Döngüsü: ^ Üs alma sembolü Amaç: Belirli bir durum gerçekleştikçe istenen işlemleri tekrarlamaya yarar. Örnek: Komut satırına 12+32/(4-2)^3*5 yazıp enter tuşuna Kullanımı: bastığımızda; Matlab önce parentez içini yapar (yani while durum 4-2=2) sonra 2 nin 3. kuvveti alınır 8 bulunur, 32 8 e (işlemler) bölünür (4), bu da 5 ile çarpılır (20), 20 ile 12 toplanarak end; 32 elde edilir. Örnek: t=1+1/2+1/3+...+1/n toplamı gözönüne alınıyor. TEMEL MATEMATĐK FONKSĐYONLAR a) Baştan ilk 2005 terim toplamını bulduran bir programı Matlab'da bazı matematiksel işlemler yaptırmak while döngüsü kullanarak bulunuz. istediğimizde, matematiksel fonksiyonları kullanırız. b) t toplamınının 5 i geçtiği ilk n terim sayısını ve Matlab'da matematiksel fonksiyonlar; toplamı bulduran bir program yazınız. a) Temel (elemantary) fonksiyonlar; elfun c) t toplamınının, girilen bir x sayısını geçtiği ilk n terim b) Özel (special) fonksiyonlar; specfun sayısını ve toplamı bulduran bir program yazınız. c) Veri (data) fonksiyonları; datafun d) Metin (karakter dizisi) (string) fonksiyonlar; strfun Çözüm: e) Dosya giriş-çıkış (input-output) fonksiyonları iofun a) f) Tarih-zaman (time) fonksiyonları; timefun araç clc;t=0;n=1; kutusundadır.Bir araç kutsundaki fonksiyonları ve while n<=2005 anlamlarını görmek için komut satırına; t=t+1/n;n=n+1;end; help araç_kutusu biçiminde yazarız. fprintf('Đlk %d terimin toplamı %f dir.',n-1,t); Örneğin; temel fonksiyonlar ve anlamlarını görüntülemek için; help elfun, metin fonksiyonlarını ve b) anlamlarını görüntülemek için help strfun yazılır. clc;t=0;n=1; Bunların bazılarını görelim: while t<=5 t=t+1/n;n=n+1;end; a) Temel (elemantary) fonksiyonlar; elfun fprintf('Đlk %d terimin toplamı %f dir.',n-1,t); 7 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 8. Matlab Ders Notları Varolan tanımlı fonksiyonları görmek için komut satırına min(a) a dizisinin en küçük elemanını help elfun yazarız.Bunlardan bazıları ve anlamları bulur. aşağıda verilmiştir. mean(a) a dizisinin ortalamasını bulur. median(a) a dizisinin orta terimini bulur. Đşlem Anlamı std(a) a dizisinin standart sapmasını veya bulur. fonksiyon var(a) a dizisinin varyansını bulur. + Toplama sembolü sort(a) a dizisini artan olarak sıralar - Çıkarma sembolü sortrows(a) a matrisinin satırlarını artan olarak * Çarpma sembolü sıralar / Bölme sembolü sum(a) a dizisinin elemanlarını toplar ^ Üs alma sembolü prod(a) a dizisinin elemanlarını çarpar sqrt(x) x in karekökü sin(x) Radyan cinsinden x in sinüsü d) Metin (karakter dizisi) (string) fonksiyonlardan cos(x) Radyan cinsinden x in cosinüsü bazıları: tan(x) Radyan cinsinden x in tanjantı cot(x) Radyan cinsinden x in cotanjantı acos(x) arccosx Đşlem veya Anlamı asin(x) arcsinx fonksiyon atan(x) arctanx char(a) sayısal a dizisnini, karakter acot(x) arccotx dizisine dönüştürür x exp(x) e double(a) karakterlerden oluşan a dizisini, log(x) ln(x) sayı dizisine dönüştürür log10(x) Logx eval(a) a metnini Matlab ifadesi olarak abs(x) x (x in mutlak değeri) tanımlar sqrt(x) findstr(a,b) A ve b metinlerinden kısa olanını x uzun olanı içinde arayarak fix(x) x in yukarıya yuvarlanmışı metninin başlangıç değerini bulur ceil(x) x in aşağıya yuvarlanmışı strfind (a,b) a metni içinde b metninin floor(x) x in tamdeğeri, başlangıç değerini bulur sign(x) x in işareti, sgn(x) upper(a) a stringinin (metninin) harflerininin round(x) x e en yakın tamsayıya yuvarlar. tümünü büyük harf yapar. mod(x,y) x in y modundaki değeri lower(a) a stringinin (metninin) harflerininin rem(x,y) x in y ye bölümünden kalan tümünü küçük harf yapar. num2str Sayılardan oluşan değeri stringe b) Özel (special) fonksiyonlar; specfun (metne) dönüştürür. Bunlardan bazıları ve anlamları aşağıda verilmiştir. st2num Rakamlardan oluşan stringi sayıya dönüştürür. Đşlem veya Anlamı fonksiyon Örnek: cross(a,b) a ile b vektörünün vektörel çarpımı 1. a='Đzmir';findstr(a,'mi') komutu sonucu ekranda 3 dot(a,b) a ile b vektörünün skaler çarpımı sayısı görülür. factor(n) n sayısının çarpanlarını bulur. Đsprime(n) n sayısının asal olup olmadığını 2. Benzer biçimde a='Đzmir';strfind(a,'mi') komutu denetler, asal ise 1 değilse 0 sonucu ekranda 3 sayısı görülür. değerini döndürür. primes(n) n sayısına kadar olan asal sayıları 3. findstr('izmir fen lisesi','fen') komutu sonucu listeler ekranda 7 sayısı görülür. gcd(a,b) a ile b sayılarının OBEB ini bulur lcm(a,b) a ile b sayılarının OKEK ini bulur Not: findstr('izmir fen lisesi','fen') ile rats(a) a sayısını rasyonel sayıya çevirir. findstr('fen','izmir fen lisesi') komutu arasında hiçbir perms(a) a stringinin permütasyonlarını fark yoktur. bulur. 4. upper('izmir') komutu sonucu ekranda ĐZMĐR factorial(n) n faktöryel (n!) kelimesi; lower('NABer?') komutu sonucu da ekranda; nchoosek(n,r) n nin r li kombinasyonlarının sayısı naber? kelimesi görülür. c) Veri (data) fonksiyonları; datafun Đşlem veya Anlamı fonksiyon max(a) a dizisinin en büyük elemanını bulur. 8 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 9. Matlab Ders Notları Matlab'da Sembolik Matematik ve Uygulamaları: 3 120 120 2005 .2006 Matlab'da bir denklemin çözümünü bulmak için örneğin Örneğin, 20 , 25 ve 4032085075 kesirlerinin en sade x²-2x-15=0 denkleminin çözümünü bir m dosyasına biçimini bulalım. gerekli kodları yazarak yapabiliriz.Bu programın m dosyası aşağıdaki gibi olabilir. sym(120/20) yazıp enter tuşuna bastığımızda ekranda clc; kesrin en sade sonucu olan 5 sayısını, a=input('a = ');b=input('b = ');c=input('c = '); delta=b*b-4*a*c; sym(120/25) yazıp enter tuşuna bastığımızda ekranda if delta>0 kesrin en sade sonucu olan 24/5 sayısını, x1=(-b-delta^0.5)/(2*a);x2=(-b+delta^0.5)/(2*a); fprintf('Đki reel kök; x1 = %f x2 = %f ',x1,x2); sym((2005^3*2006)/4032085075) yazıp enter tuşuna elseif delta==0 bastığımızda ekranda kesrin en sade sonucu olan 4010 fprintf('Tek kök var; x1 = x2= %f ',-b/(2*a)); sayısını görürüz. else fprintf('Kökler sanal '); Değişkenlerin sembolik nesne olarak tanımlanabildiği end; gibi, fonksiyonlar da tanımlanabilir. Örneğin; Program çalıştırıldığında a b c katsayılarına sırasıyla, 3 2 1, -2 ve -15 değerlerini girerek denklemin köklerini -3 ve y=x - 3x + sin x fonksiyonunu sembolik nesne olarak 5 olarak buluruz. tanımlamak istersek; Đkinci derece bir denklemin çözümünü veren bunu iki yoldan da yapabiliriz: formüllerini bildiğimizden bunun programını (çok kolay a) syms x; olmasa da) yazabildik.Ya denklem üçüncü dereceden y=x^3-3*x^2+sin(x) komutlarıyla veya; olursa, 4 veya 5. dereceden olursa, ya da x.sin x=1/5 b) y=sym('x^3-3*x^2+sin(x)') komutuyla yapabiliriz. x gibi veya x = 64 gibi olursa ... bu denklemleri nasıl pretty komutu: çözümleyebiliriz? Sembolik nesnenin görüntüsünü ekranda net olarak Verilen bir cebirsel ifadeyi, mesela anlaşılır biçimde görünmesini sağlayan komuttur. 3 2 Örneğin yukarıdaki y fonksiyonunu ekranda anlaşılır (x - 8)(x + 7x) biçimde görüntülemek için pretty(y) yazmak yeterlidir.Bu 2 2 gibi bir ifadeyi sadeleştirebilir 3 2 (2x + 4x +8)(x - 2x) durumda ekranda; y=x - 3x + sin(x) ifadesi görülür. miyiz? Bir fonksiyonun limitini, türevini ve integralini Matlab'da Harfli Đfadeler ve Sadeleştirilmesi: buldurabilir miyiz? Đşte bu gibi işlemleri yaptırabilmek için Matlab'daki simplify Komutu Sembolik Mantık (Sembolik Nesne) kavramını Sembolik nesneleri sadeleştirmeye yarar. kullanmalıyız.Bu konu ile ilgili açıklama ve yardım almak Örneğin; için komut satırına help symbolic yazmak yeterlidir. a) 8 - 5sin²x-5cos²x trigonometrik ifadesini ve 3 2 Sembolik Matematikte Bazı Komutlar ve Anlamları: (x - 8)(x + 7x) sym ve syms komutları: b) 2 2 biçimindeki rasyonel ifadesini Bir değişkeni sembolik nesne yapmaya yarar. (2x + 4x +8)(x - 2x) 2x-1 x+2 Örneğin x değişkenini sembolik nesne yapmak için; c) x+3 + x-1 ifadesinin sonucunu en sade biçimde x=sym('x'); komutu kullanılabilir.Aynı işlemi syms x; yazmak isteyelim. komutu ile de yapabiliriz. Çözüm: x, y ve z değişkenlerini sembolik nesne yapmak için; a) Bunun için önce ifadeyi sembolik nesneye dönüştürüp syms x y z komutu kullanılabilir. sonra basitleştirme komutunu kullanmalıyız.Bunu iki şekilde yapabiliriz: Bir ondalık sayının kesir olarak karşılığını bulabilmek I) y=sym('8-5*sin(x)^2-5*cos(x)^2'); için sym komutundan faydalanabiliriz. simplify(y) Örneğin 3.98 ondalık sayısının rasyonel sayı karşılığını II) simplify(sym('8-5*sin(x)^2-5*cos(x)^2')) bulmak için sym(3.98,'r') veya sym(3.98) komutu kullanabiliriz. b) Benzer şekilde y=sym('(x^3-8)*(x^2+7*x)/((2*x^2+4*x+8)*(x^2-2*x))'); Benzer şekilde 22/7 kesrini ondalık sayıya çevirmek simplify(y) için de sym(22/7,'d') komutu kullanılır. komutları uygulanırsa ekranda ifadenin en sade hali Bir sayısal kesri sadeleştirmek için de sym komutundan olan; faydalanabiliriz. 1/2*x+7/2 ifadesi bulunur.Şayet simplify(y) yerine; 9 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 10. Matlab Ders Notları pretty(simplify(y)) komutu uygulanırsa ekranda daha anlaşılır olan; 1/2 x+7/2 ifadesi görülür. c) y=sym('(2*x-1)/(x+3)+(x+2)/(x-1)'); pretty(simplify(y)) komutları uygulanırsa ekranda 3 2 3 işlemin sonucu olan; (x - 2) x -2 2 --------- - 2 ------ + 7 3x +2x+7 2 x+3 --------------- (x + 3) (x + 3) (x - 1) ------------------------ ifadesi görülür. 3 x -2 expand ve factor komutları: 3 ------ + 5 Sembolik nesnelerden oluşan polinomların kuvvetini x+3 açmak için expand komutunu, bir polinomun kuvveti olarak açılmış ifadeyi eski haline getirmek için factor Ancak bu ifadeyi gerekli işlemlerin yapılarak daha da komutunu kullanırız. basit biçime getirmek için en sondaki ifade olan pretty(subs(y,x,z)) yerine pretty(simplify(subs(y,x,z))) Örnek: yazmalıyız.Bu durumda ekranda; 3 3 a) (x²-x+1) - (x²+x-1) açılımının sonucunu; 6 3 4 2 b) x - 10 x + 79 - 2 x + 46 x + 7 x 8 7 9 3 2 6 4 ------------------------------------ -1 + 3 x - 3 x + 6 x + x + 10 x - 6 x - 10 x - 12 x + 3 5 (3 x + 9 + 5 x) (x + 3) 12 x ifadesi bir polinomun kuvveti olduğuna göre hangi ifadesi görülür. polinomun kaçıncı kuvveti olduğunu bulduralım. DENKLEMLER ve Çözümleri: Çözüm: a) y=sym('(x^2-x+1)^3-(x^2+x-1)^3');pretty(expand(y)) solve komut: işlemi sonucu ekranda; Matlab'ın en güçlü ve kullanışlı komutlarından 5 4 3 2 biridir.Kısaca verilen her türden denklem (sayısal veya -6 x + 6 x - 2 x + 6 x - 6 x + 2 görülür. matematik nesnesi olan) veya denklem sistemlerini çözümlemeye yarar. b) z=sym('-1+3*x-3*x^8+6*x^7+x^9+10*x^3-6*x^2- 10*x^6-12*x^4+12*x^5');pretty(factor(z)) Bir Bilinmeyenli Denklem Çözümleri: işlemi sonucu ekranda; Örnek; 3 2 3 a) 2x-6=0 (x - 1) (x + 1) görülür. b) 2x²+5x=3 c) ax²+bx+c=0 subs komutu: 3 2 Bir sembolik ifadenin değişkenine verilen bir değer için d) x + 3x - x - 3 = 0 sonucunu bulmaya yarar. 5 e) x = 16x Örnek: 2 2 f) x - 6x - 3 = 3x - 5 x - 2x + 7 x y = f(x) = 3x+5 fonksiyonu veriliyor. g) x = 64 denklemlerinin çözüm kümelerini bulalım. a) f(2005) değerini, Çözüm: 3 a) solve(2*x-6) veya solve('2*x-6') veya x -2 solve(sym('2*x-6')) işleminin sonucu ekranda; 3 görülür. b) z = g(x) = x + 3 olmak üzere f(g(x)) bileşke b) solve(2*x^2+5*x-3) veya solve('2*x^2+5*x-3') fonksiyonunu bulduralım. işleminin sonucu ekranda; -3 ve 1/2 görülür. Çözüm: c) Burada harfli ifadeyi matematiksel nesne olarak a) y=sym('(x^2-2*x+7)/(3*x+5)');subs(y,x,2005) yazmak zorundayız.Bunun için komutu işlemi sonucu ekranda 667.1133 değeri görülür. solve('a*x^2+b*x+c') veya solve(sym('a*x^2+b*x+c')) biçiminde kullanmalıyız.Bu durumda ekranda; çözüm b) y=sym('(x^2-2*x+7)/(3*x+5)');subs(y,x,2005); kümesi; z=sym('(x^3-2)/(x+3)');pretty(subs(y,x,z)) işlemlerinin sonucu ekranda aşağıdaki ifade görülür. [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))] biçiminde görülür. 10 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 11. Matlab Ders Notları Bunu daha düzenli görüntülemek için pretty y değeri de sonuc.y değişkeninde bulunacaktır.Bunlar komutundan faydalanalım.Yani komutu ekrana yazılarak sonuçlar görülebilir.O halde özetle, bu pretty(solve('a*x^2+b*x+c')) olarak uygularsak ekranda; denklem sisteminin çözümü için ekrana şunlar sırasıyla yazılmalıdır: syms x y; sonuc=solve(2*x-3*y-27,5*x+2*y-1); sonuc.x sonuc.y [ 2 1/2] b) syms x y z; [ -b + (b - 4 a c) ] sonuc=solve(17*x-3*y+4*z-7,15*x-7*y -1,x+y-9*z-13); [1/2 -------------------- ] sonuc.x [ a ] sonuc.y [ ] sonuc.z [ 2 1/2] [ -b - (b - 4 a c) ] c) syms x y; [1/2 -------------------- ] sonuc=solve(x^2-2*x*y+3*y^2-17,x*y-3*x+5); [ a ] sonuc.x ifadesi görülür ki bu da, ax²+bx+c=0 ikinci derece sonuc.y denklemin kökler formülünden başka bir şey değildir. LĐMĐT ve UYGULAMALARI: d) solve(x^3+3*x^2-x-3) komutu uygulanırsa ekranda; 1, -3, -1 değerleri görülür. limit Komutu: Sembolik nesnelerden oluşan ifadenin limitini bulmaya e) solve(x^5-16*x) komutu uygulanırsa ekranda; yarar. [ 0] lim [ 2] f(x) matematiksel ifadenin Matlab karşılığı; x→a [ -2] limit(f,x,a) biçimindedir. [ 2*i] Şayet limit soldan veya sağdan olursa, Matematiksel ve [ -2*i] değerleri görülür.Görülüyor ki denklemin 3 tane Matlab karşılıkları aşağıdaki gibi bulunur. reel iki tane de sanal kökleri var. lim - f(x) için limit(f,x,a,'left') f) solve(x^2-6*x-3-(3*x-5)^(1/2)) komutu uygulanırsa → x→a ekranda; 7 sayısı görülür. lim g) solve(x^x-64) komutu uygulanırsa ekranda; + f(x) için limit(f,x,a,'right') → x→a ans = Not: 1) Şayet a değeri belirtilmezse 0 için limit bulunur. log(64)/lambertw(log(64)) 2) ∞ için limit bulunacaksa a yerine inf ifadesi yazılır. sonucu görülür ki, bu sonuç bilmediğimiz bir fonksiyonun 3) -∞ için limit bulunacaksa a yerine inf ifadesi ve 'left' ürettiği bir değerdir.Bu değeri sayısal değere çevirmek ifadesi yazılır. için double komutundan yararlanırız.Yani komutu; double(solve(x^x-64)) biçiminde kullanırsak, ekranda Örnek: 3.3991 değerini görürüz. 2 lim 3x - 3 Çok Bilinmeyenli Denklem Çözümleri: a) x→1 x - 1 Örnek: Aşağıdaki denklem sistemlerinin çözüm kümelerini bulalım: lim 2-2cosx a) 2x-3y=27 b) x→0 x.sinx 5x+2y=1 b) 17x-3y+4z=7 lim 7n²-13n+777 15x-7y =1 c) n→∞ 19-3n-n² x+y-9z=13 c) x²-2xy+3y²=17 lim xy-3x+5=0 d) n²+10n-2005 - n²-8n+2006 n→∞ Çözüm: a) Önce x ve y değişkenlerini sembolik değişken olarak 2n+1 n+3 lim 7 - 49.7 tanımlamalıyız.Yani syms x y komutu e) uygulanmalıdır.Sonra da çözüm sonucu bir değikene n→∞ n-1 49 + 77 örneğin sonuc değişkenine sonuc=solve(2*x-3*y-27,5*x+2*y-1) komutuyla lim 5n+8 10n+9 f) ( ) atanmalıdır.Bu durumda x değeri sonuc.x değişkeninde n→∞ 5n+7 11 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 12. Matlab Ders Notları lim x- x²+x+1 syms k n;pretty(simple(symsum(k,1,n))) komutunu g) uygularsak ekranda 1/2 n (n + 1) sonucu görülür. x→ -∞ 2x- 4x²+x lim 9x b) syms k n;pretty(simple(symsum(k^2,1,n))) h) - x→ 0 x c) syms k n;symsum(k*(k+1)*(k+2),4,22) d) syms k;symsum((2/3)^k,3,99) komutu sonucu ekranda Çözüm: 152704450587262615335745290072695420044661986 a)syms x; 328/17179250691067044367882037658854042423403 5840667 limit((3*x^2-3)/(x-1),x,1) işleminin sonucunda limit 6 sembolik ifadesi görülür.Bu değerin sayısal değerini olarak bulunur. bulmak için double(ans) kullanılırsa 0.8889 gerçek değeri bulunur.Aynı şeyi; b) syms x; syms k;double(symsum((2/3)^k,3,99)) limit((2-2*cos(x))/(x*sin(x)),x,0) veya limit((2-2*cos(x))/(x*sin(x))) biçiminde de bulabiliriz. e) syms k;symsum((2/3)^k,3,inf) komutu sonucu 8/9 c) syms n;limit((7*n^2-13*n+777)/(19-3*n-n^2),n,inf) sonucu bulunur. d) syms n; limit((n^2+10*n-2005)^(1/2)-(n^2-8*n+2006)^(1/2),n,inf) f)syms n;(6*double(symsum(1/n^2,1,inf)))^(1/2) e) syms n; TÜREV ve Đlgili Uygulamalar: limit((7^(2*n+1)-49*7^(n+3))/(49^(n-1)+77),n,inf) diff komutu: Tanımlı sembolik ifadenin türevini bulmaya yarar. f) syms n; Örnek: limit(((5*n+8)/(5*n+7))^(10*n+9),n,inf) 3 2 a) y = x + 6x - 13x +19 fonksiyonunun türevini bulalım. g) syms x; limit((x-(x^2+x+1)^(1/2))/(2*x-(4*x^2+x)^(1/2)),x,inf,'left') x²-3x+7 b) y = x²+5x-1 fonksiyonunun türevini bulalım. h) syms x;limit((9*x)/(abs(x)),x,0,'left') c) y=sin²x.cosx fonksiyonunun türevini bulalım. d) z=x²y+3xy-y² fonksiyonunun DĐZĐLER ve SERĐLER ile Đlgili Uygulamalar: i) x e göre türevini symsum komutu: ii) y ye göre türevini Toplam sembolü veya seri toplamını bulmaya yarayan iii) y'=dy/dx türevini bulalım. komuttur. Çözüm: b a) syms x; y=sym('x^3+6*x^2-13*x+19');diff(y) ∑f(k) toplamını bulmaya yarayan Matlab komutu; veya kısaca; diff('x^3+6*x^2-13*x+19') k=a symsum(f(k),a,b) biçiminde kullanılır. b) diff('(x^2-3*x+7)/(x^2+5*x-1)') komutu uygulandığında ekranda; Örnek: (2*x-3)/(x^2+5*x-1)-(x^2-3*x+7)/(x^2+5*x-1)^2*(2*x+5) a) 1+2+3+...+n toplamının formülünü bulduran komutu ifadesi görülür.Bunu daha anlaşılır biçimde yazalım. görüntülemek için; b) 1²+2²+3²+...+n² toplamının formülünü bulduran pretty(diff('(x^2-3*x+7)/(x^2+5*x-1)')) komutu yazalım. komutunu uygulamalıyız.Bu durumda ekranda; c) 4.5.6+5.6.7+6.7.8+...+22.23.24 toplamının sonucunu 2 bulduran komutu yazalım. 2x-3 (x - 3 x + 7) (2 x + 5) 3 4 5 99 d) (2/3) +(2/3) +(2/3) + ...+(2/3) toplamını bulalım. ------------ - ------------------------ 2 2 2 3 4 5 e) (2/3) +(2/3) +(2/3) + ... serisinin toplamını bulalım. x +5x-1 (x + 5 x - 1) 1 1 1 π² f) 1² + 2² + 3² + ... serisinin sonucu 6 olduğu bilindiğine Bu sonucu daha sade halde görüntülemek için ise; pretty(simplify(diff('(x^2-3*x+7)/(x^2+5*x-1)'))) göre π sayısını bulunuz. komutunu uygulamalıyız.Bu durumda ekranda; 2 Çözüm: x -2x-4 a) syms k n;symsum(k,1,n) 8 --------------- komutu sonucunda; 1/2*(n+1)^2-1/2*n-1/2 ifadesi 2 2 bulunur. (x + 5 x - 1) Şayet sonucu daha basit bulmak istersek; ifadesi görülür. syms k n;simplify(symsum(k,1,n)) bunun sonucunda 1/2*n^2+1/2*n ifadesi bulunur. 12 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 13. Matlab Ders Notları c) pretty(diff('sin(x)^2*x*cos(x)')) komutu sonucu disp('3z1-5z2 = ');disp(3*z1-5*z2); ekranda; disp('|z1|=');disp(abs(z1)); disp('|z2|=');disp(abs(z2)); disp('z1 in eşleniği');disp(conj(z1)); 2 2 3 disp('z1 in reel kısmı');disp(real(z1)); 2 sin(x) x cos(x) + sin(x) cos(x) - sin(x) x disp('z1 in sanal kısmı');disp(imag(z1)); görülür. disp('z2 nin eşleniği');disp(conj(z2)); disp('z2 nin reel kısmı');disp(real(z2)); d) syms x y;z='x^2*y-3*x*y-y^2'; disp('z2 in sanal kısmı');disp(imag(z2)); i) tx=diff(z,x) ii) ty=diff(z,y) Matlab'da Grafik Đşllemleri: iii)pretty(-tx/ty) 1 ) Đki Boyutlu Grafikler (Düzlemde Grafik): ĐNTEGRAL ve Đlgili Uygulamaları: int Komutu: Bu konuyla ilgili komut ve açıklamaları görmek için Tanımlı sembolik ifadenin belirsiz integralini bulmaya komut satırına help graph2d yazdığımızda aşağıdaki yarar. bilgiler gelir. Two dimensional graphs. Örnek: Elementary X-Y graphs. plot - Linear plot. a) ⌠(3x - 2x + 5) dx belirsiz integralini bulalım. 2 ⌡ loglog - Log-log scale plot. semilogx - Semi-log scale plot. semilogy - Semi-log scale plot. b) ⌠ x²+1 dx belirsiz integralini bulalım. 2x+ 5 ⌡ polar - Polar coordinate plot. plotyy - Graphs with y tick labels on the left and c) ⌠ x²sinx dx belirsiz integralini bulalım. ⌡ ...... ...... Çözüm: Biz bu komutlardan bazılarını göreceğiz. a) int('3*x^2-2*x+5') b) pretty(int('(2*x+5)/(x^2+1)')) a) plot komutu: c) pretty(int('x^2*sin(x)')) Matlab'da plot komutuyla grafik çizdirmek için, tanımlanan fonksiyonun x değişkeninin başlangıç ve bitiş Matlab'da Karmaşık Sayılarla Đşlemler: değerleri arasındaki her değer için ayrı ayrı hesaplatılan Matlab'da bir değişkeni karmaşık sayı olarak atamak grafiğe ait (x,y) noktalarının koordinat düzleminde nokta için; z=a+bi gibi bir eşitlik gerekir.Örneğin, z=3-4i eşitliği ile işaretletmeliyiz. ile z değişkenine 3-4i karmaşık sayısı atanmış olur. Kullanımı: Bir karmaşık sayı ile ilgili aşağıdaki işlemler yaptırılabilir. değişken_adı=ilk_değeri:artış_miktarı:son_değeri; Fonksiyon Açıklama fonksiyon_değişkeni=fonksiyon_tanımı; conj(z) z nin eşleniğini verir plot(x,y); real(z) z nin reel kısmını verir imag(z) z nin sanal kısmını verir Not 1) plot(x,y) komutu yerine iki noktayı doğru ile abs(z) z nin mutlak değerini verir birleştiren komut olan line(x,y) komutunu da angle(z) z nin x ekseniyle yaptığı açıyı radyan olarak kullanabiliriz. verir isreal(z) z nin reel sayı olup olmadığını sorgular Not 2) plot komutuyla çizdirilen grafiğe ait çizgi özelliklerini de belirtebiliriz.Bunu Örnek: z1=3+4i;z2=12-5i karmaşık sayıları için; plot(x,y,'çizgi_özellikleri',...); veya a) Ekrana sayıları yazdıran, plot(x,y,'özellik1',değer1,'özellik2',değer2,...); b) Toplamlarını biçiminde belirtiriz. c) 3z1-5z2 sayısını d) Mutlak değerlerini, Buradaki çizgi özellikleri ve değerleri şunlardır: e) Eşleniklerini, Color: line nesnesinin rengini düzenlemeye yarar. f) Reel ve sanal kısımlarını buldurup ekrana yazdıran bir LineStyle: Çizgi stilini belirleyen özelliktir.Alabileceği program yazınız. değerler; -, --, -., :, ve none dir.Değeri none olursa çizgi görünmez. LineWidth: Çizginin kalınlığını düzenleyen özelliktir. Çözüm: Marker: Çizginin işaretini belirleyen özelliktir.Marker ile clc;z1=3+4i;z2=12-5i; ilgili değerler ve anlamı aşağıdaki tabloda gösterilmiştir. disp('z1=');disp(z1); disp('z2=');disp(z2); disp('z1+z2 = ');disp(z1+z2); 13 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 14. Matlab Ders Notları Değer Anlamı b) plot(x,f,'r:+',x,g,'black--d','linewidth',2); + + işareti Grafiği aşağıda verilmiştir: o daire işareti * yıldız işareti . nokta işareti x çarpı işareti s kare (square) işareti d elmas (diamond) işareti ^ yukarı gösteren üçgen işareti v aşağı gösteren üçgen işareti > sağa doğru gösteren üçgen işareti < sola doğru gösteren üçgen işareti p 5 noktalı (pentagon) yıldız işareti h 6 noktalı (hexagram) yıldız işareti none işaretsiz Örnek: Not 3) Aynı x değerlerine karşılık birden fazla fonksiyon y=sin(x/3)+cos(x/2) fonksiyonunun grafiğini;x değerleri tanımlanarak (y1,y2,y3, ... gibi) aynı grafik ekseni 0.1 artışla; üzerinde çizdirebiliriz.Bunu da; a) [-10, 10] aralığında; plot(x,y1,x,y2,x,y3,...); biçiminde belirtiriz. b) Fonksiyonun peyodu T ise, [-T,T] aralığında grafiğini çizdirelim; Örnek: Çözüm: x=-10, x=10 aralığında, 0.1 artışla ,y=2x-6 doğrusunun a) x=-10:0.1:10;y=sin(x./3)+cos(x./2); plot(x,y); grafiğini çizdiren bir program yazınız. Grafiği aşağıdaki gibidir. Çözüm: x=-10:0.1:10; y=2*x-6;plot(x,y); Örnek: x=-10, x=10 aralığında, 0.01 artışla, 3 2 y=x - 5x + 7x + 13 fonksiyonunun grafiğini çizdiren bir program yazınız. Çözüm: x=-10:0.01:10;y=x.^3-5*x.^2+7*x+13;plot(x,y); Grafik aşağıdaki gibidir: b) Fonksiyonun periyodu; T=OKEK(6π;4π)=12π dir.Buna göre komut satırına aşağıdaki ifadeleri yazmalıyız: x=-12*pi:0.1:12*pi;y=sin(x./3)+cos(x./2);plot(x,y); Grafiği aşağıdaki gibidir. Örnek: x değerleri (tanım kümesi) [0, 2π] aralığı olan f(x)=sinx ile g(x)=cosx fonksiyonlarının grafiklerini aynı koordinat düzleminde, tek komutla çizdirelim.Öyle ki; a) f(x) in rengi kırmızı, g(x)in rengi mavi olsun b) loglog, semilogx, semilogy komutları: b) f(x) in rengi kırmızı, çizgi stili :, noktaların biçimi +, 1) Bir fonksiyonun grafiğini çizdirdiğimizde x ve y nin g(x) in rengi siyah, çizgi stili --, noktaların biçimi elmas aralığı çok geniş olduğunda hem x değerlerini, hem de y ve çizgi kalınlıkları 2 şer birim olsun. değerlerini logaritmik artışla tanımlayabilirizBu durumda grafiği loglog(x,y) komutunu kullanırız. Çözüm: x=0:0.1:2*pi;f=sin(x);g=cos(x); 2) x değerleri, y değerlerine göre çok geniş bir aralıkta a) plot(x,f,'r',x,g,'b'); ise sadece x değer aralığını logaritmik artışla 14 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 15. Matlab Ders Notları tanımlayarak grafiği çizdirebilirz.Bu durumda semilogx(x,y) komutunu kullanırız. 3) y değerleri, x değerlerine göre çok geniş bir aralıkta ise sadece y değer aralığını logaritmik artışla tanımlayarak grafiği çizdirebilirz.Bu durumda semilogy(x,y) komutunu kullanırız. Örnek: x değerleri -1000 ile 1000 arasında olmak üzere 3 y = x + 3x -5 fonksiyonun grafiğini a) Normal b) x ve y değerleri logaritmik artışla c) Sadece x değerleri logaritmik artışla d) Sadece y değerleri logaritmik artışla çizdirelim. hold Fonksiyonu ve Kullanımı: Bazen aynı eksende iki grafik üstüste çizdirerek iki Çözüm: x=-1000:0.1:1000; graffiğin birbirine göre durumlarını incelemek a) y=x.^3+3*x-5;plot(x,y); isteyebiliriz.Đşte bu durumda hold fonksiyonu kullanılabilir. Örnek: [0,10π] aralığında; f(x)=sin(x) fonksiyonu ile g(x)=xsin(x/2)cos(x/5) fonksiyonunun grafiklerini aynı koordinat düzleminde çizdirelim. Çözüm: x=0:0.1:10*pi;y1=sin(x);y2=x.*sin(x./2).*cos(x./5); plot(x,y1);hold;plot(x,y2); Grafiği aşağıda verilmiştir. b) y=x.^3+3*x-5;loglog(x,y); c) plotyy Fonksiyonu: Bazen sayısal aralıkları farklı iki fonksiyonu aynı eksen üzerinde görüntülediğimizde, birinin aldığı değerler, c) y=x.^3+3*x-5;semilogx(x,y); diğerine nazaran çok küçük olduğundan tam olarak ayırdedilemez.Bu durumda iki grafiği plotyy komutuyla çizdirdiğimizde grafiği daha ayrıntılı ve net görebilirz. Kullanımı: plotyy(ortak_aralık,fonk1,ortak_aralık,fonk2); Örnek: [0, 6π] aralığında, f(x)=2x²-10x+5 ile g(x)=cos(x/3) fonksiyonlarını aynı grafik ekseninde; a) Normal olarak b) g(x) fonksiyonunu daha belirgin olarak çizdirelim. Çözüm: x=0:0.1:6*pi;f=2.*x.^2-10*x+5;g=cos(x./3); a) plot(x,f);hold;plot(x,g); c) y=x.^3+3*x-5;semilogy(x,y); Grafik aşağıda verilmiştir. 15 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 16. Matlab Ders Notları b) plotyy(x,f,x,g); 2 ) Üç Boyutlu Grafikler (Uzayda Grafik): Grafik aşağıda verilmiştir. Bu konuyla ilgili komut ve açıklamaları görmek için komut satırına help graph3d yazdığımızda aşağıdaki bilgiler gelir. Three dimensional graphs. Elementary 3-D plots. plot3 - Plot lines and points in 3-D space. mesh - 3-D mesh surface. surf - 3-D colored surface. fill3 - Filled 3-D polygons. .... .... d) polar Fonksiyonu: Biz bu komutlardan bazılarını göreceğiz. Kutupsal koordinatlarla verilen bir fonksiyonun grafiğini çizmeye yarar. a) plot3 Fonksiyonu: Uzayda (x,yz) koordinatları ile belirli vektörün (vektöre Kullanımı: karşılık gelen uç noktasının) grafiğini çizer. polar(t,r); plot fonksiyonuna benzer biçimde kullanılır. Not: Komuttaki t açısı grafiğe ait noktaya karşılık gelen vektörün Ox ekseniyle yaptığı açıyı, r de bu vektörün Kullanımı: uzunluğunu belirtir. plot3(x,y,z); plot3(x,y,z,'Çizgi özellikleri',...); Örnek: t açısının değer aralığı [0,10π] olmak üzere; plot3(x,y,z,'özellik1',değer1,'özellik2',değer2,...); a) r1=sin(t) b) r2=tsin(t)cos(t) fonksiyonlarının biçimindedir. grafiklerini çizdirelim. Not 1) plot3 komutunu uyguladığımızda, ilgili grafik Çözüm: Figure (şekil) penceresinde oluşur.Grafiği daha iyi t=0:0.1:10*pi; inceleyebilmek için örneğin grafik derinliğini a) r1=sin(t);polar(t,r1); algılayabilmek için grafiği bir kutu (prizma) içine Grafik aşağıda verilmiştir. alabiliriz.Bunun için komut satırına box on; komutunu girmeliyiz, kutuyu kaldırmak istediğimizde de box off komutunu kullanırız. Not 2) Ayrıca grafikle ilgili ayarlamalar için; şekil penceresinin üstündeki araçlardan faydalanabiliriz.Bu araçlar aşağıda gösterilmiştir: Grafiği Büyütme Aracı: Bu aracı tıkladıktan sonra, grafik penceresine her tıklanışta grafik bize doğru yaklaşarak büyür. Grafiği Küçültme Aracı: Bu aracı tıkladıktan sonra, grafik penceresine her tıklanışta grafik bizden uzaklaşarak küçülür. b) r2=t.*sin(t).*cos(t);polar(t,r2); Grafik aşağıda verilmiştir. Grafiği Döndürme Aracı: Bu aracı tıkladıktan sonra, grafik penceresinin köşelerine yakın bir yerden tutularak 16 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 17. Matlab Ders Notları (farenin sol tuşu basılarak) istediğimiz kadar istenen bölgenin x koordinatları bir diziye (örneğin x döndürebiliriz. dizisine), y koordinatları bir diziye (örneğin y dizisine) atanır.Ardından [X,Y]=meshgrid(x,y); komutunu Not 3) Ayrıca üç boyutlu koordinat sistemine, incelemeyi uygulayarak (x ile X in ve y ile Y nin farklı olduğuna daha rahat yapabilmek için ızgara çizgileri de dikkat edin!) ilgili bölgenin koordinatları X ve Y dizilerine koyabiliriz.Bunun için komut satırına gird on; komutunu atanmış olur.Daha sonra X ve Y matrislerine bağlı yazarız.Izgarayı kaldırmak için de gird off; komutu Z=f(X,Y); gibi bir matris elde edebiliriz.Đşte bu Z uygulanır. fonksiyonu, üç boyutlu uzayda bir yüzey belirler, örneğin Z fonksiyonu X ve Y ye bağlı birinci dereceden bir Örnek: fonksiyonsa bir düzlem, daha yüksek dereceden veya a) (-3,5,8) noktasının grafiğini çizdiren (noktayı trigonometrik, üstel ... gibi fonksiyonlardan oluşan bir işaretleyen), fonksiyon ise bir yüzey belirler.Bu fonksiyonun grafiğini b) x değerleri 1 den 10 kadar 1 er artan bir dizide, çizdirebiliriz.: Bunun için; y değerleri 5 den 50 ye kadar 5 er artan birer dizi olmak surf(Z) ile ilgili bölgenin üç boyutlu yüzey grafiğini, üzere; z değerleri de x dizisinin elemanlarının 2 katından surface(Z) ile bölgenin iki boyutlu grafiğini , y dizisinin değerlerinin 3 katının çıkarılmasıyla mesh(Z) ile fonksiyonun tanımladığı yüzeyin ağ grafiğini oluşturalım.Bu durumda belirlenen (x,y,z) noktalarından contour(Z) ile de fonksiyonun tanımladığı yüzeyin oluşan grafiği çizdirelim. seviye grafiğini çizdirebilirz. c) b) şıkkında tanımlanan grafiğin çizgi rengini sarı, çizgi stilini -., çizgi noktalarının (marker) işaretini *, marker Örnek: xOy düzleminde; kalınlığını 2 birim yapalım. yatay olarak, [0 .. 10] bölgesini 0.1 er artımlı x dizisine; Çözüm: düşey olarak, [0 .. 8] bölgesini 0.2 er artımlı y dizisine a) plot3(-3,5,8); atayalım.Daha sonra, bu dizileri [X,Y] koordinat b) x=1:10;y=5:5:50;z=2*x-3*y;plot3(x,y,z); matrisine atayalım. c) x=1:10;y=5:5:50;z=2*x-3*y;plot3(x,y,z,'y- a) Z=X+Y matrisine karşılık gelen fonksiyonun .*','linewidth',2); i) iki boyutlu düzlem grafiğini, ii) üç boyutlu düzlem grafiğini, Örnek: iii) yüzey ağ grafiğini, Açı ölçüleri [0, 10π] aralığında 0.1 er artışla elde edilen iv) yüzey seviye grafiğini çizdirelim. değerleri x dizisine, bu değerlerin sinüslerini y dizisine , b) P=X.^2+Y.^2 matrisine karşılık gelen fonksiyonun kosinüslerini de z dizisine atayalım.Bu durumda elde i) iki boyutlu düzlem grafiğini, edilen (x,y,z) üçlülerinin grafiğini çizdirelim.Grafik ii) üç boyutlu düzlem grafiğini, penceresini hem kutu içine alalım hem de grafik ızgara iii) yüzey ağ grafiğini, çizgilerini koyalım. iv) yüzey seviye grafiğini çizdirelim. c) Q=sin(X./2)+cos(Y./3) matrisine karşılık gelen Çözüm: fonksiyonun x=[0:0.1:10*pi];y=sin(x);z=cos(x); i) iki boyutlu düzlem grafiğini, plot3(x,y,z);box on;grid on; ii) üç boyutlu düzlem grafiğini, Buna göre grafik aşağıdaki gibi olacaktır. iii) yüzey ağ grafiğini, iv) yüzey seviye grafiğini çizdirelim. Çözüm: x=[0:0.1:10];y=[0:0.2:8];[X,Y]=meshgrid(x,y); Z=X+Y;P=X.^2+Y.^2;Q=sin(X./2)+cos(Y./3); a) i)surface(Z); ii) surf(Z); iii) mesh(Z); iv) contour(Z); Grafikler aşağıda verilmitir. b) Yüzey Grafikleri: Đki Boyutlu Düzlemin Koordinatlarını Tanımlayan Matris ve meshgrid Fonksiyonu ve Yüzey Grafiği: Üç boyutlu uzayda, örneğin xOy düzleminde belirli bir dikdörtgen biçimindeki alanın, yatay ve düşey çizgilerle (grid line) daha küçük dikdörtgensel bölgelere ayrıldığını varsayalım.Đşte bu çizgilerin kesim noktalarının koordinatları, grafik çiziminde gerekli olacaktır.Bu koordinatları tutan matris meshgrid fonksiyonu yardımıyla elde edilir.Bunun için; önce tanımlanmak 17 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 18. Matlab Ders Notları grafiği; surf(z) ile z nin yüzey grafiği, mesh(z) ile ağ grafiği , contour(z) ile yüzey seviye grafiği çizdirilebilir. Örnek: a) 30x30 boyutlarındaki bir kare matrisi z dizisine atayalım, b) z matrisinin iki boyutlu alan grafiğini, c) z matrisinin üç boyutlu yüzey grafiğini, d) z matrisinin üç boyutlu yüzeyinin ağ grafiğini, e) z matrisinin üç boyutlu yüzey seviye grafiğini b) i)surface(P); ii) surf(P); iii) mesh(P); iv) contour(P); çizdirelim. Grafikler aşağıda verilmitir. Çözüm: a) z=peaks(30) b) surface(z) c) surf(z) d) mesh(z) e) contour(z) Grafikler aşağıda verilmiştir: c) i)surface(Q); ii) surf(Q); iii) mesh(Q); iv) contour(Q); Grafikler aşağıda verilmitir. Not 1) Belirlenen yüzeyin rengi Matlab tarafından otomatik olarak belirlenir.Ancak bu renkten başka Matlabın hazır yüzey renk haritalarından birisi ile de boyanabilir.Bu renk haritaları şunlardır: Color maps. hsv - Hue-saturation-value color map. hot - Black-red-yellow-white color map. gray - Linear gray-scale color map. bone - Gray-scale with tinge of blue color map. copper - Linear copper-tone color map. pink - Pastel shades of pink color map. white - All white color map. flag - Alternating red, white, blue, and black color map. lines - Color map with the line colors. colorcube - Enhanced color-cube color map. vga - Windows colormap for 16 colors. jet - Variant of HSV. prism - Prism color map. peaks Fonksiyonu Đle Kare Matris Oluşturma: cool - Shades of cyan and magenta color map. nxn lik bir kare matris oluşturan fonksiyon peaks autumn - Shades of red and yellow color map. dir.Kullanımı peaks(n) biçimindedir.Bu matrisi spring - Shades of magenta and yellow color map. oluştururken x ve y koordinatlarıyla ilgili winter - Shades of blue and green color map. 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(x/5 - x.^3 - summer - Shades of green and yellow color map. y.^5).*exp(-x.^2-y.^2) - 1/3*exp(-(x+1).^2 - y.^2) Aktif penceredeki yüzeyin rengini bone (kemik rengi) ile fonksiyon kullanılır. boyamak için, komut satırına; colormap(bone); komutu Bu matrisi z gibi bir matris değişkenine z=peaks(n); yazılmalıdır. komutuyla atayıp z matrisi ile ilgili grafikler çizdirilebilr.Örneğin; surface(z) ile z nin iki boyutlu alan 18 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 19. Matlab Ders Notları Not 2) Đstersek belirlenen yüzeyi, istediğimiz bir resmin renkleri ile boyayabiliriz (başka bir deyişle yüzeye resmi giydirebiliriz).Bunun için aşağıdaki adımları takip edebiliriz: a) Yüzeyin tutamacını bir değişkene atarız. Örneğin yuzey=surf(peaks(40)); gibi. b) Đstediğimiz bir resim dosyasının renk bilgisini bir diziye atarız. Örneğin, renk=imread('bayrak.jpg'); gib. c) Yuzey tutamacınaın Cdata özelliğine istediğimiz renk bilgisini koyarız. Örneğin; set(yuzey,'cdata',renk); gibi.Ancak bu komuttan sonra, dizil boyutlarının uyuşmadığı gibilerden bazı hata mesajları gelir, bunlara kulak asmayın :) d) Son olarak ta yüzeyin FaceColor özelliğine textturemap yaparız Örneğin set(yuzey,'facecolor','texturemap'); gibi. Örnek: a) 40x40 boyutlarında peaks fonksiyonu ile tutamac adı yuzey olan luşturulan yüzey nesnesini oluşturalım. b) Yüzeyi prism adlı renk haritası ile boyayalım. c) Yüzeye start.jpg adlı resmi giydirelim. Çözüm: a) yuzey=surf(peaks(40)); Grafik aşağıdaki gibidir: Yukarıdaki resmin yüzeye giydirilmiş durumu aşağıda görülüyor. b) yuzey=surf(peaks(40));colormap(prism); Bazı Özel Garfik Fonksiyonları: Matlab'da daha bir çok grafik fonksiyonları vardır.Bunları görmek ve kullanımları hakkında bilgi almak için komut satırında help specgraph yazabiliriz. Specialized graphs. Specialized 2-D graphs. area - Filled area plot. bar - Bar graph. c) yuzey=surf(peaks(40));renk=imread('start.jpg'); barh - Horizontal bar graph. set(yuzey,'cdata',renk); comet - Comet-like trajectory. set(yuzey,'facecolor','texturemap'); compass - Compass plot. errorbar - Error bar plot. Aşağıdaki resim, start.jpg adlı dosyaya aittir. ezplot - Easy to use function plotter. ezpolar - Easy to use polar coordinate plotter. feather - Feather plot. fill - Filled 2-D polygons. fplot - Plot function. 19 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 20. Matlab Ders Notları hist - Histogram. ymin y değerlerinin başlangıç değeri, pareto - Pareto chart. ymax y değerlerinin bitiş değeridir. pie - Pie chart. plotmatrix - Scatter plot matrix. Örnek: rose - Angle histogram plot. 3 scatter - Scatter plot. x - 4x stem - Discrete sequence or "stem" plot. y = x²-2x-3 fonksiyonunun grafiğini ezplot fonksiyonu ile stairs - Stairstep plot. grafiğini; a) Normal olarak b) x değerleri [-5, 10] aralığında Contour and 2-1/2 D graphs. c) x değerlerini [-5, 5] aralığında, y değerlerini [-10, 30] contour - Contour plot. aralığında çizdirelim. contourf - Filled contour plot. contour3 - 3-D Contour plot. Çözüm: clabel - Contour plot elevation labels. a) ezplot('y-(x^3-4*x)/(x^2-2*x-3)'); grafiği aşağıda ezcontour - Easy to use contour plotter. verilmiştir. ezcontourf - Easy to use filled contour plotter. pcolor - Pseudocolor (checkerboard) plot. voronoi - Voronoi diagram. Specialized 3-D graphs. bar3 - 3-D bar graph. bar3h - Horizontal 3-D bar graph. comet3 - 3-D comet-like trajectories. ezgraph3 - General purpose surface plotter. ezmesh - Easy to use 3-D mesh plotter. ezmeshc - Easy to use combination mesh/contour plotter. ezplot3 - Easy to use 3-D parametric curve plotter. ezsurf - Easy to use 3-D colored surface plotter. b) ezplot('y-(x^3-4*x)/(x^2-2*x-3)',[-5 10]); grafiği ezsurfc - Easy to use combination surf/contour aşağıda verilmiştir. plotter. meshc - Combination mesh/contour plot. meshz - 3-D mesh with curtain. pie3 - 3-D pie chart. ribbon - Draw 2-D lines as ribbons in 3-D. scatter3 - 3-D scatter plot. stem3 - 3-D stem plot. surfc - Combination surf/contour plot. trisurf - Triangular surface plot. trimesh - Triangular mesh plot. waterfall - Waterfall plot. Solid modeling. cylinder - Generate cylinder. sphere - Generate sphere. ellipsoid - Generate ellipsoid. patch - Create patch. c) ezplot('y-(x^3-4*x)/(x^2-2*x-3)',[-5 5 -10 30); grafiği surf2patch - Convert surface data to patch data. aşağıda verilmiştir. ..... Bunların hepsini açıklamaya gerek yok, ancak bazılarını görelim: Ezplot Fonksiyonu: Matlab'ın en güçlü fonksiyonlarından biridir.Bu grafik fonksiyon; metin olarak girilen f(x,y)=0 biçimindeki kapalı fonksiyon grafiklerini çizdirmeye yarar. Kullanımı: ezplot('kapalı fonksiyon ifadesi'); veya ezplot('kapalı fonksiyon ifadesi',[xmin xmax]); veya ezplot('kapalı fonksiyon ifadesi',[xmin xmax ymin ymax]); biçiminde kullanılabilir.Burada Örnek: xmin x değerlerinin başlangıç değeri, x²siny+y²sinx=3 bağıntısının grafiğini x ve y değerlerinin xmax x değerlerinin bitiş değeri, her ikisi de [-20, 20] aralığında çizdirelim. 20 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 21. Matlab Ders Notları Çözüm:ezplot('x^2*sin(y)+y^2*sin(x)-3',[-20 20 -20 20]); grafiği aşağıda verilmiştir. cylinder Fonksiyonu: Silindir çizdirmeye yarayan fonksiyondur. Ezplot3 Fonksiyonu: Kullanımı: cylinder; veya cylinder(r,n); biçimindedir. Bu da metin olarak girilen f(x,y,z)=0 biçimindeki kapalı fonksiyon grafiklerini üç boyutlu uzayda çizdirmeye Not 1) Buradaki r silindirin çapı, n de silindiri oluşturan yarar.Burada x, y ve z vektörleri t gibi bir parametreye yüzey sayısıdır.varsayılan n değeri 20 dir. bağlı birer fonksiyonlardır.Yani, x=f(t), y=g(t) ve z=h(t) Not 2) n değerini küçük alırsak, örneğin 5, 10 gibi silindir gibi birer fonksiyondur. pirizmaya dönüşür. Örnek: Kullanımı: a) Normal varsayılan değerlerle bir siliindir ezplot3('f(t)','g(t)','h(t)'); veya b) Taban çapı 3 birim , yüzey sayısı 50 olan bir silindir; ezplot3('f(t)','g(t)','h(t)',[tmin tmax]); c) Taban çapı 7 birim olan bir üçgen pirizmayı, hsv renk haritasıyla boyayarak çizdirelim. Not 1) Burada tmin t parametresinin başlangıç değeri, Çözüm: a) cylinder; tmax t parametresinin bitiş değeridir. Not 2) tmax ve tmin değerleri belirtilmezse Matlab bunu [0 2π] olarak alır. x Örnek:x=sin(t), y=e ve z=t.cost parametrik denklemleriyle verilen üç boyutlu eğrinin grafiğini ; a) Normal varsayılan aralıkta b) t değerleri [-10π, 10π] aralığında çizdirelim. a) ezplot3('sin(t)','exp(t)','t*cos(t)'); b) cylinder(3,50); b) ezplot3('sin(t)','exp(t)','t*cos(t)',[-10*pi 10*pi]); c) cylinder(7,3);colormap(hsv); 21 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 22. Matlab Ders Notları Örnek: Kullanıcının girdiği bir x sayısının, istediği fonksiyon altındaki görüntüsünü (değerini) hesaplatan bir program yazalım. Çözüm: clc;x=input('Sayıyı gir :'); y=input('Fonksiyonu gir f(x)=','s');y=eval(y); fprintf('f(%d) = %d',x,y); Örnek: x değerleri -5 ile 15 aralığında, 0.1 er artışla tanımlanan sayı aralığında olan, kullanıcının istediği bir fonksiyonun grafiğini çizdiren bir program yazalım. Çözüm: sphere Fonksiyonu: x=[-5:0.1:10]; 1 birim yarıçapında bir küre çizdirmeye yarayan ifade=input('Fonksiyonu gir f(x)=','s'); fonksiyondur. y=eval(ifade); Kullanımı: sphere; veya sphere(n); plot(x,y); Not: Buradaki n sayısı küre yüzeyini oluşturan yüzeylerin Örnek: x değerleri kullanıcının belirlediği bir aralıkta olan sayısıdır varsayılan değeri 20 dir. ve kullanıcının istediği bir fonksiyonun grafiğini çizdiren Örnek: a) varsayılan değerlerde bir küre; b) Yüzeyini bir program yazalım. oluşturan parçaların sayısı 70 olan bir küre çizdirelim. Çözüm: Çözüm: a)sphere; clc;x=input('x aralığını gir :','s');x=eval(x); y=input('Fonksiyonu gir f(x)=','s');y=eval(y); plot(x,y); ".... Grafik Nesneleri ve Grafiksel Arabirim Đle Programalama: Matlab'da grafiksel işlemler, grafik nesneleri ile yapılır.Grafik nesneleri ve arasındaki hiyerarşi aşağıdaki gibidir: I. Root(Kök) II.Figure (Şekil) a) Axes(Eksen) 1. Image (Resim) 2. Light (Işık) 3. Line (Çizgi) b) sphere(70); 4. Patch (Yama) 5. Rectangle (Dikdörtgen) 6. Surface (Yüzey) 7. Text (Metin) b) Uicontrol (Kontrol) c) Uimenu (Menü) d) Uicontextmenu (Kısayol menüsü) Bu nesneler bir hiyerarşi içerisinde birbirlerine bağımlı olarak oluşturulabilirler.Örneğin, grafik kullanıcı arabirimi oluşturmak istediğimizde, düğme, liste kutusu, onay kutusu ... gibi (uicontrol) kontrol nesnelerini bir (figure) şekil penceresi üzerine yerleştirebilirsiniz.Bu durumda şekil penceresi, kontrol nesnelerinin (parent) ebeveyni iken, kontrol nesneleri de şekil penceresinin (children) çocuklarıdır. eval Fonksiyonu ve Kullanımı: Grafik nesnelerini görmek, düzenlemek için ; komut Matlab'da kuulanıcının metin olarak girdiği ifadeyi, satırında guide yazarak veya File>New>GUI sekmesi yorumlayarak hesaplanacak fonksiyon biçimine getiren tıklanırsa; karşımıza aşağıdaki GUI (Grafiksel Arabirim) fonksiyon eval fonksiyonudur. penceresi gelir. Bu arabirim penceresinde aşağıdaki, uicontrol Kullanımı: nesnelerini oluşturabiliriz. değişken=eval('hesaplatılacak-fonksiyon-metni') a) pushbutton (komut düğmesi) b) togglebutton (açma-kapama düğmesi) c) radiobutton (radyo düğmesi) 22 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 23. Matlab Ders Notları d) chekbox (onay kutusu) delete(yazi) e) edit (metin düzenleme kutusu) delete(eksen) f) text (sabit metin kutusu) Grafik Nesneleri ve Özellikleri: g) listbox (liste kutusu) 1. root Nesnesi h) popupmenu (açılır liste kutusu) Matlab'da hiyerarşinin en tepesinde olan nesnesidir.Bu ı) slider (kaydırma çubuğu) nesne Matlab'ı çalıştırdığımızda otomatik olarak oluşur. i) frame (çerçeve) Bu nedenle root nesnesinin tutamacı (handle) yani cc tanımlayıcı sayısı daima 0 dır.Bu nesne ekranımızın çözünürlüğü, boyutu, o anda açık bulunan pencerelerinin Bazı Grafik Đşleme Fonksiyonları: (children) tanımlayıcı sayıları, farenin ekrandaki konumunu ve Matlab komut penceresi gibi bir çok ayarı a) Bir Nesnenin Özelliklerini Elde Etme: get tutan bir nesnedir. Kullanımı: get(nesne_tanımlayıcı,'özellik_adı'); Örnek: a) root nesnesinin tüm özelliklerini ve o andaki ayarlarını Örnek: resim adlı bir figure nesnesi oluşturup bu görüntülemek için; nesnenin units (birim) özelliğini elde edelim. b) root nesnesinin tüm özelliklerini ve olası ayarları nı görüntülemek için komut satırına hangi komut Çözüm: yazılmalıdır? resim=figure; (enter) get(resim,'units') (enter) tuşuna basıldığında ekranda; Çözüm: a) get(0) b) set(0) ans = pixels root Nesnesinin Bazı Özellikleri: görülür.Bunun da resim adlı figure nesnesinin units CurrentFigure Aktif olan pencere tutamacını tutan özelliğinin, pixel olduğu anlaşılır. özelliktir. Format: Komut satırında sayıların nasıl görünmesi b) Bir Nesnenin Özelliklerini Değiştirme: set gerektiğini belirleyen özelliktir. Kullanımı: FormatSpacing: Komut satırında satırlar arası set(nesne_tanımlayıcı,'özellik_adı','yeni_değer'); boşlukları tutan özelliktir.Değeri loose veya compact veya olabilir, loose değeri verilirse satır aralrı boşluklar set(nesne_tanımlayıcı,'özellik_adı1','yeni_değer1', bulunur, compact değeri verilirse boşluk olmaz. 'özellik_adı2','yeni_değer2,..., Language: Đşletim sisteminin bölgesel ayarlardaki 'özellik_adıN','yeni_değerN); tanımlanan dili tutan özelliktir. PointerLocation: Farenin ekrandaki o andaki Örnek: Bir önceki örnekteki resim adlı figure nesnesinin konumunu tutan özelliktir. units özelliğini centimeters yapan komutu yazalım. Units: Uzunluk ve konum bilgilerinin birimini tutan özelliktir, centimeters, pixels , inches, characters ... gibi Çözüm: değerler alabilir. set(resim,'units','centimeters') Tag: Đstenen herhangi bir metni tutmaya yarayan kullanıcıya ayrılmış bir özelliktir. Örnek: UserData: Đstenen bir veriyi (dizi, hücre, yapı, sınıf vs.) Bir önceki resim adlı figure nesnesinin pozisyonunu, sol tutmaya yarayan kullanıcıya ayrılmış bir özelliktir. alt köşesinin, ekranın sol alt köşesinden yatay olarak 1 cm, düşey olarak 2 cm uzaklıkta, yatay uzunluğunun 10 Örnek: cm düşey uzunluğu 7 cm olarak belirleyelim.Resim adlı Komut satırında sayıların a) Noktadan sonra 4 pencerenin zemin renginin RGB renklerini 0.6 0.7 0.8 basamaklı (tek hassasiyetli) b) Noktadan sonra 14 oranında olmasını (açık mavi) ve pencerenin ismini basamaklı (çift hassasiyetli) c) Rasyonel (kesir) olarak 'Şekil Penceresi' olmasını sağlayalım. görünmelerini sağlayan komuları yazalım. Çözüm: Çözüm: a) set(0,'format','short') b) set(0,'format','long') set(resim,'position',[1 2 10 7], c) set(0,'format','rational') 'color',[0.6 0.7 0.8],'name','Şekil Penceresi') Örnek: Ekran üzerindeki uzunluk birimini a) bildiren c) Bir Nesneyi Silmek: delete b) cm c) pixel olarak düzenleyen komutu yazalım. Kullanımı: delete(nesne_tanımlayıcı) Çözüm: a) get(0,'units') b) set(0,'units','centimeters') Örnek: Bir figure penceresinde adı eksen olan bir eksen c) set(0,'units','pixels') nesnesi ve yazi adında üzerinde Deneme yazan bir text nesnesi açıp sonra bunları teker teker silen komutları Örnek: Farenin ekrandaki konumunu a) bildiren yazalım. b) Ekranın sol alt köşesinden yatay olarak 3 cm sağ, Çözüm: düşey olarak 5 cm cm yukarıda olmasını sağlayan eksen=axes komutu yazalım. yazi=uicontrol('style','text','string','Deneme') Şimdi de teker teker silelim: Çözüm: a) get(0,'pointerlocation') 23 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 24. Matlab Ders Notları b) set(0,'units','centimeters');set(0,'pointerlocation',[3 5]); Callback: Kontrol düğmesinin fare ile tıklandığında tetiklenecek geri çağırmalı fonksiyonu belirleyen 2. figure Nesnesi ve Özellikleri: özelliktir. Programların grafik arabirimlerini, verilerin CData: Komut düğmesi ya da açma-kapama düğmesi görselleştirilme işlemlerinin üzerinde yapmayı sağlayan üzerinde görüntülenebilecek gerçek renklerden oluşan şekil penceresi nesnesidir. resmi tanımlayan bir matristir. Enable: Kontrolün kullanılıp-kullanılamayacağını figure Nesnesinin Bazı Özellikleri: belirleyen özelliktir.Değeri on ise düğme kullanılabilir ve Children: Şekil penceresinin çocuk (axes, uicontrol, normal renktedir, off ise düğme kullanılamaz ve rengi uimenu, uicontextmenu gibi) nesnelerinin tutamaçlarını siliktir, inactive ise düğme yine kullanılamaz fakat rengi tutan dizidir. normaldir. Color: Şekil penceresinin zemin rengini düzenlemeye FontAngle: Nesnenin string özelliğinin tutuğu yazı yarayan 1x3 boyutlu bir dizidir.Dizinin elemanları yerine biçimini düzenlemeye yarayan özelliktir, .normal,italic 0 ile 1 arasında değişen reel sayılar yazılabilir ki bu veya oblique değerlerini alabilir. değerler tanımlanan rengin RGB renk oranlarını FontName: Nesnenin string özelliğinin tutuğu yazı gösterir.[0 0 0] değeri siyah rengi, [1 1 1] değeri beyaz fontunu düzenlemeye yarayan özelliktir.. rengi, [1 0 0] değeri kırmızıyı, [0 1 0] değeri yeşili, [0 0 1] FontSize: Nesnenin string özelliğinin tutuğu yazı tipi değeri maviyi, [0.6 0.7 0.8] değeri açık maviyi belirtir. boyutunu düzenlemeye yarayan özelliktir. Menubar: Şekil penceresinin üst tarafında bulunan FontUnits:.Fontsize özelliği ile belirlenen yazıtipi standart menüleri kapatıp-açmaya yarar. büyüklüğünü birimini belirlemeye yarayan Name: ekil penceresi üstündeki başlığı düzenlemeye özelliktir.Değeri centimeters, inch, points veya yarayan özelliktir. normalized olabilir. NextPlot: Grafik işlemleri aktif pencere üzerinde nasıl FontWeight: Nesnenin string özelliğinin tutuğu yazı gerçekleşeceğini belirleyen özelliktir.Değeri add, tipinin ağırlığını düzenlemeye yarayan özelliktir.normal, replace veya replacechildren olabilir bold veya light olabilir NumberTitle:. Şekil penceresinin üst bölümündeki şekil ForeGroundColor: Nesnenin string özelliğinin tutuğu penceresi numarasının görünüp görünmemesini yazının rengini (RGB) tutan 1x3 boyutunda bir diziyi sağlayan özelliktir.Değeri off yaparak numaranın belirlemeye yarar. görünmemesi, on yaparak görünmesi sağlanır. HorizontalAlignment: Metin kutusu ve statik metin Pointer: Pencere üzerine geldiğinde, farenin biçimini nesnelerinin etiket metnini hizalamaya yarayan belirleyen özelliktir.Bu değerler crosshair , fullcrosshair , özelliktir.left, right veya center değerlerini alabilir. arrow, ibeam , watch ,right,bottom, circle , cross gibi Position: Nesnenin şekil penceresi üzerindeki olabilir. pozisyonunu belirleyen 1x4 boyutlu bir diziyi Position: Şekil penceresinin ekran üzerindeki düzenlemeye yarayan özelliktir. konumunu belirleyen 1x4 boyutlu bir diziyi düzenleyen String: Nesnenin üzerinde bulunması gereken yazıyı özelliktir. düzenlemeye yarayan özelliktir. Resize: Şekil penceresinin boyutlarını değiştirmeye Style: Kontrol nesnesinin tipini belirleyen özelliktir. yarayan özelliktir.Değeri on olursa şekil penceresi Değeri pushbutton olduğunda nesne komut düğmesi, boyutları değiştirilebilir, off olursa değiştirilemez. togglebutton olduğunda nesne açma-kapama düğmesi, Units: Şekil penceresinin uzunluk ve konum bilgilerinin radiobutton olduğunda nesne radyo düğmesi, birimini tutan özelliktir, centimeters, pixels , inches, chekbox olduğunda nesne onay kutusu, characters ... gibi değerler alabilir. edit olduğunda nesne metin düzenleme kutusu, text olduğunda nesne sabit metin kutusu, 3. uicontrol Nesnesi listbox olduğunda nesne liste kutusu, Bir şekil penceresi üzerinde kullanıcı ile iletişim popupmenu olduğunda nesne açılır liste kutusu, sağlayacak bazı nesneler oluşturmaya ve düzenlemeye slider olduğunda nesne kaydırma çubuğu, yarar.uicontrol nesneleri aşağıda verilmiştir: frame olduğunda nesne çerçeve nesnesine dönüşür. a) pushbutton (komut düğmesi) Tag: Nesneye bir etiket ismi vermeye yarayan b) togglebutton (açma-kapama düğmesi) özelliktir.Bu özellik sayesinde nesne findobj komutuyla c) radiobutton (radyo düğmesi) bulunabilir. d) chekbox (onay kutusu) TooltipString: Fare nesnenin üzerine geldiğinde bir e) edit (metin düzenleme kutusu) ipucu ya da açıklama metni görüntülemeye yarayan f) text (sabit metin kutusu) özelliktir. g) listbox (liste kutusu) Units: Nesnenin uzunlık ile ilgili birimini düzenlemeye h) popupmenu (açılır liste kutusu) yarayan özelliktir.Değeri centimeters, pixels , inches, ı) slider (kaydırma çubuğu) characters ... olabilir. i) frame (çerçeve) 4. uimenu Nesnesi uicontrol Nesnesinin Bazı Özellikleri: Şekil penceresi üzerinde oluşturulabilecek menü BackGroundColor: Nesnenin arka plan rengini nesneleridir.Üst seviye ve alt seviye menüler olabilir.Üst belirlemeye yarayan özelliktir. seviye menülerinin ebeveyni (parent) şekil penceresidir, alt seviye bir menünün ebeveyni ise başka bir menüdür. 24 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 25. Matlab Ders Notları uimenu Nesnesinin Bazı Özellikleri: CameraUpVector: Kameranın CameraTarget ve Callback: Menü nesnesinin fare ile tıklanarak CameraPosition ile tayin edilen bakış doğrultusu seçildiğinde tetiklenecek geri çağırmalı fonksiyonu etrafındaki dönmeyi belirleyen 1x3 lük vektördür. belirleyen özelliktir. CameraUpVectorMode: Kameranın bakış doğrultusu Checked: Menü seçeneği tıklandığında, sol tarafında etrafındaki dönmesini tayin etmeye yarayan seçildiğine dair onay işareti belirlenmesini sağlayan bir özelliktir.Değeri auto olduğunda Matlab kameranın bakış özelliktir.Değeri on olduğunda onay işareti konur, off doğrultusu etrafındaki dönmeyi otomatik belirler, manual olduğunda konmaz. olduğunda ise CameraUpVector daki değer geçerlidir. Enable: Menü seçeneğinin kullanılıp kullanılamayaca- CameraViewAngle: Görme alanını belirleyen açıdır.0° ğını belirleyen özelliktir.Değeri on ise seçenek ile 180° arasında bir de ğer olabilir. kullanılabilir ve normal renktedir, off ise düğme CameraViewAngleMode: Görme alanını belirleyen kullanılamaz ve rengi siliktir. açının modunu belirleyen özelliktir.Değeri auto ForeGroundColor: Menü seçeneğinin string (etiket olduğunda Matlab kameranın görme açısını bütün yazısının) rengini belirlemeye (RGB kodlarını tutan 1x3 sahneyi görecek biçimde en küçük açıya ayarlar, boyutunda bir dizi) yarayan özelliktir. manual olduğunda ise CameraViewAngle daki değer Label: Menü seçeneğinin üstünde görüntülenecek geçerlidir. metni belirlemeye yarayan özelliktir.Menü açıkken, kısa Children: Eksen üzerinde oluştulmuş çocuk yoldan çalışmasını istersek, ilgili kısayol karakterinin nesnelerinin (line, light, patch, surface, rectangle ...gibi) önüne & işareti konmalıdır. tutamaçlarını tutan dizidir. Position: Menü seçeneğinin, ebeveyni içerisindeki Color: Eksenin arka rengini tanımlayan 1x3 lük göreceli pozisyonunu belirlemeye yarayan özelliktir.Đlk dizidir.Ayrıca değeri none de olabilir.Bu durumda eksen menü değeri 1 dir. şeffaflaşarak arkasındaki nesneleri de gösterir. Separator: Menü nesnesi üzerinde bir ayırıcı işaret DataAspectRatio: Eksen çizgilerinin (x, y ve z) konulmasını düzenler.Değeri on ise ayırıcı işaret konur, birbirlerine göre oranını belirleyen 1x3 lük bir diziyi tutan off ise konmaz. özelliktir. Tag: Menüye bir etiket ismi vermeye yarayan DataAspectRatioMode: Eksen çizgilerinin birbiri ile ilgili özelliktir.Bu özellik sayesinde nesne findobj komutuyla oranını belirlemeye yarayan özelliktir.Değeri auto bulunabilir. olduğunda Matlab eksen çizgililerinin birbirine oranını Visible: Menünün görünüp-görünmemesini düzenleyen otomatik olarak ayarlar, manual olduğunda ise özelliktir.Değeri on ise menü görünür, off ise görünmez. DataAspectRatio daki değer geçerlidir. FontAngle: Eksen çizgilerinin etiketleri ve çentik Örnek: Tutamac ismi hesap , etiket ismi Hesapla , şekil değerleri için kullanılan yazı biçiminin eğimini penceresinde ana menünün 3. sırasında bulunan ve düzenlemeye yarayan özelliktir, .normal,italic veya kısayol tuşu H harfi olan bir menü oluşturalım. oblique değerlerini alabilir. Çözüm: FontName: Eksen çizgilerinin etiketleri ve çentik hesap=uimenu('label','&Hesapla','position',3, değerleri için kullanılan yazı fontunu düzenlemeye 'parent',figure); yarayan özelliktir.. FontSize: Eksen çizgilerinin etiketleri ve çentik değerleri 5. axes Nesnesi için kullanılan yazı tipi boyutunu düzenlemeye yarayan Üzerinde çizim, animasyon, resim ve video özelliktir. görüntüleme gibi bir çok işlemler yapmaya yarayan FontUnits:.Fontsize özelliği ile belirlenen yazıtipi nesnedir. büyüklüğünü birimini belirlemeye yarayan özelliktir.Değeri centimeters, inch, points veya axes Nesnesinin Bazı Özellikleri: normalized olabilir. Box: Grafiğin, iki boyutlu çizimlerde bir dikdörtgen FontWeight: Eksen çizgilerinin etiketleri ve çentik içinde, üç boyutlu çizimlerde bir küp içinde görünüp değerleri için kullanılan yazı tipinin ağırlığını görünmemesini sağlayan özelliktir.Değeri on ya da off düzenlemeye yarayan özelliktir.normal, bold veya light olabilir. olabilir CameraPosition: Eksen koordinatlarında kameranın GridLineStyle: Çizim alanını eksen çizgilerine dik olarak sahneyi gördüğü pozisyonu tanımlayan 1x3 lük bir diziyi bölen çizgilerin (grid lines) stilini belirleyen belirleyen özelliktir. özelliktir.Değeri; -, --, :, -. ve none olabilir. CameraPositionMode: Kamera pozisyonu ayarını Layer: Eksen çizgilerinin eksen çizim alanının üst ya da düzenleyen özelliktir.Değeri auto olduğunda Matlab alt tarıfında olmasını sağlayan özelliktir.Değeri top veya pozisyonu otomatik belirler, manual olduğunda ise bottom olabilir. CameraPosition daki değer geçerlidir. LineStyleOrder: Çoklu bir grafik çizimi yapıldığında, CameraTarget: Eksen koordinatlarında kameranın sırasıyla grafik çizgilerini belirlemeye yarayan baktığı noktayı tanımlamaya yarayan 1x3 lük diziyi tutan özelliktir.Örneğin ilk grafik * lardan, ikincisi - lerden özelliktir. üçüncüsü + lardan oluşması isteniyorsa; bu özelliğe CameraTargetMode: Kamera hedefini tayin etmeye atanan değer '*|-|+' olmalıdır. yarayan özelliktir.Değeri auto olduğunda Matlab kamera LineWidth: Eksen çizgilerinin kalınlıklarını düzenlemeye hedefini otomatik belirler, manual olduğunda ise yarayan özelliktir.Varsayılan değer 0.5 noktadır. CameraTarget daki değer geçerlidir. 25 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 26. Matlab Ders Notları NextPlot: Grafik işlemlerinin aktif eksen üzerindenasıl Örnek: Grafiğin x ekseninin etiketini x Ekseni, y gerçekleşeceğini belirleyen özelliktir.Üç farklı değer ekseninin etiketini de y Ekseni olarak düzenleyen alabilir bunlar: add,replace ve replacechildren dir. komutları yazalım. Position: Eksen nesnesinin şekil penceresi üzerindeki pozisyonunu belirleyen 1x4 boyutlu bir diziyi Çözüm: düzenlemeye yarayan özelliktir. xetiket=get(eksen,'xlabel');yetiket=get(eksen,'ylabel'); Projection: Eksen üzerindeki grafiğin üç boyutlu set(xetiket,'string','x Ekseni');set(yetiket,'string','y Ekseni'); görüntüleme yöntemini belirleyen özelliktir.Đki değer alabilir, bunlar: ortographic ve perspective dir. Örnek: x ekseninin sayı değerlerini 5 ile 25 arasında, y Tag: Eksen nesnesine bir etiket ismi vermeye yarayan dekseninin sayı değerlerini de -10 ile 50 değerleri özelliktir.get fonksiyonu ile değerini öğrenebilir set arasında düzenleyelim. fonksiyonu ile istediğimiz bir değeri atayabiliriz. Title:Eksenin başlık metninin tutamacıdır. Çözüm: set(eksen,'xlim',[5 25],'ylim',[-10 50]) Units: Eksen nesnesinin uzunlık ile ilgili birimini düzenlemeye yarayan özelliktir.Değeri centimeters, Örnek: Eksen çizgi kalınlıklarını 2 nokta yapan komutu pixels , inches, characters ... olabilir. yazalım. Visible: Eksen nesnesinin görünüp-görünmemesini düzenleyen özelliktir.Değeri on ise eksen görünür, off Çözüm: set(eksen,'linewidth',2) ise görünmez. XColor, YColor, ZColor: x, y, z eksenlerinin renklerini Örnek: x ekseni sayı değerlerini 5 ile 25 arasında 2 şer düzenleyen özelliktir. birim aralıklarla, y ekseni sayı değerlerini de -10 ile 50 XDir,YDir,ZDir: X,y,z eksen değerlerinin artış yönünü arasında 3 er birim aralıklarla işaretleyen komutu belirler.Değeri normal ise artış normal yöndedir, yazalım. reverse ise artış ters yöndedir. Çözüm: set(eksen,'xtick',[5:2:25],'ytick',[-10:3:50]) XGrid,YGrid,ZGrid: Çizimalanı eksen çizgilerine dik yönde bölen çizgilerin (gridlines) görünüp Örnek: Kamera pozisyonunu x=1, y=0, z=9 olacak görünmemesini belirleyen özelliktir.Değeri on ya da off biçimde düzenleyelim. olabilir. XLabel,YLabel,ZLabel: Eksen çizgi etiketlerini Çözüm: düzenlemeye yarayan özelliktir. set(eksen,'box','on');set(eksen,'cameraposition',[1 0 9]); XLim, YLim, ZLim: Eksenin x, y ve z çizgilerinin sayısal aralıklarını belirleyen özelliktir.Örneğin x çizgisinin Örnek: sayısal değeri 10 ile 120 arasında olmasını istersek; a) Ekranda y= 25 - x² fonksiyonun (yarım çember) XLim özelliğinin değeri [10 120] olmalıdır. grafiğini çizdirelim. XLimMode, YLimMode, ZLimMode: Eksen çizgi b) Grafiğin tam bir çember parçası değil, U harfine değerlerinin sayı aralıklarını düzenlemeye yarayan benzediğini görürüz.Şekil penceresinin boyutlarını özelliktir.Değeri auto olduğunda Matlab eksen kareye benzettiğimizde ancak yarım çember tam olarak çizgilerinin sayısal aralıkları otomatik olarak belirlenir, görünür.Sebebi de şekil penceresine göre değişen manual olduğunda XLim, ZLim veya ZLim özelliğinin dataaspectratio oranının 1 olmamasından değeri geçerlidir. kaynaklanır.Yarım dairenin, şekil penceresinin XScale, YScale, ZScale: Eksen çizgilerinin sayısal boyutlarına bağımlı kalmaksızın tam olarak yarım daire ölçeğini belirlemeye yarayan özelliktir.Değeri linear görünmesini sağlayan işlemleri yapalım. olduğunda sayı artışı düzgün artar, log olduğunda logaritmik artar. Çözüm: a) x=-5:0.1:5;y=sqrt(25-x.^2);plot(x,y); Örnek: Adı eksen olan, şekil penceresinin sol alt b) sekil=get(0,'currentfigure'); köşesinden yatay ve düşey olarak 1 cm, 1 cm uzaklıkta eksen=get(sekil,'currentaxes'); olan ve yatay uzunluğu 8 cm düşey uzunluğu 5 cm olan get(eksen,'dataaspectratio'); bir eksen nesnesi oluşturalım. set(eksen,'dataaspectratio',[1 1 1]); Not: Aynı işlemi axis equal komutuyla da yapabiliriz. Çözüm: eksen=axes('units','centimeters','position',[1 1 8 5]); 6. image Nesnesi Eksen nesnesi üzerinde resim dosyalarını Örnek: Bir önceki örnekte tanımlanan eksen adlı eksen görüntülemeye yarayan grafik nesnesidir.Matlab'da nesnesinin zemin rengini [0.3 0.4 0.5] kodlu (lacivert) , resimler indeksli (indexed) , gerçek renkli (true color) yapan komutu yazalım. veya gri tonlu (gray scale) olabilirler.Bir resmin ölçüleri genişlik ve yüksekliğine düşen piksel sayısı ile Çözüm: set(eksen,'color',[0.3 0.4 0.5]) belirlenir.Örneğin 150x140 ölçülerinde bir resim nesnesi, yatay 150 piksel, düşey 140 piksel büyüklüğündedir.Bu Örnek: Eksen başlığına Grafik başlığını verelim. durumda bu resmi temsil edebilecek matris 150 satır, Çözüm: 140 sütunlu yani 140x150 mertebesindedir. baslik=get(eksen,'title');set(baslik,'string','Grafik'); 26 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 27. Matlab Ders Notları a) Đndeksi Resimler: Đndeksli resimler, resmin a) imfinfo('iflbmp.bmp') ölçülerinde bir matris ile birlikte mx3 boyutlu bir renk b) imread('iflbmp.bmp') komutu sonucu workspace haritası matrisi (Colormap) ile belirlenir.Resmi oluşturan (çalışma alanında) oluan ans değişkeninin size renk sayısı, renk haritasındaki satır sayısı kadardır. (boyutu) değerini incelersek; 239x324x3 olduğunu görürüz.Buradan resim dosyasının 324 piksel yatay, 239 b) Gri Tonlu Resimler: Bu resimler de, indeksli resimler düşey piksel boyutlarında ve gerçek renkli (true color) gibidir, ancak renk haritası 2x3 boyutunda bir matristir. olduğunu anlayabiliriz. c) imageview('iflbmp.bmp'); c) Gerçek Renkli Resimler: 150x140 ebadında bir d) res=imread('resume.tif'); gerçek renkli resim için Matlab 140x150x3 ölçülerinde bir e) Resim dosyasının 2528 piksel yatay, 3296 düşey matris ile temsil edilir. piksel boyutlarında olduğunu anlayabiliriz. res değikenini görüntülemeye çalıştığımızda, dosyanın image Nesnesinin Bazı Özellikleri: içinin 0 ve 1 lerden olutuğunu görebiliriz.Bu da resmin 0 (siyah), 1 (beyaz) renklerden oluşan bir resim olduğunu AlphaData: Resim ölçülerinde ve resmin her bir pixelinin söyleyebilirz. şeffaflığını tutan bir dizidir. AlphaDataMapping: AlphaData dizisinin nasıl Örnek: a) bmp resim formatlı iflbmp.bmp resim yorumlanarak kullanılacağını belirleyen özelliktir. dosyasını ve gif formatlı iflgif.gif adlı resim dosyalarını CData: Đndeksli resimlerde mxn, gerçek renkli sırasıyla res1 ve res2 değişkenlerine, colormap (renk resimlerde ise mxnx3 boyutlarında bir matristir haritalarını) da harita1 ve harita2 değişkenlerine Parent:. Resim nesnesinin ebeveynini belirleyen atayalım. özelliktir.Daima ebeveyni eksen nesnesidir.Bu durumda b) harita1 ve harita2 renk haritalarını incelediğimizde, parent özelliği resim nesnesinin üzerinde harita1 değikeninin boş bir dizi, harita2 değişkeninin ise görüntülenecek eksen nesnesinin tutamacını 256x3 boyutlarında bir dizi olduğunu görebiliriz.res1 ve belirlemeye yarar. res2 değikenlerini resim olarak şekil penceresinde Selected: Resmi seçili duruma getirmeye yarar.Değeri inceleyelim.res1 in normal görüntülenmesine rağmen, on ise resim seçilir, off yapılırsa seçili durum iptal edilir. res2 nin düzgün görüntülenmediğini görürüz.res2 nin SelectionHighlight: Seçili olan resmin kenarlarına 8 düzgün görünmesi için ne yapılması gerektiğini adet kulp ile görselleştirmesi sağlanır.Değeri on ise araştıralım. resim kulp takılır , off yapılırsa kulp durumu iptal edilir. Tag: Đmage nesnesine bir etiket ismi vermeye yarayan Çözüm: özelliktir.get fonksiyonu ile değerini öğrenebilir set a) [res1,harita1]=imread('iflbmp.bmp'); fonksiyonu ile istediğimiz bir değeri atayabiliriz. [res2,harita2]=imread('iflgif.gif'); Type: Grafik nesnesinin türünü tutan özelliktir, her b) Renk haritası olan resim dosyalarını düzgün zaman değeri image olur. görüntülemek için imageview fonksiyonunu kullanırken Visible: Resim nesnesinin görünüp-görünmemesini ikinci parametre olarak renk haritası dosyasını düzenleyen özelliktir.Değeri on ise resim görünür, off belirtmektir.O halde komutu aşağıdaki gibi kullanmalıyız: ise görünmez. imageview(res4,harita4); XData: Resim nesnesini oluşturanCData dizisinin eksen nesnesinin x ekseni üzerinde hangi aralığa 7. line Nesnesi konumlanacağını belirleyen 1x2 lik bir dizidir.Đlk değer balangıç, ikinci değer de bitiş değerini temsil Eksen (axes nesnesi) üzerinde verilen x, y (ve z) eder.Varsayılan olarak bu değer [1 size(CData,2)] dir. koordinatları noktayı belirleyen grafik YData: Resim nesnesini oluşturanCData dizisinin eksen nesnesidir.Noktaların birleşiminden de çizgi (line) nesnesinin y ekseni üzerinde hangi aralığa oluşur.line nesnesi yardımıyla çizginin, rengi, biçimi, konumlanacağını belirleyen 1x2 lik bir dizidir.Đlk değer kalınlığı ... gibi bir çok özelliği düzenlenebilir. balangıç, ikinci değer de bitiş değerini temsil eder.Varsayılan olarak bu değer [1 size(CData,1)] dir. line Nesnesinin Bazı Özellikleri: Color: line nesnesinin rengini düzenlemeye yarar. Örnek: a) iflbmp.bmp adlı resim dosyası hakkında bilgi LineStyle: Çizgi stilini belirleyen özelliktir.Alabileceği edinelim değerler; -, --, -., :, ve none dir.Değeri none olursa çizgi b) Bu resim dosyasını okutalım ve ans değişkenini görünmez. inceleyerek dosyanın hangi tür resim dosyası olduğunu LineWidth: Çizginin kalınlığını düzenleyen özelliktir. söyleyelim. Marker: Çizginin işaretini belirleyen özelliktir.Marker ile c) Bu resim dosyasını Matlab şekil penceresinde ilgili değerler ve anlamı aşağıdaki tabloda gösterilmiştir. görüntüleyelim. Değer Anlamı d) resume.tif adlı dosyayı okutarak res adlı değişkene + + işareti atayalım. o daire işareti e) res değişkenini incelediğimizde size değerinin * yıldız işareti 3296x2528 olduğunu varsayalım.Buradan resim dosyası . nokta işareti özellikleri hakkında ne diyebiliriz? x çarpı işareti s kare (square) işareti Çözüm: d elmas (diamond) işareti 27 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 28. Matlab Ders Notları ^ yukarı gösteren üçgen işareti v aşağı gösteren üçgen işareti 8. rectangle Nesnesi > sağa doğru gösteren üçgen işareti < sola doğru gösteren üçgen işareti Eksen (axes nesnesi) üzerinde belirlenen koordinat ve p 5 noktalı (pentagon) yıldız işareti ölçülerde dikdörtgen çizmeye yarayan grafik nesnesidir. h 6 noktalı (hexagram) yıldız işareti none işaretsiz rectangle Nesnesinin Bazı Özellikleri: Curvature: Dikdörtgenin köşelerini eğriye dönüştürme MarkerEdgeColor: Çizgi ile çizilecek kapalı bölge oranlarını belirlemeye yarayan 1x2 lik bir dizidir .Sayılar çeperinin (sınırının) rengini belirleyen özelliktir. 0 ile 1 arasında değişir.[0 0] dizisi dikdörtgeni korur, [1 1] MarkerFaceColor: Çizgi ile çizilecek kapalı bölgenin dizisi elipse dönütürür, dikdörtgen kare ise çembere rengini belirleyen özelliktir. dönüşür. MarkerSize: Çizgi işaretlaerinin büyüklüğünü belirleyen EdgeColor: Dikdörtgenin kenar çizgisinin (sınırının) özelliktir.Matlab bu büyüklüğü 6 olarak varsayar. rengini belirleyen özelliktir. Selected: Çizgiyi seçili konuma getirmeye yarayan FaceColor: Dikdörtgenin iç bölgesinin rengini belirleyen özelliktir.Değeri on veya off olabilir. özelliktir. SelectionHighlight: Selected ile seçilmiş çizginin LineStyle: Dikdörtgenin kenar stilini belirleyen etrafına 8 adet kulp koymaya yarayan özelliktir.Değeri özelliktir.Alabileceği değerler; -, --, -., :, ve none on veya off olabilir. dir.Değeri none olursa dikdörtgen görünmez. Visible: Çizgi nesnesinin görünüp-görünmemesini LineWidth: Dikdörtgenin kenar kalınlığını düzenleyen düzenleyen özelliktir.Değeri on ise çizgi görünür, off ise özelliktir. görünmez. Position: Dikdörtgenin şekil penceresi üzerindeki XData, YData, ZData: Çizginin x, y, z koordinatlarını pozisyonu ve ölçülerini belirleyen özelliktir.Đlk iki değer belirleyen vektörlerdir. dikdörtgenin sol alt köesinin şekil penceresinin sol alt köesine göre koordinatlarını, üçüncü sayı dikdörtgenin Örnek: (20,30) noktasını grafik olarak gösteren komutu yatay uzunluğunu dördüncü sayı da düşey uzunluğunu yazalım. belirtir. Selected, SelectionHighlight, Visible: Bu özellikler de Çözüm: line(20,30); line nesnesinin özellikleri ile aynıdır. Örnek: y=x^2-8x+5 fonksiyonunun grafiğini x değerlerini Örnek: Tutamaç değeri dd olan, şekil penceresinin sol [-5 15] aralığında, 0.01 artış ile çizdiren komutları alt köesine göre koordinatları 5 5, yatay uzunluğu 6 yazalım. düşey uzunluğu 4 birim olan kırmızı kenarlı dikdörtgeni çizdiren komutu yazalım.. Çözüm: Çözüm:dd=rectangle('position',[5 5 6 4],'edgecolor','r'); x=-5:0.01:15;y=x.^2-8*x+5; line(x,y); Not: line(x,y); yerine plot(x,y); fonksiyonunu da Örnek: Eksen nesnesinin boyutları dikdörtgenin kullanabilirdik. boyutlarında oluştuğu için, dikdörtgen ekseni kapladı.Eksen nesnesinin boyutlarını, x ekseni 15 birim, Örnek: y ekseni 10 birim olarak düzenleyelim a) f(x)=x^3-4x+7 fonksiyonu ile g(x)=xsinx-5cosx fonksiyonlarının grafiklerini, x değerleri [-5 5] arasında Çözüm: Bunun için rectangle nesnesinin ebeveyni olan çizdiren komutları yazalım. eksen nesnesinin tutamacına ihtiyacımız var.Daha sonra b) f(x) in grafiğinin rengini mavi, g(x) in grafiğini kırmızı xlim ve ylim değerlerini set fonksiyonu ile renkte olmasını sağlayalım. düzenleyebiliriz.Buna göre komut şöyle olmalıdır: c) f(x) in grafiğinin çizgi biçimini :, g(x) in çizgi biçimini -. set(get(dd,'parent'),'xlim',[0 15],'ylim',[0 10]); lmasını sağlayalım. d) Çizgi kalınlıklarını 2 şer birim ve 1. grafiği yukarıya 9. patch (yama) Nesnesi bakan üçgenlerle ,2. grafiği yıldızlarla işaretleyelim. Çözüm: Bir çok kenarlardan oluşan iki veya üç boyutlu a) x=-5:0.1:5; karmaşık şekli görselleştirmeye yarayan, Matlab'ın en f=x.^3-4*x+7;g=x.*sin(x)-5*cos(x); zor kullanılan grafik nesnesidir.Bu nesne aslında çok gra1=line(x,f); kenarlıdır.Bir yama en az üç olmak üzere bir çok gra2=line(x,g); bağlantı noktasından (vertices) oluşur.Yama olarak Not:gra1 ve gra2 tanımlamaları yapılmadan da grafikler adlandırılmasının sebebi, sadece düzlemsel değil üç sadece line(x,f);line(x,g); komutları ile boyutlu olabilmesidir.Đlk bağlantı noktası ile son bağlantı çizdirilebilir.Ancak grafiklerde başka değişiklikler noktası birleştirildiğinde yama tamamlanmış yapacağımızdan dolayı gra1 ve gra2 değişkenlerine olur.Yamanın iç bölgesi ise yüz (face) olarak adlandırılır. (tutamaçlarına) ihtiyaç duyarız. b) set(gra1,'color','b');set(gra2,'color','r'); patch Nesnesinin Bazı Özellikleri: c) set(gra1,'linestyle',':');set(gra2,'linestyle','.-'); CData: Yama rengini tanımlayan özelliktir.Her bir d) set(gra1,'linewidth',2,'marker','^'); bağlantı noktası (vertex), yüz (face) veya bütün yama set(gra2,'linewidth',2,'marker','p'); (patch) için ayrı ayrı renk tanımlanabilir. 28 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 29. Matlab Ders Notları DiffuseStrength: Yama üzerine düşen ışığın yayılma XData, YData, ZData: Bu özellikler patch nesnesinin yoğunluğunu belirten 0 ile 1 arasında bir sayıdır. özellkileri ile aynıdır. EdgeAlpha: Yamanın kenar çizgilerinin şeffaflığını Vertices: Yamanın bağlantı noktalarını koordinatlarını belirleyen 0 ile 1 arasında değişen sayılara karşılık tutan, (x, y, z) üçlülerinin matrisi. gelen özelliktir. Örnek: EdgeColor: Yamanın kenar çizgilerinin rengini Örnek: Bu kadar öğrendiklerimizle, basit bir grafik belirleyen özelliktir. arabirimli program yazalım.Sol alt köşesi, ekranın sol alt FaceAlpha: Yama yüzlerinin şeffaflığını belirleyen 0 ile köşesinden yatay uzaklığı 5 cm, düşey uzaklığı 8 cm, 1 arasında değişen sayılara karşılık gelen özelliktir. yatay uzunluğu 15 cm, yüksekliği 10 cm olan sekil adlı FaceColor: Yama yüzlerinin rengini belirleyen özelliktir. figure penceresinde, pencerenin sol alt köşesinden 1 Faces: Bir yüzeyin vertices dizisinin hangi satırındaki cm yatay, 5 cm düşey uzaklığında, 10 cm uzunluğunda, bağlantı noktalarından oluşturulacağını belirleyen 1 cm yüksekliğinde mesaj adlı static text nesnesine, özelliktir. 20 punto büyüklüğünde Đzmir Fen Lisesi yazdıran LineStyle, LineWidth: rectangle nesnesinde açıklanan program yazalım. özelliklerle aynıdır. Marker: Bağlantı noktalarının işaretini belirleyen Çözüm: özelliktir. function mesaj; MarkerEdgeColor: Bağlantı noktalarında görünmesi sekil=figure('units','centimeters','position',[5 8 15 10]); istenen kapalı şekildeki işaretlerin çeper (sınır) rengini mesaj=uicontrol('style','text','units','centimeters','position', [1 5 10 1],'string','Đzmir Fen Lisesi','fontsize',20); belirleyen özelliktir. MarkerFaceColor: Bağlantı noktalarında görünmesi Klavyeden Giriş Alma: istenen kapalı şekildeki işaretlerin iç bölgesi rengini Bunun için inputdlg fonksiyonu kullanılır. belirleyen özelliktir. Genel kullanımı aşağıdaki gibidir: MarkerSize: Bağlantı noktalarında görünmesi istenen kapalı şekildeki işaretlerin büyüklüğünü belirleyen girdiler={'1.girdi başlığı','2. girdi başlığı','3. girdi başlığı'...}; özelliktir..Matlab bu büyüklüğü 6 olarak varsayar. değişken=inputdlg(girdiler); Selected,SelectionHighlight,Visible: Dikdörtgen nesnesindeki özelliklerle aynıdır. Örnek: Klavyeden girilen bir mesajı, bir önceki örnekteki XData, YData, ZData: Bağlantı noktalarının x, y, z figure penceresindeki pozisyonda, beyaz zeminde , mavi koordinatlarını belirleyen vektörlerdir. renkli olarak yazdıran bir program yazalım. Örnek: Düzlemde adı yama olan, (1,3), (2,5), (4,7), Çözüm: (7,5), (3,2) koordinatlı noktalardan oluan yama esnesini function mesaj2; oluşturalım. sekil=figure('units','centimeters','position',[5 8 15 10]); mesaj={'Mesaj: '}; Çözüm: Önce x ve y koordinatlarının dizilerini oluturalım cevap=inputdlg(mesaj); yazi=uicontrol('style','text','units','centimeters', x=[1;2;4;7;3];y=[3;5;7;5;2]; 'position',[1 5 10 1], 'fontsize',20,'backgroundcolor','w', Yama düzlemsel olacağından z koordinatları 0 lardan 'foregroundcolor','b'); set(yazi,'string',cevap); oluşacaktır. z=[0;0;0;0;0]; Not: Matlab'da renk tanımlaması bir kaç yoldan Sonra yamayı oluşturan komutu yazabiliriz. yapılabilir.Birincisi, RGB (Red Green Blue) renk yama=patch('xdata',x,'ydata',y,'zdata',z); oranlarını 0 ile 1 arasında olacak şekilde sayılar vererek Not 1) z vektörünü; z=zeros(size(x,1),1); biçiminde de oluşturmaktır.Đkinci olarak bazı özel renkleri, ister oluşturabiliriz. tamamını istenirse baş harfini yazarak Not 2) Aynı yamayı, köşe koordinatlarından oluşan k tanımlamaktır.Örneğin; kırmızı 'red' veya 'r' ile, yeşil matrisinde tutarak ta gerçekleştirebiliriz. 'green' veya 'g' ile, mavi 'blue' veya 'b' ile,... belirtilebilir. k=[1 3 0;2 5 0;4 7 0;7 5 0;3 2 0]; Aşağıdaki tablo renk tanımlamaları için bir fikir verebilir: yama=patch('vertices',k); RGB değeri Kısa Kul. Uzun Kul. Örnek: Önceki örnekte oluşturulan tutamaç adı yama [1 0 0] 'r' 'red' olan yamanın, dış çeper rengini kırmızı, iç bölge rengini [0 1 0] 'g' 'green' mavi renkli yapalım. [0 0 1] 'b' 'blue' [1 1 0] 'y' 'yellow' Çözüm: set(yama,'edgecolor','r','facecolor','b'); [1 0 1] 'm' 'magenta' 10. surface Nesnesi [0 1 1] 'c' 'cyan' [1 1 1] 'w' 'white' x ve y değişkenlerine bağlı z fonksiyonunun [0 0 0] 'black' oluşturduğu ( z=f(x,y) ) yüzeyi görselleştiren nesnedir. surface Nesnesinin Bazı Özellikleri: Örnek: Klavyeden girilen iki sayının çarpımını, beyaz CData, EdgeAlpha, EdgeColor, FaceAlpha, zeminde , mavi renkli olarak; örneğin sayılar, -13 ve 7 FaceColor, LineStyle, LineWidth, Marker, girilmişse; figure penceresinde -13 x 7 = 91 biçiminde MarkerSize, Selected,SelectionHighlight,Visible, yazdıran bir program yazalım. 29 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 30. Matlab Ders Notları Çözüm: y=str2num(y); function ikisayicarpimi; sonuc=findobj(gcbf,'tag','sonuc');s=x*y;s=num2str(s); sekil=figure('units','centimeters','position',[5 8 15 10]); set(sonuc,'string',s); sorular={'1. Sayı: ','2. sayı'}; cevaplar=inputdlg(sorular); Örnek: Aşağıdaki şekil penceresinde görüldüğü gibi, 1. sayi1=cevaplar{1};sayi2=cevaplar{2}; sayı ve 2. sayıyı girdikten sonra, Topla!, Çıkar!, Çarp! sayi1=str2num(sayi1);sayi2=str2num(sayi2); ve Böl! butonlarından hangisine basılırsa, ilgili işlemin carpim=sayi1*sayi2;carpim=num2str(carpim); sonucunu Sonuç nesnesinde görüntüleyen bir program yazi1=uicontrol('style','text','units','centimeters', yazalım.Örneğin 1.sayı ve 2. sayı bölümlerine sırasıyla 'position',[1 5 2 1], 'fontsize',20,'backgroundcolor','w', 120 ve -15 girilip Böl! butonuna basıldığında, Sonuç: 'foregroundcolor','b'); set(yazi1,'string',sayi1); bölümünde -8 görüntülensin. yazi2=uicontrol('style','text','units','centimeters', 'position',[3 5 1 1], 'fontsize',20,'backgroundcolor','w', 'foregroundcolor','b'); set(yazi2,'string','x'); yazi3=uicontrol('style','text','units','centimeters', 'position',[4 5 2 1], 'fontsize',20,'backgroundcolor','w', 'foregroundcolor','b'); set(yazi3,'string',sayi2); yazi4=uicontrol('style','text','units','centimeters', 'position',[6 5 1 1], 'fontsize',20,'backgroundcolor','w', 'foregroundcolor','b'); set(yazi4,'string','='); yazi5=uicontrol('style','text','units','centimeters', 'position',[7 5 5 1], 'fontsize',20,'backgroundcolor','w', 'foregroundcolor','b'); set(yazi5,'string',carpim); Çözüm: Örnek: Aşağıdaki şekil penceresinde görüldüğü gibi, 1. function dortislem; sayı ve 2. sayıyı girdikten sonra, Çarp butonuna sekil=figure('units','centimeters', basıldığında çarpım sonucunu, Sonuç bölümünde 'position',[1 1 10 7],'color',[0.5 0.6 0.7]); uicontrol('units','centimeters','style','text', görüntüleyen bir program yazalım. 'string','1. sayı ','position',[0.5 5.5 2 1]); uicontrol('units','centimeters','style','text', 'string','2. sayı: ','position',[3 5.5 2 1]); uicontrol('units','centimeters','style','text', 'string','Sonuç: ','position',[5.5 5.5 2 1]); sayi1=uicontrol('units','centimeters','style','edit', 'position',[0.5 5 2 1],'tag','sayi1'); sayi2=uicontrol('units','centimeters','style','edit', 'position',[3 5 2 1],'tag','sayi2'); sonuc=uicontrol('units','centimeters','style','text', 'position',[5.5 5 2 1],'tag','sonuc'); topla=uicontrol('units','centimeters','style','pushbutton', 'position',[0.5 3.5 2 1],'tag','topla', 'string','Topla!','callback',@topla); cikar=uicontrol('units','centimeters','style','pushbutton' ,'position',[3 3.5 2 1],'tag','cikar', 'string','Çıkar!','callback',@cikar); carp=uicontrol('units','centimeters','style','pushbutton', 'position',[5.5 3.5 2 1],'tag','carp', Çözüm: 'string','Çarp!','callback',@carp); function carpma; bol=uicontrol('units','centimeters','style','pushbutton','posi sekil=figure('units','centimeters','position',[1 1 12 8]); tion',[8 3.5 2 1],'tag','bol','string','Böl!','callback',@bol); uicontrol('units','centimeters','style','text', 'position',[1 5.5 2 1],'string','1. Sayı'); function topla(tut,bosver); uicontrol('units','centimeters','style','text', sayi1=findobj(gcbf,'tag','sayi1');x=get(sayi1,'string'); 'position',[3.5 5.5 2 1],'string','2. Sayı'); x=str2num(x); uicontrol('units','centimeters','style','text', sayi2=findobj(gcbf,'tag','sayi2');y=get(sayi2,'string'); 'position',[6 5.5 2 1],'string','Sonuç'); y=str2num(y); sayi1=uicontrol('units','centimeters','style','edit','position',[ s=x+y;s=num2str(s);sonuc=findobj(gcbf,'tag','sonuc'); 1 5 2 1],'backgroundcolor',[0 1 0],'string','','tag','sayi1'); set(sonuc,'string',s); sayi2=uicontrol('units','centimeters','style','edit','position', [3.5 5 2 1],'backgroundcolor',[0 1 0],'string','','tag','sayi2'); function cikar(tut,bosver); sonuc=uicontrol('units','centimeters','style','text','position', sayi1=findobj(gcbf,'tag','sayi1');x=get(sayi1,'string'); [6 5 2 1],'backgroundcolor',[1 0 1 ],'tag','sonuc'); x=str2num(x); carpimdugmesi=uicontrol('units','centimeters', sayi2=findobj(gcbf,'tag','sayi2');y=get(sayi2,'string'); 'style','pushbutton','position',[3 3 3 1],'backgroundcolor', y=str2num(y); [1 1 1 ],'string','Çarp!','callback',@carpim); s=x-y;s=num2str(s); sonuc=findobj(gcbf,'tag','sonuc'); function carpim(tutamac,bos); set(sonuc,'string',s); sayi1=findobj(gcbf,'Tag','sayi1');x=get(sayi1,'string'); x=str2num(x); function carp(tut,bosver); sayi2=findobj(gcbf,'Tag','sayi2');y=get(sayi2,'string'); 30 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni
  • 31. Matlab Ders Notları sayi1=findobj(gcbf,'tag','sayi1');x=get(sayi1,'string'); mcc -m iyigun x=str2num(x); ??? Error: File "iyigun" is a script M-file and cannot be sayi2=findobj(gcbf,'tag','sayi2');y=get(sayi2,'string'); compiled with the current Compiler. y=str2num(y); s=x*y;s=num2str(s);sonuc=findobj(gcbf,'tag','sonuc'); set(sonuc,'string',s); Error in ==> C:MATLAB6P5toolboxcompilermcc.dll function bol(tut,bosver); Çünkü derlemeye çalıştığımız dosya bir m dosyasıdır, m sayi1=findobj(gcbf,'tag','sayi1');x=get(sayi1,'string'); fonksiyon dosyası değil!Bunun için bu dosyayı m x=str2num(x); fonksiyon dosyası biçimine getirmemiz gerekir.Bunun sayi2=findobj(gcbf,'tag','sayi2');y=get(sayi2,'string'); için aşağıdaki basit eklentileri yapıp dosyayı yeniden y=str2num(y); kaydedelim: s=x/y;s=num2str(s);sonuc=findobj(gcbf,'tag','sonuc'); set(sonuc,'string',s); function laf=iyigun clc; disp('Đyi Günler!'); ... laf=1; Derleme Nedir ve Matlab Dosyaları Nasıl Derlenir? Sonra mcc -m iyigun komutuyla derleyelim.Bu durumda Bir programlama dili ile yazılan bir programın, hiçbir hata mesajı ile karılaşmadan derlendiğini ve work hazırlanan ortamdan bağımsız olarak çalıştırılması için, klasöründe iyigun.exe adlı dosyanın olutuğunu yapılan işleme derleme (compile) denir.Böylece ilgili görebiliriz.Dos ortamında iyigun yazıp entere basarak dilde yazılan komut ve deyimler, işletim sisteminin dosyanın çalışmasını görebiliriz yorumlayıp çalışmasını sağlayan komutlar topluluğu haline gelir ki, bu dosyaların genel olarak uzantısı exe (executable) olur. Aynı mantıkla, Matlab dosyalarını da derleyerek, matlab ortamı dışında çalıştırılabilir dosyalar biçimine getirmek için derlemek gerekir.Ancak matlab m fonksiyon dosyaları derlenebilir, m dosyaları derlenemezler! Derleme komutu ve kullanımı: Derleme komutu mcc (Matlab C/C++) dir. Komut satırında kullanımı aşağıdaki gibidir: mcc -seçenek dosyaadı Burada dosyaadı yerine work klasörüne kaydedilmiş m fonksiyon dosyasının adı yazılır.Seçenek yerine ise aşağıdaki ifadeler yazılabilir. Seçenek Açıklama -m C tabanlı exe uzantılı uygulama oluşturmaya yarar -p C++ tabanlı exe uzantılı uygulama oluşturmaya yarar -B sgl C tabanlı grafik kütüphaneli ve grafik arabirimli matlab uygulama dosyaları oluşturmaya yarar. -B sglcpp C++ tabanlı grafik kütüphaneli ve grafik arabirimli matlab uygulama dosyaları oluşturmaya yarar. Örnek: Temiz ekrana Đyi Günler! Mesajı yazdıran bir programı DOS ortamında çalışabilir biçime getiren işlemleri yapalım. Çözüm: Önce aşağıdaki m dosyasını yazalım. clc; disp('Đyi Günler!'); Bu dosyayı iyigun.m adıyla work dizinine kaydedelim.Komut satırında iyigun yazıp (enter) tuşuna basarak çalışma sonucunu görebiliriz. Bu dosyayı mcc -m iyigun komutuyla derlemeye çalıştığımızda; aşağıdaki hata mesajlarını görürüz: 31 Hasan KORKMAZ- Đzmir Fen Lisesi Matematik Öğretmeni