You are on page 1of 54

sin|sqrt|quad|trapz|find|plot|fprintf|

all|any|fminbnd|diff|sum|ode|cos|tan
|acos|atan|feval|factorial|exp|log|abs
|round|rand|linspace|median|std|imr
ead|fopen|imwrite|eye|zeros|ones|pl
ot|fplot|ceil|surf|mesh|plot3|contour
|sin|sqrt|quad|trapz|find|plot|fprintf|
all|any|fminbnd|diff|sum|ode|cos|tan
MATLAB
|acos|atan|feval|factorial|exp|log|abs
|round|rand||linspace|median|std|im
read|fopen|imwrite|eye|zeros|ones|p
lot|fplot|ceil|surf|mesh|plot3|contour
|sin|sqrt|quad|trapz|find|plot|fprintf|
all|any|fminbnd|diff|sum|ode|cos|tan
|acos|atan|feval|factorial|exp|log|abs
|round|rand|linspace|median|std|imr
ead|fopen|imwrite|eye|zeros|ones|hl

nsz
Matlabn ok geni kullanm alan olmakla birlikte en ok ;grnt ileme, yapay sinir
alar,sinyal ileme, optimizasyon, veri elde etme, veritaban, szge tasarm, bulank mantk, sistem
kimliklendirme gibi alanlarda kullanlmaktadr. Bu kitapkta temel matlab kurallar anlatlacak ve
rnekler verilecektir. Ayrca elde edilen rneklerden grafikler karlarak, grafik izmek de
anlatlacaktr. Matlabda komut yazarken yaplan hatalardan bahsedilecektir. ncelikle matlabn ne
olduu, nasl alt anlatlacak okuyucunun kolayca anlamasna ve uygulamasna yardmc olacaktr.
Bu tutorial Ali Cafer grbz hocamn istei zerine yazdm. Tutorial yazmak iin ilk bata
matlab rendim. Tutorial iin 4-5 tane kitab taradm. Gerekli sorular zdm cevaplarn kontrol
ettim. Kendime gre uygun olanlar buraya ekledim. Genel olarak Amos Gilatn kitabn kullandm.
Onun kitabndaki zml ve zmsz rneklerin uygun olanlarn ekledim, bazlarn deitirdim.
Baka kitaplardan da rnekler eklemeye gayret ettim. Anlayacanz baya sk hazrlandm. Umarm
yardmc olur.
Kitaptaki rnekleri kontrol eden, imlasn dzelten, nerilerini eksik etmeyen arkadalarma
ok teekkr ediyorum. stek ve nerileriniz iin mail adresim aadadr.

Osman Tutaysalgr
osmantutaysalgir@hotmail.com

indekiler
Matlab nedir?. .........................................................................................................................................4
Matlaba giri ...........................................................................................................................................4
Matematiksel ifadeler ..........................................................................................................................4
Diziler ve Matrisler ..................................................................................................................................6
Matrislerle lgili Sorular ..................................................................................................................... 10
Matrislerde Matematiksel ilemler ................................................................................................... 13
Matrislerde lineer denklem zm ................................................................................................. 14
Matris elemanlar ile yaplan ilemler ............................................................................................... 15
Vektr analizleri iin matlab fonksiyonlar ........................................................................................ 15
Script dosyalar............................................................................................................................17
2 boyutlu grafikler ................................................................................................................................ 19
Birden fazla grafii ayn sayfa zerine izdirmek............................................................................... 22
Grafik zellikleri ................................................................................................................................. 23
Farkl grafikleri ayn sayfaya ayr ayr izdirmek ................................................................................ 24
Fonksiyon dosyalar ve Program yazma ............................................................................................... 25
Fonksiyon dosyalar ........................................................................................................................... 25
Fonksiyon dosyalar ile script dosyalar arasndaki farklar ................................................................ 27
Koul ifadeleri .................................................................................................................................... 32
Dngler ........................................................................................................................................... 32
3 boyutlu grafikler ................................................................................................................................ 37
izgi grafikleri .................................................................................................................................... 37
Mesh ve Yzey grafikleri .................................................................................................................... 38
Fonksiyonlarda saysal zmleme(Nmerik analiz)........................................................................... 44
Tek deikenli fonksiyonlarn zm ............................................................................................... 44
Maksimum ve Minimum deer bulma .............................................................................................. 46
ntegral zme ................................................................................................................................... 46
Adi diferansiyel denklem zm ..................................................................................................... 48
Genel sorular......................................................................................................................................... 51
Kaynaka ............................................................................................................................................... 54

Matlab nedir
MATLAB program, ilk olarak 1985 ylnda C.B. Moler tarafndan gelitirilmi olup, teknik
hesaplamalar ve matematiksel problemlerin zm ve analizi iin tasarlanm bir yazlm gelitirme
aracdr. Matlabn kullanld alanlar

Matematiksel lm ve Hesaplamalar (Maths and Computation)


Algoritma Gelitirme (Algorithm Development)
Veri Elde Etme (Data Acquisition)
Grnt leme (Image Processing)
Saysal aret leme (Signal Processing)
Szge Tasarm (Filter Design)
Dalgacklar (Wavelets)
Yapay Sinir Alar (Artificial Neural Networks)
Veritaban (Database)
optimizasyon (Optimization)
Modelleme ve Simlasyon (Modeling, Simulation)

MATLABin nasl bir yazlm olduunu anlamak iin onu ok gelimi zellikleri olan,
programlanabilen bir bilimsel hesap makinesine benzetebiliriz. MATLABde yazlan programlar ,
MATLABin kendine zg dili kullanlarak yazlr ve MATLAB iinden altrlr. Ayrca yazdnz
programlar DLL ve EXE olarak oluturabildiiniz gibi C/C++ kodlarna da evirebilirsiniz.

Matlaba giri

Bir komut yazp enter tuuna basldnda komut altrlr.Komut altrlrken sadece son
komut altrlr.Daha nde altrlan komutlarda herhangi bir deiiklik olmaz.
Bir satrda birden fazla komut yazlrken komutlar arasna virgl konur.Yazlan komut
altrldnda verilen kt yazlan komuta gre soldan saa doru yer alr.
altrlm komut zerinde deiiklikler yaplmaz.Ancak o komutu tekrar yazp dzeltmeler
yaplabilir.
Daha nce yazlan bir komuta yn tular ile yeniden ulalabilir.
Eer yazlacak komut 1 satra smyorsa komutun sonuna 3 nokta koyarak bir alt satra inilir
ve yazmaya devam edebilir.
Eer bir komutu yazldktan sonra noktal virgl konulursa yazdmz komutun kts ekrana
verilmez.
Yazdmz programla ilgili bir yorum eklenmek isternirse yazlanlardan nce % semboln
eklenir.Bu sembol sayesinde matlab yazlan yerleri altrmaz.
Clc komutu sayesinde matlab daha nce komut satrnda yazlan verileri siler.

Matematiksel ifadeler
lem

Sembol

Toplama

karma

arpma

Sadan Blme

Soldan blme

st alma

Kk alma

sqrt(x)

Exponansiyel

exp(x)

Mutlak deer

abs(x)

Doal logaritma (ln)

log(x)

10 tabanl logaritma

log10(x)

Faktoriyel

factorial(x)

Sins

sin (x)

Cosins

cos(x)

Tanjant

tan(x)

Kontanjant

cot(x)

Yukardaki x deerleri iin hesaplanacak deerler yazlacaktr.


Trigonometrik fonksiyonlar iin x deerleri radian cinsinden yazlmaldr. (r: pi/5 )

Matlabtaki ncelik sras da normal matematikte kullanld gibidir.


1.
2.
3.
4.

Parantezler (i ie gemi parantezlerde ise en iteki parantez)


sl ifadeler
arpma ve blmeler
Toplama ve karma

Eer ayn ncelie sahip ilemler var ise ilem soldan saa doru yaplr.

Matlab, elde edilen ifadeleri yuvarlamak iin fonksiyonlara sahiptir.


Fonksiyon

Aklama

round(x)

En yakn deere yuvarlar

fix(x)

Sfra daha yakn olan deere doru yuvarlar

ceil(x)

Sonsuza doru yuvarlar

floor(x)

Eksi sonsuza doru yuvarlar

rem(x)

Blmden kalan deeri verir

rnekler:
>> x=sin(pi/6)
x=
0.5000
>> round(x)
ans =
1
>> fix(x)
ans =0
y=1/3
y=
0.3333
>> ceil(y)
ans =
1

Diziler ve Matrisler
Matris tanmlarken;
Dizi_ad=*1.satr;2.satr;.;son satr +
komutu kullanlr.
Dizi tanmlarken, iimizi kolaylatran komutlarda vardr.
x=[0:1:15]

(ifadesini kullanarak lineer artan bir kt elde edilir)

x=
Columns 1 through 14
0

9 10 11 12 13

Columns 15 through 16
14 15
6

linspace(10,15,6)

(bu komutla 10 ile 15 arasnda dorusal


artan bir dizi elde ederiz.)

ans =
10 11 12 13 14 15

zel matrisler oluturmak iin matlabtaki kodlar kullanlabilir.


Komut
zeros(m,n)
eye(m)
ones(m,n)

Matris ad
m satr n stn 0 matrisi oluturur
m*m birim matsi oluturur.
m satr n stnluk bir matrisi oluturur.

>> eye(3)
ans =
1
0
0

0
1
0

0
0
1

>> zeros(2,3)
ans =
0
0

0
0

0
0

>> ones(3,2)
ans =
1
1
1

1
1
1

Bir matrisin istediimiz herhangi bir elemann geri arlabilir. Matrisin arlan elemanlar ile
matematiksel ilemler yapmak iin kullanlabilir.Matris transpoze ilemine de rnekte yer
verilmitir.
>> mtrs=[10 11 14 16;25 36 33 28;0 12 19 11]
mtrs =
10 11 14 16
7

25 36 33 28
0 12 19 11
>> mtrs(2,4)+mtrs(1,3)*mtrs(1,1)
ans =
168
>>c=mtrs'

(mtrs matrisinin transpoze alnp c deikenine atanmtr.)

c=
10
11
14
16

25 0
36 12
33 19
28 11

Matriste sadece istediimiz elemanlar tek tek deil bir satr bir stunu yada belli satr yada stn
arasndaki deerleri alarakta yeni vektr ve matrisler oluturabiliriz.
Bir matris iin;
A(:,n) n.stun elemanlarn ekrana verir.
A(m,:) m. satr elemanlarn ekrana verir
A(:,m:n) m. stun ile n.stun arasn ekrana verir.
A(m:n,: ) m ile n. Satr arasn ekrana verir.
A(m:n,a:b) m ile n. satr ile aile b. Stun aras deerleri ekrana verir.

Bir matris olutururken, oluturulan vektrler yardm ile de matrisler oluturulabilir.


>> mtrs=[14:-1:8;ones(1,7);4:2:16;zeros(1,7)]
mtrs =
14
1
4
0

13 12 11 10 9 8
1
1 1
1 1 1
6
8 10 12 14 16
0
0 0 0
0 0

>> mtrs(3,5)
ans =
12

(3. Satr 5 sutun elemann iaret ediyor)

>> mtrs(:,5)

(5. Sutun elemanlarn iaret ediyor )

ans =
10
1
12
0
>> mtrs(4,:)
ans =
0 0 0

(4. satr elemanlarn iaret ediyor )


0

>> mtrs(3:4,5:7)

0
(3 ile 4 satr ile 5ile 7. Sutun elemanlaryla yeni bir matris oluturuyor)

ans =
12 14 16
0 0
0

Matrislere yeni elemanlar da eklenebilir.Bu ilemi yaplrken , linspace komutunu ve lineer artan
ktlar oluturmak iin kullandmz metot da kullanlabilir.Ayrca matrislerden elemanlar da
silinebilir.Ancak eleman eklerken de silerken de matris tanmn bozulmamas gerekmektedir.
mtrs=[14:-1:8;ones(1,7);4:2:16;zeros(1,7)]
mtrs =
14
1
4
0

13 12 11
1
1
1
6
8 10
0
0
0

10 9 8
1
1 1
12 14 16
0
0 0

>> mtrs(5,:)=linspace(10,16,7)

(5. Satra eleman ekleyeceiz)

mtrs =
14 13 12 11 10 9 8
1
1 1 1
1 1 1
4
6 8 10 12 14 16
0
0 0 0
0 0 0
10 11 12 13 14 15 16
>> mtrs(:,8)=*0:3:9+

(satr says ile matrisin boyutlar uyumad iin


hata verdi)
??? Subscripted assignment dimension mismatch.
>> mtrs(:,8)=[0:3:12]

(8.sutuna elemanlar ekleyeceiz)

mtrs =
14 13 12 11 10 9 8 0
1
1
1 1 1
1 1 3
4
6
8 10 12 14 16 6
0
0
0 0 0 0 0 9
10 11 12 13 14 15 16 12
>>mtrs(:,1:3)=*+
(mtrs matrisinden 1.ve 3. Satrlar ve aradaki satrlar sildi.)
mtrs =
11 10 9 8 0
1
1 1 1 3
10 12 14 16 6
0 0 0 0 9
13 14 15 16 12
>> mtrs(2:4,1:3)=*+

(Byle bir yazm hata verir ; nk silinen yerlerin dndaki elemanlar


matris tanmn bozuyor )
??? Subscripted assignment dimension mismatch.

Matrislerle ilgili sorular


Soru 1
1

1)Yandaki matrisi matris ilemlerini kullanarak


oluturunuz.

zm
A=ones(3)
A=
1
1
1

1
1
1

1
1
1

>> B=5*ones(2)
B=
5 5
5 5
>> A(4:5,4:5)=B

(A matrisine B matrisini ekledik Matlab otomatik olarak bo kalan


yerleri 0 lar ile doldurdu)
10

A=
1
1
1
0
0

1
1
1
0
0

1
1
1
0
0

0
0
0
5
5

0
0
0
5
5

Soru 2
Aadaki matrisi matris komutlarn kullanarak oluturunuz.
2
2
3
0
4
4
4

2
2
3
0
4
4
4

2
2
3
0
7
7
7

0
0
0
1
0
0
0

5
5
5
0
9
9
9

zm
a=eye(7)
a=
1
0
0
0
0
0
0

0
1
0
0
0
0
0

0
0
1
0
0
0
0

0
0
0
1
0
0
0

0
0
0
0
1
0
0

0
0
0
0
0
1
0

0
0
0
0
0
0
1

>> a(2:3,1:3)=3*ones(2,3)
a=
1
3
3
0
0
0
0

0
3
3
0
0
0
0

0
3
3
0
0
0
0

0
0
0
1
0
0
0

0
0
0
0
1
0
0

0
0
0
0
0
1
0

0
0
0
0
0
0
1

>> a(1:2,1:3)=2*ones(2,3)

11

5
5
5
0
9
9
9

5
5
5
0
9
9
9

a=
2
2
3
0
0
0
0

2
2
3
0
0
0
0

2
2
3
0
0
0
0

0
0
0
1
0
0
0

0
0
0
0
1
0
0

0
0
0
0
0
1
0

0
0
0
0
0
0
1

>> a(1:3,5:7)=5*ones(3,3)
a=
2
2
3
0
0
0
0

2
2
3
0
0
0
0

2
2
3
0
0
0
0

0
0
0
1
0
0
0

5
5
5
0
1
0
0

5
5
5
0
0
1
0

5
5
5
0
0
0
1

>> a(5:7,5:7)=9*ones(3,3)
a=
2
2
3
0
0
0
0

2
2
3
0
0
0
0

2
2
3
0
0
0
0

0
0
0
1
0
0
0

5
5
5
0
9
9
9

5
5
5
0
9
9
9

5
5
5
0
9
9
9

>> a(5:7,1:3)=7*ones(3,3)
a=
2
2
3
0
7
7
7

2
2
3
0
7
7
7

2
2
3
0
7
7
7

0
0
0
1
0
0
0

5
5
5
0
9
9
9

5
5
5
0
9
9
9

5
5
5
0
9
9
9

>> a(5:7,1:2)=4*ones(3,2)
a=
2
2
3

2
2
3

2
2
3

0
0
0

5
5
5

5
5
5

5
5
5
12

0
4
4
4

0
4
4
4

0
7
7
7

1
0
0
0

0
9
9
9

0
9
9
9

0
9
9
9

Matrislerde Matematiksel lemler


Matlabta matris ilemleri 2 ekilde yaplabilir.Birincisi; matris elemanlaryla yaplan ilemler, dieri
ise lineer cebir derslerinde retilen matrisler aras ilemlerdir.Matrisler arasndaki ilemler de dikkat
edilmesi gereken nokta yaplan ilemlerin lineer cebir kurallarna uymas gerekliliidir.
>> vktr1=[1 3 5;2 4 5;6 8 10];
>> vktr2=[1 4 8;4 16 31;57 24 8];
>> vktr1+vktr2
(1. Ve 2 matrisin boyutlar birbirine eit)

ans =
2 7 13
6 20 36
63 32 18
>> vktr1*vktr2

(1. Matrisin stn says ile 2. Matrisin satr says birbirine eit)

ans =
298 172 141
303 192 180
608 392 376
>> A=[1 2 3];
>> B=[1;2;3];
>> C=A*B
C=
14

Bir matrisin tersini ve determinantn almak iin matlabta baz komutlar vardr. Matrisin tersini almak
iin inv(matris ad),determinantn almak iin det(matris ad) komutlar kullanlr.

Matrislerle Lineer Denklem Sistemleri zm


Matrislerde blm ilemi sadan ve soldan blme ilemi olarak ikiye ayrlr.
a)soldan blme ilemi:
Soldan blme ilemi genel olarak
matrisleri stn matrislerdir.)

AX=B eklindeki matrislerin zm iin kullanlr(Burada X ve B

13

1 . . = 1 .
= 1 .
= 1 \
bu ilem matlabta soldan blme(ters blme) ilemi ile gerekletirilir.
b)sadan blme ilemi:
sadan blme ilemi XA=B tipindeki matrislerin zmnde kullanlr.(Burada X ve B satr
matrisleridirler.)
. . 1 = . 1
= . 1
= /

Soru:
Aadaki lineer denklemin kklerini bulunuz.
3x+2y-9z=-65
-9x-5y+2z=16
6x+7y+3z=5
>> A=[3 2 -9;-9 -5 2;6 7 3];
>> B=[-65;16;5];
>> A\B

(B ve X stn matrisleridir)
(Soldan blme ilemi ile zm)

ans =
2.0000
-4.0000
7.0000
>> B=[-65 16 5];
>> A=[3 -9 6;2 -5 7;-9 2 3+;
>> B/A

(lk satr xi, 2. satr yyi,3. Satr zyi gsteriyor.)


(Sadan blme ilemi ile zm)

ans =
2.0000 -4.0000 7.0000

Matris elemanlaryla yaplan ilemler


Sembol
.*
./
.\
.^

Aklama
arpm
Sadan blme
Soldan blme
st alma

14

Matlab, yukarda verilen semboller kullanlarak matrislerdeki elemanlarn hepsini ayn ileme
sokar.Eer ileme giren matrisler ise her eleman kar taraftaki ayn elemanla ileme sokar.
x=linspace(0,5,3)
x=
0 2.5000 5.0000
>> y=linspace(6,11,3)
y=
6.0000 8.5000 11.0000
>> x.*y
ans =
0 21.2500 55.0000
>>x.^2+2
ans =
2.0000 8.2500 27.0000

Vektr analizleri iin matlab fonksiyonlar


Fonksiyon
mean(x)
sum(x)
sort(x)
median(x)

std(x)
det(x)
dot(x,y)
cross(x,y)
nv(x)
max(x)
min(x)
rand(m,n)

Aklama
Vektrdeki elemanlar ortalama deerlerini bulur
Vektrdeki elemanlarn toplamlarn bulur.
Vektrdeki elemanlar artan srayla sralar.
Vektrdeki orta eleman bulur eer ift sayda
eleman varsa ortadaki 2 eleman toplar 2 ye
bler
Vektrdeki elemanlarn standart sapmasn
hesaplar
Kare matrisin determinantn hesaplar
Vektrlerin skalar arpmn bulur
Vektrlerin vektrel arpmn bulur. Vektrler 3
er elemana sahip olmak zorundadr.
Kare matrisin tersini bulur.
Vektrdeki en byk eleman verir
Vektrdeki en kk eleman verir
M satr n stnluk rastgele matris
oluturur.matris elemanlar 0-1 aras saylardan
oluur.

15

Soru
1)

=0 1\(2

+ 1)(2 + 2)

Yukardaki serinin deerini


a)n=50
b)n=500
c)n=5000
deerleri iin hesaplaynz.bu hesaplamay yaparken de bir 0 dan balayan, art oran bir olan bir
vektr oluturun.Oluturduunuz bu vektrn her elemanna yukardaki forml uygulayarak yeni
bir vektr oluturun.Toplam deeri ise matlab fonksiyonlarn kullanarak bulunuz.
n=50 iin zm aadadr.

>>n=0:1:50;
>> v=1./((2.*n+1).*(2.*n+2));
>> sum(v)
ans =
0.6883

2) Aagdaki matrisi iin;


a)matrisin 2. satrnn seiniz.
b)matrisin 2. satrnn elemanlar toplamn bulunuz.
c)2. ile 3. satrnn vektrel arpmlarn bulunuz.
d)her sutundaki en kk ve en byk elemanlar bulunuz.

18

-5

-2

>> mtrs=[0 8 18;3 6 9;-5 -2 0];


>> str2=mtrs(2,:);
>> str3=mtrs(3,:);
>> cross(str2,str3);

(2. satr setik ve str2 ye atadk.)


(3. satr setik ve str3 e atadk.)
(2 vektrn vektrel arpmn bulduk.)
16

ans =
18 -45 24
>> sum(str2);

(2.satrn eleman toplamlarn bulduk.)

ans =
18
>> stn1=mtrs(:,1);
(1.stunu setik ve stn1 e atadk)
>> stn2=mtrs(:,2);
(2.stunu setik ve stn2 e atadk)
>> stn3=mtrs(:,3);
(3.stunu setik ve stn3 e atadk)
>> min(stn1),max(stn1),min(stn2),max(stn2),min(stn3),max(stn3)
ans =
-5
ans =
3
ans =
-2
ans =
8
ans =
0
ans =
18

Script Dosyalar
Matlabta bir script dosyas amak iin file->new->script yolu izlenir.

Script dosyalar notlar:

Script dosyasndaki kodlar eer bir kt veriyorsa, komut satrnda kt verir.


Script dosya sisteminin avantaj yazlan kodlar stnde sonradan dzenleme yapabilme
olana vermesidir.
Script dosyasn altrmak iin dosyann ismini yazmak yeterli olacaktr.
Eer deikenler ve deerleri script dosyasnn ierisinde tanmlanm ise ve deerler
deitirilmek isteniyorsa, script dosyasnn ierii deitirilmelidir.
Eer yaplacak i script dosyasnda tanmlanm ve deikenlerin deerleri komut satrndan
alnmak isteniyorsa, script dosyasndaki deikenlerle komut satrndaki deikenlerin isimleri
ayn olmaldr.
Script dosyasna input komutunu ekleyerek kullancdan deerleri istenilebilir.
Dar k vermek iin disp ve fprintf fonksiyonlarn kullanrz.

nput komutu:
nput komutu sayesinde belirlediimiz bir deikene deerini sonradan atanabilir.

17

Deiken_ad=input(kullancnn grecei mesaj yazn )


Disp komutu:
Disp komutu sayesinde script dosyasnda elde ettiimiz sonucu komut ekrannda gsterilebilir.
Disp(deiken ad) yada disp(kullancnn grecei mesaj )
disp komutunda hem deiken hem de mesaj ayn anda gsterilemez. fprintf komutundan temel
ayrld nokta budur.
Fprintf komutu:
fprintf komutu mesaj ve elde edilen verinin ekrana yazlmas yada bu verilerin bir dosyaya
yazdrlmas srasnda kullanabilir.Bu komut sayesinde elde edilen k gerekli durumlarda daha sonra
erimek iin bir text dosyasna yazabilir.
fprintf( text. %g.%g.%f. ,deiken ismi1,deiken ismi2,..)
% g,f ksm deikenin yazm formatn gsteriyor.3 nemli gsterim aadadr.
%f:stl gsterim (kk harflerle)
%g:%fli gsterimin ksas
%i:tamsay olarak gsterim.
fprintf komutu vektrsel bir komuttur.Eer komutun barndrd deiken bir vektr yada matris ise
komut kendini vektrdeki elemanlar adedince tekrarlar.
fprintf komutu ile bir dosyaya veri kaydetme
Bir veriyi bir dosyaya kaydetmek iin nemli adm vardr.
1)fopen komutu ile bir dosya alr.
Bir dosyaya veriyi yazmadan nce o dosyay amamz gerekmektedir.
Dosya_deikeni=fopen(dosya ad,dosya iin gerekli izin)
Dosya deikeni alan dosyann matlab tarafndan alglanmasn salar.
Dosya iin gerekli izin;
r:dosyay sadece okumak iin aar.
w:dosyaya veri eklemek iin aar.eer dosya zaten mevcutsa ierisindeki veriler silinir.
a:wile ayndr sadece dosyann iindeki veri silinmez yeni veri eski veriye eklenir.
2)fprintf komutu ile alm dosyaya veriyi yazma
fprintf(dosya deikeni, text. %g.%g.%f. ,deiken ismi1,deiken ismi2,..)

3)Alm dosyay fclose komutu ile kapatmak:


fclose(dosya deikeni)
18

Sorular:
1)

0 dan 100 km kadar olan aralktaki kilometre deerlerini mile eviren bir script dosyas
yaznz.Elde ettiimiz verileri bir dosyaya kaydedelim.
vkm=0:5:100;
vmil=vkm./1.609;
x=fopen('mil_karst.txt','w');
fprintf(x,'mil
kilometre \n');
tablo=[vmil;vkm];
fprintf('\n')
fprintf(x,'%8.2f
%8.2f \n',tablo);
fclose(x);

(%8.2f virglden sonra 2


basamak gsterir.)

2) 0-30 derece aras sins deerleri iin bir vektr oluturun ve bu deerleri bir dosyaya
kaydedin.

aci=0:30;
radyan=aci.*pi./180;
degerler=sin(radyan);
tablo=[aci;degerler];
x=fopen('sins deerleri.txt','w');
fprintf(x,'a deerleri sins deeri
fprintf(x,'%8.2f \n',tablo);
fclose(x);

');

Matlabta Grafik izimi:


Matlabta 2 boyutta ve 3 boyutta olmak zere 2 trl grafik izimi vardr.

2 Boyutta Grafik

plot komutu ile matlabta 2 boyutta izim mmkndr.


plot(vektr1,vektr 2,izgi belirteleri)

izgi belirtelerinde; izgi trn,rengini ve iaretleme tipini belirlenir.izgi belirteleri zellikleri


istee baldr.Matlabta ayn pencerede birden fazla grafik izilirse matlab otomatik olarak farkl
renkte ve ekilde grafikler izer.
izgi belirteleri:
izgi tr;
izgi tr

Belirte tr
19

Solid
Dashed
Dotted
Dash-dot
izgi rengi;

-:
-.

Belli bal renkler iin tablo;


izgi rengi
Krmz
Yeil
Mavi
Sar
Siyah

Belirte tr
r
g
b
y
K

aretleme tipi;
aretleme tipi ayn sayfadaki birden fazla grafik izilirse grafikleri ayrt etmek iin kullanlabilir.
aretleme tipi
Art iareti
Yuvarlak
arp

Belirte
+
o
*

aretleme tr
Kare
Elmas
Nokta

Belirte
s
d
.

Grafik izimleri baz rnekler:


>> x=1:15;
>> y=100*rand(1,15)
y=
81.4724 90.5792 12.6987 91.3376 63.2359 9.7540 27.8498 54.6882 95.7507 96.4889
15.7613 97.0593 95.7167 48.5376 80.0280
>> plot(x,y,'--ro')

20

100
90
80
70
60
50
40
30
20
10
0

10

15

>> x=[-3:0.05:5];
>> y=sin(-2*x).*cos(4*x);
>> plot(x,y)

1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-3

-2

-1

Eer x vektrnn art orann artarsa, elde edilmek istenen grafikten uzaklalr.
21

X=[-3:0.3:5];

1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-3

-2

-1

Elde edilen grafikler, edit -> copy figure dan kopyalayarak istenilen yerde kullanlabilir.

fplot

komutu ile de grafikler izilebilir.fplot komutu ile plot komutu arasndaki fark; fplot komutu

ile grafik izerken,izilecek grafiin limitleri ve izilecek grafiin komut iinde tanmlanmasdr.
fplot(fonksiyon,limitler,izgi belirteleri)
rnek olarak;
fplot(sin(-2*x).*cos(4*x),*-3 3])

Birden fazla grafii ayn sayfa zerine izmek;


Matlabta ayn figrn stne birden fazla grafik izmeninbirden fazla yolu vardr.Ancak yalnzca 2
yoldan bahsedilecektir.
1)plot komutunun iine birden fazla eri yazlrsa komut ayn figrn iine birden fazla grafii
yazacaktr.
2)hold on v e hold off komutlarn kullanarak birden fazla grafii ayn figre izebiliriz.
rnek
>> x=[-2:0.01:4];
>> y=3*x.^3-26*x+6;
>> yd=9*x.^2-26;
>> ydd=18*x;
>> plot(x,y,'-b',x,yd,'--r',x,ydd,':k')
%2. Yol
%bir script dosyas iinde ayn rnek
x=[-2:0.01:4];
y=3*x.^3-26*x+6;

22

yd=9*x.^2-26;
ydd=18*x;
plot(x,y,'-b')
hold on
plot(x,yd,'--r')
plot(x,ydd,':k')
hold off

120
100
80
60
40
20
0
-20
-40
-2

-1

Bir grafiin zelliklerini deitirme:


xlabel ve ylabel komutu:
xlabel(yaz)
ylabel(yaz)
X ve y eksenlerine isim verir
title komutu
title(yaz)
Grafie bir balk ekler.
legend komutu
legend(yaz1,yaz2,..pos)
Grafie bir gsterge ekler.pos ise bu gstergenin yerini belirler(-1,4 aras bir say)
text komutu
text(x,y,yaz)
Grafie istediimiz yazy eklememizi salar.x,y lerde yaznn grafikteki yerini gsterir.
axis komutu
axis([xmin,xmax,ymin,ymax])
Grafikteki x ve y deerlerinin maximun ve minimumunu ayarlar.

grid komutu
grid on
23

grid off
Grafie gridler ekler ve karr.
rnek:
%script dosyasna yazlmtr.
x=[10:0.1:22];
y=95000./x.^2;
xd=[10:2:22];
yd=[950 640 460 340 250 180 140];
plot(x,y,'-');
xlabel('UZAKLIK (CM)')
ylabel('DDET (LUX)')
title('Uzakla Bal Olarak Ik Younluu')
axis([8 24 0 1200])
text(14,700,'Teoriyle Deneyin Karlatrlmas')
hold on
plot(xd,yd,'--ro')
legend('Teori','Deney',0)
hold off

Uzakla Bal Olarak Ik Younluu


1200
Teori
Deney
1000

DDET (LUX)

800
Teoriyle Deneyin Karlatrlmas
600

400

200

10

12

14

16
18
UZAKLIK (CM)

20

22

24

Matlabta baka trl grafik izimleri de mevcuttur. Ama onlardan bahsedilmeyecektir.


Farkl grafikleri ayn sayfaya ayr olarak izdirme:
subplot(x,y,z) eklinde kullanlr.
Burada;
x = satr says
24

y = stun says,
z = indeks numaras'dr.

Sorular:
1)Depremin Richter leine gre bykl;
E

B=log10

10 4,4

B:byklk E:Depremden salnan enerji


Enerjinin bykle gre grafiini iziniz.(Byklk deerini 3 5 alnz.)
m=[4:0.01:5];
e=10.^(3/2.*m+4.4);
plot(m,e)
title('Deprem Byklne Gre Enerji Salnm')
grid on

Grafiin ok kk bir aralkta izilmesini nedeni art orannn ok yksek olmasndandr.

11

x 10

Deprem Byklne Gre Enerji Salnm

7
6
5
4
3
2
1
0

4.1

4.2

4.3

4.4

4.5

4.6

4.7

4.8

4.9

Matlabta Fonksiyon Dosyalar ve Program Yazma


Matlabta Fonksiyon Dosyalar:
y=f(x) tipindeki matematiksel ifadeleri matlabta birer fonksiyon dosyas iinde yazmak daha
kullanl bir ifade ekli olacaktr.Bu sayede; yaplacak ilemin birok kez tekrarlanma zahmetine
gerek kalmaz .Fonksiyon dosyalar ile matlabtaki sin(x),sqrt(x),median(x) gibi komutlar
oluturabilir.Oluturulan komutlar gerekli olan yerlede kullanlabilir.
25

Matlabta fonksiyon dosyas amak iin script dosyalar ile ayn yol izlenir.Script dosyalar ile
aralarndaki farklar ilerleyen blmlerde anlatlacaktr.(file->new->script).
Matlabta fonksiyon dosyalarn alma mant; kendilerine verilen girdileri bir ileme sokan
ve bu ilem sonucunda oluan verileri de ka vermektir.
Fonksiyon Dosyalarnn Yaps:
Fonksiyon dosyalarnda;
o Fonksiyon tanmlama satr
o Girdi ve kt deikenleri
o Yardm satr(istee bal)
o Fonksiyon gvdesi
olmaldr.
Fonksiyon tanmlama satr:
Fonksiyon tanmlama satr her fonksiyon iin olmaldr.fonksiyon tanmlama satrnda
fonksiyonun ismi,giri ve k deikenlerinin sras ve says belirtilmelidir.
function *k deikenleri+=fonk_ismi(giri deikenleri)
eklinde fonksiyon tanmlama satr yazlabilir.
Girdi ve kt deikenleri:
Fonksiyonun girdi deikenleri genelde en az bir tanedir.Eer birden fazla deiken varsa;
deikenler virglle ayrlr.Eer girdi deikenleri vektrler yada matrislerse; fonksiyon ilemleri
lineer cebir kurallarna gre yaplmaldrlar.Fonksiyon kt deikenleri eer yalnzca bir tane ise
bracket*+ kullanmaya gerek yoktur.
Yardm satr:
Yardm satr % iareti ile balar.% iareti ile balaynca ,matlab buradaki yazlm herhangi bir
kodu ileme almaz.Yardm satrnn amac kullancya fonksiyonla ilgili bilgiler vermektir.Kullanc
komut satrna help fonksiyon_ad yazdnda bu yardm satr ekrana verilecektir.
Fonksiyon gvdesi:
Fonksiyon gvdesinden fonksiyona yaptrmak istediimiz ileri tanmlarz.Fonksiyon dosyalar
kullanlmadan nce kaydedilmek zorundadr.Kayt iin file mensnden save as seenei
kullanlabilir.Kayt ismi iin fonksiyon ad ile ayn isim tercih edilmelidir.

rnek:
function y= etu (x)
%bu fonsiyon ile y=f(x)cinsinden bir ifadeyi fonksiyon kullanarak
%hesaplayacaz.fonksiyonun iine hem matris hemde skalar bir ifade
%alabiliriz.
y=(x.^2.*2.^(x))./(2.*x);

Komut satrna
>> x=[-1 1 2 3 4]

26

x=
-1

>> etu(x)
ans =
-0.2500 1.0000 4.0000 12.0000 32.0000
>> help etu
bu fonsiyon ile y=f(x)cinsinden bir ifadeyi fonksiyon kullanarak
hesaplayacaz.fonksiyonun iine hem matris hemde skalar bir ifade
alacaz.

Fonksiyon dosyas ile script arasndaki benzerlikler ve farklar:


Her iki dosya trde .m dosya formatnda kaydedilir.
Fonksiyon dosyas ilk satrnda tanmlama satrnn ierir.
Fonksiyon dosyas bir girdi alr ve onun deerini kt olarak geri verir.
imdiki rnekte hem script hem de fonksiyon dosyalarn kullanlacaktr.
Script dosyasnn ismini matlatabki komut satrna yazarsak komutlar almaya balayacaktr.
rnek
Fonksiyon dosyas
Function x=FtoC(s1)
%bu fonksiyon fahrenayt deerini santigrat dereceye evirir.
x=5*(s1-32)./9;

Script dosyas
s1=input('fahrenatn ilk deerini giriniz:');
s2=input('dier fahrenayt deerini giriniz');
delta=FtoC(s2)-FtoC(s1);
alpha=input('deiim orann giriniz
');
a1=input('ilk kenar deerini giriniz');
b1=input('2. kenar deerini giriniz');
a2=a1+a1*alpha*delta;
b2=b1+b1*alpha*delta;
alandegisim=b2*a2-a1*b1;
fprintf('bu verilere gre alan deiimi %f',alandegisim);

Fonksiyonlarla ilgili komutlar:


nline fonksiyonu:
ok byk boyutlu programlamada bir fonksiyon dosyas oluturmadan basit programlar
oluturmak iin kullanlr.
sim=inline(matematiksel ifadeler)
eklinde ifade edilir.
27

Eer inline komutunun iinde birden fazla deiken var ise


sim=inline(matematiksel ifadeler,deiken1,deiken2,..)
Yukardaki ifade de deikenlerin srasn yazma nedenimizi rnekte aklayalm.
d=inline('sqrt(rA^2+rB^2-2*rA*rB*cos(aciB-aciA))','rA','aciA','rB','aciB')
d=
Inline function:
d(rA,aciA,rB,aciB) = sqrt(rA^2+rB^2-2*rA*rB*cos(aciB-aciA))
>> x=d(2,pi/6,5,3*pi/4)
x=
5.8461
Feval komutu:
feval komutu ile matlabtaki bir fonksiyonun istediimiz deerini hesaplatlabilir.Eer fonksiyon
birden fazla deiken ieriyorsa girdiler virgllerle ayrlr.feval komutuyla elde ettiimiz deeri bir
deikene de atayabiliriz.
Deiken=feval(fonksiyon ismi,girdi1,girdi2)

>> feval('tan',pi/4)
ans =
1.0000
>> a=feval('etu',4)

(yukarda yazdmz etu fonksiyonu)

a=
32

2)Matlabta Programlama
Matlab bir programn akn dzenlemek iin birok zellie sahiptir.Koul ifadeleri iin if ve switch
komutlar,bir komut dizinini bir ok kez altrmak iinde for ve switch komutlar vardr.
Koul ve mantksal operatrler:
Koul operatr
<
>
<=
>=
==
~=

Aklama
Kktr
Byktr
Kk eittir
Byk eittir
Eittir
Eit deildir
28

>> 7<8
ans =
1
>> a=(2<=3)+(3==60/20)*(6>5)
a=
2
>> A=[18 22 32 21 0 5 6]
A=
18 22 32 21

>> B=[1 3 35 28 -8 7 5]
B=
1

3 35 28 -8

>> A==B
ans =
0

>> A>=B
ans =
1

>> A~=B
ans =
1

>> c=A-B<3
c=
0

29

Mantksal
operatr

smi

aklama

A&B

Ve

A|B

Veya

~A

Deil

Eer 2side doru ise 1


sonucunu verir.Dier
durumlarda 0
Sadece 2 sininde sfr
olduu durumda 0
verir. Dier durumlar
da 1
A ileminin tersini alr

Eer A operatr sfrdan farkl bir say ise doru, eer sfr ise yanl verir.
>> 3&8
ans =
1
>> ~0
ans =
1
>> 38*((18&0)-(~0)+(12|11))
ans =
0
>> 0|0
ans =
0
lem ncelii:
1. Parantezler (i ie parantezlerde en iteki parantezden balayarak)
2. stsel ilemler
3. Mantksal deil(~)
4. Blme ve arpma
5. Toplama ve karma
6. Koul operatrleri
7. Mantksal ve
8. Mantksal veya
Fonksiyon
and(a,b)
or(a,b)
not(a)

Aklama
a&b ile ayn
a|b ile ayn
~a ile ayn
30

xor(a,b)

Eer 2 deiken birbirinden farkl ise 1 verir

all(a)

Eer vektrdeki btn elemanlar sfrdan farkl


ise 1 verir.Eer matris ise kullanlan satrlar
vektr olarak alr

any(a)

Vektrdeki en az bir eleman sfrdan farkl ise 1


verir.Matris iin satrlar vektr olarak alr

find(a)

Vektrdeki elemanlardan sfrdan farkl


olanlarn yerini belirtir.

find(a>x)

Vektr elemanlarnn x ten byk olanlarnn


yerini belirtir.

rnek:
Bir ehirdeki nisan ay scaklk deerleri 2 6 18 1 20 16 11 13 5 10 21 12 11
11 14 15 9 8 22 1 19 20 18 2 6 7 15 3 16 (scaklk deerlerini
round(22*rand(1,30)) ile oluturuldu)
a)scakln 10 dan byk olduu gnler hangileridir?
b)scakl 8 ile 12 arasnda olduu gnler hangileridir?
c)scakln 15 olduu gn says ka tanedir?
>> a=round(22*rand(1,30))
a=
Columns 1 through 24
2 6 18
20 18

1 20 16 11 13

5 10 21 12 11

5 11 14 15

Columns 25 through 30
2 6 7 15 3 16
>> x=find(a>10) (a kknn zm)
x=
3 5 6 7 8 11 12 13 15 16 17 20 22 23 24 28 30
>> y=find((a>=8)&(a<=12)) (b kknn zm)
y=
7 10 12 13 15 18 19
31

8 22

1 19

>> z=(a==15);
>> sum(z)
ans =
2
Koul ifadeleri
Koul ifadeleri; bir komut grubunun altrlp altrlmayacana programn karar vermesini
salayan ifadelerdir.Koul ifadeleri olarak if ile switch-case komutlar kullanlr.
if komutu
if koul ifadesi
elseif koul ifadesi
..
..
..
else
end
eklindedir.
Switch-case komutunu
switch seilecek ifade
case deer1
case deer2
.
.
.
otherwise
end
eklindedir.

Dngler:
for komutu
for a=b:c:d

..
.......
end

(b=a nn ilk deeri,c= art miktar,d=ann son deeri)

eklindedir.
32

while komutu
while durum ifadesi
.
.
.
End
eklindedir.

rnekler
1) Para birimlerini eviren bir program yaznz.
1 tl=1.566 dolar=2.035 euro=2.42 is(ngiliz sterlini)=1.55 ad(Avustralya dolar)
% 1 tl=1.566 dolar=2.035 euro=2.42 is(ngiliz sterlini)=1.55 ad(Avustralya
dolar)
% bu tip bir soruda ilk bata alnan deeri biline bir deere eviririz.
paramik=input('evirilecek para miktarn giriniz');
parabir=input('evirilecek parann uanki birimini girin','s');
cparabir=input('evrilecek birimi girin','s');
hata=0;
switch parabir
case 'tl'
a=paramik;
case 'dolar'
a=paramik*1.566;
case 'euro'
a=paramik*2.035;
case 'is'
a=paramik*2.43;
case 'ad'
a=paramik*1.55;
otherwise
hata=1;
end
switch cparabir
case 'tl'
b=a;
case 'dolar'
b=a/1.566;
case 'euro'
b=a/2.035;
case 'is'
b=a/2.42;
case 'ad'
b=a/1.55;
otherwise
hata=1;
end
if hata
disp('hatal girdi')
else
fprintf('para= %g %s',b,cparabir)
end

33

2)Kp 4000 de byk ve 3 ile blnebilen en kk sayyy bulan bir script dosyas yaznz.
%kp 4000 den byk ve 3 e blnebilen program
x=1;
a=1;
while x==1

if ((a^3)>=4000)&(rem(a,3)==0)
disp('istenilen rakam:\n');
disp(a);
x=0;
else
disp('olmad');
disp(a);
a=a+1;
end
end

3)

1.4t

0t10 sn

v(x)=

14+5 sin(10 ( 10))

10t25 sn

25t35 sn
9
5

9- ( 35)

35t40 sn

Yukarda verilen verilere gre hz ve ivmeyi hesaplayan 2 ayr fonksiyon dosyas ve bu fonksiyonlar
kullanp bir grafik izdiren bir script dosyas yaznz.
Hz fonksiyonu
function x=hiz(t)
%verilen sre iindeki hz ler ve sonucu verilen denkleme gre verir
lt=length(t);
for in=1:lt
if t(in)>0& t(in)<=10
x(in)=1.4*t(in);
elseif t(in)>10&t(in)<=25
x(in)=14+5*sin(pi/10*(t(in)-10));
elseif t(in)>25&t(in)<=35
x(in)=9;
elseif t(in)>35&t(in)<=40
x(in)=9-9/5*(t(in)-35);
end
end

vme fonksiyonu
function a=ivme(t)
lt=length(t);
for in=1:lt

34

if t(in)>0& t(in)<=10
a(in)=1.4;
elseif t(in)>10&t(in)<=25
a(in)=5*pi/10*cos(pi/10*(t(in)-10));
elseif t(in)>25&t(in)<=35
a(in)=0;
elseif t(in)>35&t(in)<=40
a(in)=-9/5;
end
end

Script dosyas
t=0:1:40
v=hiz(t)
subplot(2,1,1);
plot(t,v);
grid
xlabel('zaman');
ylabel('hz');
axis([0 40 0 20]);
a=ivme(t);
subplot(2,1,2);
plot(t,a);
grid
xlabel('zaman');
ylabel('ivme');
axis([0 40 -2 2]);

Grafik kts

20

hz

15
10
5
0

10

15

20
zaman

25

30

35

40

10

15

20
zaman

25

30

35

40

ivme

1
0
-1
-2

35

4)

newyork=[31 26 30 33 33 39 41 41 34 33 45 42 36 39 37 45 43 36 41
37 32 32 35 42 38 33 40 37 36 51 50]
alaska=[37 24 28 25 21 28 46 37 36 20 24 31 34 40 43 36 34 41 42 35
38 36 35 33 42 42 37 26 20 25 31]
Yukarda iki blgenin bir aydaki gnlk scaklklar verilmitir.
a)Her iki blgenin scaklk ortalamalarn bulunuz,
b)Her iki blgede ka gn ortalamann altnda kmtr,
c)Alaskann Newyorktan daha scak olduu gnler ve ka gn olduu,
d)2 blgedeki scakln ayn dolduu gn says,
e)2 blgedeki scaklklarn 32 F kk olduu gnler ve toplam says,
sorular iin bir program yaznz.

format short;
stny=[31 26 30 33 33 39 41 41 34 33 45 42 36 39 37 45 43 36 41 ...
37 32 32 35 42 38 33 40 37 36 51 50];
tanc=[37 24 28 25 21 28 46 37 36 20 24 31 34 40 43 36 34 41 42 35 ...
38 36 35 33 42 42 37 26 20 25 31];
ortny=mean(tny);
ortanc=mean(tanc);
fprintf('newyork sehrindeki ortalama %f',ortny);
fprintf('\n anchorage sehrindeki ortalama %f',ortanc);
ortbny=find(tny<ortny);
sayibuyukny=length(ortbny);
fprintf('\n newyork sehrindeki ortalama alt %f',sayibuyukny);
ortbnanc=find(tanc<ortanc);
sayibuyukanc=length(ortbnanc);
fprintf('\n anchorage sehrindeki ortalama alt %f',sayibuyukanc);
lt=length(tny);
sayi=1;
for in=1:lt
if tanc(in)>tny(in)
x(sayi)=in;
sayi=sayi+1;
end
end
fprintf('\n');
disp('anchorage ehrinin scaklnn newyorktan byk olduu gnler');
disp(x);
fprintf('\n');
disp(' scakln byk olduu toplam sayi ');
disp(sayi-1);
(say deikenini 1 den balattmz iin)
sayi=1;
x=0;
for in=1:lt
if tanc(in)==tny(in)
x(sayi)=in;
sayi=sayi+1;
end
end
fprintf('\n anchorage ehrinin scaklnn newyorka eit olduu
gnler');
disp(x);
fprintf('\n');

36

disp(' scakln eit olduu toplam sayi ');


disp(sayi-1);
sayi=1;
x=0;
for in=1:lt
if tanc(in)<32
x(sayi)=in;
sayi=sayi+1;
end
end
fprintf('\n anchorage ehrinin scaklnn dondurucu olduu vaktler');
disp(x)
fprintf('\n');
disp(' donduruculuun toplam says ');
disp(sayi-1);
sayi=1;
x=0;
for in=1:lt
if tny(in)<32
x(sayi)=in;
sayi=sayi+1;
end
end
fprintf('\n newyork ehrinin scaklnn dondurucu olduu vaktler');
disp(x);
fprintf('\n');
disp(' scakln dondurucu olduu sayi ');
disp(sayi-1);

3 Boyutlu Grafikler:
Matlab iki boyutta olduu gibi boyutta da izim komutlarna sahiptir.

1)izgi Grafikleri:
izgi grafikleri 3 boyuttaki notlarn birletirilmesi ile izilir.
plot3(x,y,z,izgi belirteleri)
Komutu ile izilir.
rnek
>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t);

37

40

30

20

10

0
1
0.5

1
0.5

-0.5

-0.5
-1

-1

>> t = 0:pi/50:10*pi;
>> plot3(sin(3.*t).*cos(t),sin(3.*t).*sin(t),t);

35
30
25
20
15
10
5
0
1

1
0.5

0.5

-0.5

-0.5
-1

-1

2)Mesh ve Yzey Grafikleri:


Mesh ve yzey grafiklerini izerken z=f(x,y) tipindeki denklemleri kullanlr. Burada z; x ve yye bal
bir fonksiyondur.Bu tr grafikler 3 admda tamamlanr. Birinci admda fonksiyonun tanml olduu
dzlem oluturulur. kinci admda fonksiyonu btn dzlemdeki deerleri hesaplanr. nc admda
ise fonksiyon izilir.

38

1.adm:
x=a:b;
y=c:d;
[X,Y]=meshgrid(x,y)
2.adm
Z=f(X,Y);
3.adm
mesh(X,Y,Z) (mesh grafii iin)
surf(X,Y,Z) (yzey grafikleri iin)

rnek:
1)
( 2 . 2 )
= 2
( + 2 )
>> x=0:0.1:5;
>> y=2:0.1:6;
>> *X,Y+=meshgrid(x,y) (1.adm yaplmtr.)
>>Z=(X.^2.*Y.^2)./(X.^2+Y.^2) (2.adm yaplmtr.)
>>mesh(X,Y,Z)
>>surf(X,Y,Z)
(GRAFKLER KOD SIRASINA GREDR.)

15

10

0
6
5
4
3
2

39

15

10

0
6
5

5
4

3
2

3
2

1
0

2) . . + sin(x).cos(0.5y) denkleminin grafiini izdiriniz.


%yukarda anlattmz admlar takip ederek problemi zeceiz.
%hem mesh hemde yzey grafiklerini kullanacaz.
>> x=-3:0.25:3;
>> y=-3:0.25:3;
>> [X,Y]=meshgrid(x,y);
>> Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
>> mesh(X,Y,Z)
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')

40

0.4

0.2

-0.2

-0.4
4
2

4
2

-2
y

-2
-4

-4

>> surf(X,Y,Z)
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')

41

0.4

0.2

-0.2

-0.4
4
2

4
2

-2
y

-2
-4

-4

Matlab 3 boyutlu grafikler iin fazlaca komuta sahiptir genel olarak ayn ekilleri kullanrlar fakat
aralarnda az da olsa farklar vardr.
Komutlar :
Komutun ad
Mesh curtain
Mesh ve kontur
Yzey ve kontur
Iklandrlm yzey
Waterfall
3 boyut kontur

Komut
meshz(X,Y,Z)
meshc(X,Y,Z)
surfc(X,Y,Z)
surfl(X,Y,Z)
waterfall(X,Y,Z)
contour3(X,Y,Z,n)(buradaki
n kontur saysn belirtir)

rnekler :
1) q1=2.1010 yk (0,25,0,0) noktasnda q2=3.1010 ykde (-0.25,0,0) noktasndadr.x-y
dzlemindeki -0.2x0.2 ve -0.2y0.2 noktalarndaki elektrik potansiyeli hesaplaynz.ve
izdiriniz.( = 8.85.1012 )
=

42

1
4

>> eps=8.85e-12;
>> q1=2e-10;
>> q2=3e-10;
>> x=-0.2:0.001:0.2;
>> y=-0.2:0.001:0.2;
>> [X,Y]=meshgrid(x,y);
>> r1=sqrt((X+0.25).^2+(Y).^2);
>> r2=sqrt((X-0.25).^2+(Y).^2);
>> V=1/(4*pi*eps).*(q1./r1+q2./r2);
>> mesh(X,Y,V)

Grafik ekleyemedim
2) Yuvarlak bir merdiven aagdaki gibi modellenmektedir.

x = Rcos(2 )

y = Rsin 2
=

Burada R merdivenin yarap,h katn uzunluu,n ise merdivenin her katta yapt dn
saysdr.Yaplmakta olan iki katl bir bina iki merdivene sahiptir.Birinci merdivenin yarap 1.5
m,dn says ise 3tr. kinci merdivenin yarap 4m dn says ise 2 dir. ki merdiveni de
kapsayan bir ekil iziniz.(0t5)
>> r1=1.5;
>> r2=4;
>> n1=3;
>> n2=2;
>> t=0:0.01:5;
>> h=3;
>> x1=r1*cos(2.*pi.*n1.*(t./h));
>> x2=r2*cos(2.*pi.*n2.*(t./h));
>> y1=r1*sin(2.*pi.*n1.*(t./h));
>> y2=r2*sin(2.*pi.*n2.*(t./h));
>> z1=t./h;
>> z2=t./h;
>> plot3(x1,y1,z1,x2,y2,z2)
Soru ile ilgili olarak ilk bata kontur kullanmak gerektiini dnebilirsiniz fakat kontur ile izim iin 2
bamsz bir baml deiken olmaldr. Ayn zellik mesh ve yzey izimleri iinde geerlidir.

43

1.5

0.5

0
4
2

4
2

-2
y

-2
-4

-4

3) = ( + 3)2 + 1.5 2 2 denklemini -3x3 ,-3y3 snrlar iinde grafik iinde hem
yzey hemde kontur olacak ekilde iziniz.
>> x=-3:0.01:3;
>> y=-3:0.01:3;
>> [X,Y]=meshgrid(x,y);
>> Z=(Y+3).^2+1.5.*X.^2-X.^2.*Y;
>> surfc(X,Y,Z)
>> xlabel('X')
>> ylabel('Y')
>> zlabel('Z')

Fonksiyonlarda Saysal zmleme(Numerik Analiz)


Tek deikenli fonksiyonlarn zm:
F(x)=0 olacak biimde fonksiyonlarn zm iin
X=fzero(fonksiyon,a) ( buradaki a deeri fonksiyonun x ekseni kestii noktaya yakn bir noktadr)

>> fplot('x*exp(-x)-0.2',[0,8])
>> grid

44

0.4
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0

>> x1=fzero('x*exp(-x)-0.2',0.7) (fonksiyonda 2 adet sfra yakn nokta olduu iin 2 adet nokta var)
>>x1 =
0.2592
>> x2=fzero('x*exp(-x)-0.2',2.8)
x2 =
2.5426

fzero komutu fonksiyon x eksenini kestiinde cevap bulabilir.eer fonksiyon ekseni kesmeden
teet geerse fzero komutu bir sonu bulamaz.

>> fplot('x^3-12*x^2+40.25*x-36.5',[0,8])
>> grid

30

20

10

-10

-20

-30

-40

45

>> x1=fzero('x^3-12*x^2+40.25*x-36.5',0.7)
x1 =
1.4776

Maksimum ve minimum deerleri bulmak:


Bir fonksiyonun x1xx2 aralndaki minimum ya da maksimum noktasn bulmak iin
x=fminbnd(fonksiyon,x1,x2) (fonksiyonun minimum deerini bulmak iin)
Komutu kullanlr.
Fonksiyonun maksimum noktasn bulmak iin fonksiyon -1 deeri ile arplarak minimum deeri
bulunur.
Fonksiyonun hem minimum (maksimum) deerini hem de o noktadaki deerini bulmak iin
*x fval+=fminbnd(fonksiyon,x1,x2)

>> [x fval]=fminbnd('x^3-12*x^2+40.25*x-36.5',0,8) (fonksiyonun minimun deerini bulduk)


x=
5.6073

fval =
-11.8043

>> [x fval]=fminbnd('-x*exp(-x)+0.2',0,8)

(fonk. -1 ile arpp maksimun deerini bulduk)

x=
1.0000

fval =
-0.1679

Fonksiyonun entegral deerini bulmak:


Matlab entegral almak iin quad, quadl ve trapz adyla 3 eit komuta sahiptir. quad, quadl
komutlar fonksiyon verildii zaman kullanlr. trapz komutunda ise eer fonksiyon data noktalar gibi
verildiinde kullanlr.

46

quad-quadl komutlar
a=quad(fonksiyon,a,b)
b=quadl(fonksiyon,a,b)
eklinde yazlr.

(a,b deerleri integralin snrlardr.)

Fonksiyonun *a,b+ aralnda dikey asimtotu olmamal.


f(x) fonksiyonu vektrel ekilde yazlmaldr.elementlerle ilemler eklinde yazlmaldr.
2 komut arasndaki fark hesaplama yaparken kullandklarn metot farkllklardr.quadl
metotu daha kesin sonular verir.

quadl komutunun en son harfi kk harfli L dir.


rnek:
8

(.

0.8

+ 0.2)

ntegralinin deerini bulunuz.


>> quad('x.*exp(-x.^0.8)+0.2',0,8)
ans =
3.1604
>> quadl('x.*exp(-x.^0.8)+0.2',0,8)
ans =
3.1604

trapz komutu
a=trapz(x,y) (x,y ler birer vektrdirler.)

>>q =[32 36.96 46 51.84 120 109.04 88.56 79.04 74 51.52 44 38.64 32]
32.0000 36.9600 46.0000 51.8400 120.0000 109.0400 88.5600 79.0400 74.0000 51.5200
44.0000 38.6400 32.0000
>> d=[1 32 60 91 121 152 182 213 244 274 305 335 366]
d=
1 32 60 91 121 152 182 213 244 274 305 335 366
>> trapz(d,q)
47

ans =
2.3506e+004
>> a=trapz(d,q)
a=
2.3506e+004

Adi Diferansiyel Denklemler:


Adi diferansiyel denklemler

= (, )

eklindeki diferansiyel denklemlerdir. Bu denklemin zm y=f(x) tipinde bir zmdr ve


diferansiyel denklemi salar.
Diferansiyel denklemi zmek iin gerekli olan admlar:

1.

Diferansiyel denklemi standart formda yazlmas gerekir.

( = (, ) 0 1

= 0

= 0

2.

Bir fonksiyon dosyas oluturulur.


function dydt=diffe(t,y)
dydt=.

3.

zm metodunu seeriz.
Diferansiyel denklem zm metodu
ode45
ode23
ode113
ode15s
ode23s
ode23t
ode23tb
zm metotlarn farkll kullandklar metotlar ve problem zorluuna gre seime
dayanyor.En zor problemleri zme sralar yazm srasna gredir.

4.

Diferansiyel denklemi zeriz.


*t,y+=zm_metodu(diferansiyel fonk,xaral,y0)

rnek
3 2
=
1 3 = 4.2 = 1

48

Fonksiyon dosyas
function dydt=diffe(t,y)
dydt=(t^3-2*y)/t;

Denklemin zm
>> [t y]=ode23tb('diffe',[1:0.3:3],4.2)
t=
1.0000
1.3000
1.6000
1.9000
2.2000
2.5000
2.8000

y=
4.2000
2.8038
2.3786
2.4768
2.9533
3.7628
4.8988

2)

= 0.2 + 0.5 2 0 4 (0) = 0.5

function dydx=dif(x,y)
dydx=(0.2*x*y+0.5*y^2);

x y]=ode45('dif',[0:0.4:4],-0.5)
x=
0
0.4000
0.8000
1.2000
1.6000
2.0000
2.4000
2.8000
3.2000
3.6000
49

4.0000

y=
-0.5000
-0.4617
-0.4426
-0.4391
-0.4495
-0.4734
-0.5117
-0.5658
-0.6379
-0.7305
-0.8460
>> plot(x,y)
>> ylabel('y')
>> xlabel('x')

-0.4
-0.45
-0.5
-0.55

-0.6
-0.65
-0.7
-0.75
-0.8
-0.85

0.5

1.5

2
x

2.5

50

3.5

Genel Sorular:
1) Kullancdan alnan bir saynn asal m deil mi olduunu kontrol eden bir program yaznz.
x=input('bir say giriniz asal m deil mi belirleyelim
');
a=2;
for i=1:floor(x/2)
if rem(x,a)==0&&(x~=2)
fprintf('girilen %g says %g ile tam blnyor bu say asal deil\n',x,a)
break;
else
if a==round(x/2)||(x==2)
disp('bu say asal')
end
a=a+1;
end
end

2) a) Bir uan yavalama ivmesi a= 0.0035v 2 3=

dir.Uan yere deme hz 300km/s ise

uan hz zaman grafiini izdiriniz.


Fonksiyon dosyas
function dvdt=soru(t,v)
dvdt=-0.0035*v^2-3;

Ana program
>> [t,v]=ode23tb('soru',[0:0.5:12],83.333);
>> plot(t,v)
>>grid
>> axis([0 13 0 100])
>> ylabel('v')
>> xlabel('t')
>> help title
(helpten yardm aldk her komut iin ayn process geerli)
TITLE Graph title.
TITLE('text') adds text at the top of the current axis.
TITLE('text','Property1',PropertyValue1,'Property2',PropertyValue2,...)
sets the values of the specified properties of the title.
TITLE(AX,...) adds the title to the specified axes.
H = TITLE(...) returns the handle to the text object used as the title.
See also xlabel, ylabel, zlabel, text.
Reference page in Help browser
doc title
>> title('hz zaman grafii')

51

hz zaman grafii
100
90
80
70

60
50
40
30
20
10
0

10

b) Ayn uan durana kadar gidecei mesafeyi hesaplaynz.


>> [t,v]=ode23tb('soru',[0:0.5:12],83.333);
>> trapz(t,v)
ans =
315.3819

3) Aadaki denklem sistemini zdrnz.


3x+2y-9z=-65
-9x-5y+2z=16
6x+7y+3z=5
>> A=[2 3 4;-1 -3 -1;1 1.5 2];
>> B=[10;12;0];
>> A\B
Warning: Matrix is singular to working
precision.
ans =
Inf
-Inf
52

12

-Inf
(birbirinden lineer bamsz denklemler olmadklar iin sonu sonsuz kt.)

4)
=1+

2 3
+ +
1! 2! 3!

Taylor serisi almnn eit olduunu gsteren bir program yaznz.


toplam=0;
x=1;
for i=0:1:100
toplam =toplam+(x^i/factorial(i));
end
if toplam==exp(1)
disp('eit')
else
disp('yanl')
end

5) = 1n5 deerleri iin -10x10 aralnda ayn figr stne iziniz.


x=-10:0.01:10;
for i=1:1:5
y=x.^i;
subplot(3,2,i)
plot(x,y)
end

53

10

100

50

-10
-10

-5

10

0
-10

1000

10000

5000

-1000
-10

-5

10

-5

10

0
-10

-5

10

-5

10

x 10

0
-1
-10

Kaynaka

Amos Gilat Matlab an Introduction With Applications (Wiley)


Kuncicky David C. Matlab Programming (Pearson)
Doan brahim A'dan Z'ye Matlab ile almak (Bileim yaynlar teknik kitaplar)

54

You might also like