DERS 3 : MATLAB Dilinin Temelleri
Bu dersten itibaren, yüzeysel değinmeleri bırakıp detaya
ineceğiz.
Bu derste ise, matrisler, arrayler, değişkenler ve Command
Window kullanımındaki detaylara gireceğiz. Matrisler ve vektörler denklem
çözme,plot çizdirme işlemlerimizi daha kolay yapabilmemiz için önemi fazladır.Ve
sonunda kısaca polinomları tanımlayacağız.
MATRİSLER
Bizim MATLAB’de girdiğimiz skalar değişkenler aslında 1x1 matrislerdir.
Buradan da size’dan anlaşılıyor.
>>degisken = 13;
>>size(degisken)
Matris Oluşturmak
-
Satır (row) vektörü girmek için, elemanları
boşlukla veya virgül ile ayır.
-
Her satır vektörünün sonuna gelindiğinde noktalı
virgül (;) kullanarak diğer satıra geç.
-
Elemanların çevresine kare parantez(köşeli
parantez) gir : []
>> A = [16 3 4 13; 5 10 7 8; 9 6 7 2; 0 5 14 1]
sum, transpose, ve
diag
sum : her
satırı(column) toplar ve yeni bir vektör üretir.
Eğer biz tek boyutlu matris(yani vektörler)’de sum
fonksiyonunu kullanırsak o vektörün tüm elemanlarını toplar.
>>sum(A)
ans =
30 24
32 24
Transpoz(‘) : “ ‘
“ sembolünü kullanarak bir matrisin transpozunu elde edebilirsiniz.Satırlar ve
sütunlar yer değiştiriyor.
>>A’
ans =
16 5
9 0
3 10
6 5
4 7
7 14
13 8 2 1
>>sum(A’)’
: Böyle
bir işlem tanımladığımızda öncelikle A matrisinin transpozunu aldı ve her bir
sütun(column)’u topladı ve bir vektör üretti.Daha sonra bu vektöründe
transpozunu aldı.
-
Fakat biz iki tane transpoz işleminden kaçınmak
istersek ,
>>sum(A,2) ile aynı işlemi yapabiliriz.
diag : diagonal
vektörü bulmak içindir.
>>diag(A)
Bazı Fonksiyonlar ile Matris Üretmek
zeros : bütün elemanları 0 olan matris
üretir.
ones : bütün elemanları 1 olan matris
üretir.
rand : random(rastgele) sayılar üretir.
>> help rand >>help
randn >>help fix (fix fonksiyonu sayıları 0’a yakın
olan integer’a yuvarlar.)
MATLAB’da Sayılar
Normal girdiğimiz sayılar dışında MATLAB’de bilimsel
gösterim “ e ” ile yapılıyor.10’un
kuvveti şeklinde yazmamızı sağlıyor.
İ ve j ise karmaşık sayıların imajiner kısmı için
kullanılır.
ÖRNEK 1 : A = [3 4 7; 1+3j 6 -2j; 1+9j -2 -7j] 3x3 matris
İlk olarak bir dosyada A matrisini oluşturun.Daha sonra for ve if-else döngülerini kullanarak a matrisinin karmaşık sayılarını 0’a atayarak yeni bir matris oluşturunuz.(help isreal)
MATRİS İŞLEMLERİ(OPERATORLERİ)
+
toplama Bu işlemler
element-element değil,normal matris işlemleridir.
- çıkarma
*
çarpma
/
bölme
^
kuvvet
' transpoz
+
toplama Bu işlemler
element-by-element matris işlemleridir.
-
çıkarma
.*
Element
-element çarpma
./
Element
-element bölme
.^
Element
-element kuvvet(üs)
ÖRNEK 2 : rand ve flor, rand ve ceil,
kullanarak A : 5x3’lük ve B : 3x5’lik iki matris oluşturunuz.
Ardından şu işlemleri yapınız
:
1.
A*B
2.
A.*B
3.
max(sum(A + B))
4.
C = A*(5*rand(3,5))
5.
C / B
Hata mesajı aldınız mı???
ÖRNEK 3 : Sürtünme Katsayısı Hesaplama
Aşağıdaki deneyde sürtünme katsayısını bulmak amacıyla
deneyler yapılmış ve tablodaki gibi veriler elde edilmiştir.
m (MASS) , kütle(kg)
g
= 9:81 m/s2 yer çekimi ivmesi
(The University of
Edinburgh, School of Engineering , 2010-2014, an interactive
introduction to MATLAB)
ÖRNEK 4 : Değişkenler (Şu anki zaman ve tarih)
1.
clock
fonksiyonunu kullanarak start adında değişken
oluştur.
2.
start değişkeninin boyutu kaç? Satır vektörü
mü yoksa sütun vektörü mü?
3.
start değişkenini string’e çevir. Bunun için
datestr fonksiyonunu kullan ve startString
değişkenine ata.
4.
start ve startString
değişkenlerini startTime dosyasına
kaydet.
»help clock
»start=clock;
»size(start)
»help datestr
»startString=datestr(start);
»save startTime start startString Soru
“MIT OpenCourseWare Introduction to MATLAB Lecture 1 ” den alındı.
= = > help elfun (birçok
fonksiyonu görebilirsiniz.)
format fonksiyonu
Nümerik ifadelerin nasıl yazdırılacağını kontrol eder.
format fonksiyonu ile kontrol edebileceğin gibi ,ayrıca fprintf ve sprintf ile nasıl yazdırılacağını kontrol edebilirsin.
Eğer uzun ifade
gireceksen :
Örneğin;
>> s = 1 -1/2 + 1/4 -1/6 + 1/8 - 1/10 + 1/12- 1/8 +
1/14 - 1/16 + 1/18 - 1/20 + 1/22 - 1/24 + 1/26;
Bu ifadeyi tek satırda değil de ikinci satıra da yazdırsaydık;
>> s = 1 -1/2 + 1/4 -1/6 +
1/8 - 1/10 ...
+ 1/12- 1/8 + 1/14 - 1/16 + 1/18
- 1/20 + 1/22 - 1/24 + 1/26;
>>
Aşağıya inmek
istediğimiz yerde sonuncu ifadeden sonra boşluk bırakıp ,üç nokta (…) koyduktan
sonra, alt satıra enter komutu ile geçebiliriz.
NOT
: Örneğin Command
Window’a
>>rho = (1 + sqt(5))/2 ifadesini girdik ve sqrt yerine sqt yazdık.
Ve bir hata
mesajı aldık.Sonra sqrt girmemiz gerektiğini anladık.
İlk olarak
klavyeden ↑ ile
,girdiğimiz ifadeyi tekrar yazıyoruz.Veya Command History’den ifadeyi
kopyalıyoruz.Sonra ← ile sola kayıp,eksik olan yere “ r ” harfini ekliyoruz.
İndeksleme
(Indexing)
A(i,j)
matrisinde
i , matrisin
satırını(row); j ise sütununu(column) gösterir.
>> A =
[2 3 7 ; 1 4 8 ; 3 6 9];
A(2,3) = 8
olur.
Colon
( : ) Operatörü
Colon(iki
nokta üst üste),MATLAB’in en önemli opratörlerinden biridir.Değişik çeşitlerde
kullanılabilir.
>>1:10
1’den 10’a
kadar integer satır vektörü üretir.
1 2 3
4 5 6 7 8 9 10
>>100:-9:36
100’den
başlayarak her seferinde 7 azalan satır vektörü :
100 91 82
73 64 55
46 37
>>-pi:pi/2:pi
-3.1416 -1.5708 0
1.5708 3.1416
Aşağıda
ise,1’den k’ya kadar olan satırlar ve j. Sütun belirtilmiştir :
A(1:k,j)
>>
A = ceil(10*rand(6,4))
1) A(2:4
, 1:2)
Burada satır olarak 2,3 ve4 ; sütun
olarak ise 1ve2. ‘yi seçer.
ÖRNEK 5 : Aşağıdaki
ifadeleri hesaplayınız.
a)
A
= M([1,3], [2,4])
b) B = M(:,
[1,4:6])
c) C = M([2,3], :)
Soru şuradan alınmıştır : Gilat, A. (2008). MATLAB:
An Introduction With Applications.
John
Wiley & Sons, Inc., 3rd edition. Copyright ©2008 John
Wiley & Sons, Inc. and reprinted
with permission of John Wiley &
Sons, Inc.
SATIR
veya SÜTUN Silme :
>> A = [16 3 4 13; 5 10 7 8; 9 6 7 2; 0 5 14 1]
Eğer,3.sütunu
silmek istersek,
Yanda ise A
matrisinin 2,3. Satırları ve 1,2,3. Sütunlarının kesişimleri seçiliyor ve
0(sıfıra) eşitleniyor.
ÖRNEK 6 : Bir
direncin üzerindeki volt değeri (Ohm kanunundan) v = iR verilmiştir.
i,akım(A) v,potansiyel fark(V) R,direnç(W)
Bu direncin
üzerindeki güç :
P =
Ri2
Eğer R=10 W ve akım 0’dan 10 A değerine kadar 2’şer 2’şer
artıyorsa,akım,volt,güç değerlerini veren MATLAB programı yazınız.(JOHN O. ATTIA, ELECTRONICS and CIRCUIT ANALYSIS using
MATLAB)
%
Voltage and power calculation
R=10;
% Resistance value
i=(0:2:10);
% Generate current values
v=i.*R;
% array multiplication to obtain voltage
p=(i.^2)*R;
% power calculation
sol=[i
v p] % current, voltage and power values are printed
% the last
diary command turns off the diary state
ÖRNEK 7
: Bir kapasitörün boşalma halinde voltaj değeri aşağıdaki gibi verilmiştir.
v(t)
= 10(1- e0.2t )
Volt
değerlerini gösteren tablo(matris, vektör) oluştur. v(t)
t
vektörü 0’dan 50s ye kadar ve artış miktarı 5s.
t1
vektörü oluştur.(0’dan 50s ye kadar,artış miktarı 0.5 ) ve v(t1) grafiğini çiziniz.
ÖRNEK 8
: A = [2 7 9 7; 3 1 5 6; 8 1 2
5] verilen matris ile aşağıdaki
işlemleri uygulayınız.
(a) A
(b) A(:,[1
4])
(c) A([2 3],
[3,1])
(d) A(:)
(e) [A A]
(f) [A;A(1:2,:)]
Bu soru “An
introductory course in MATLAB: MATLAB for beginners, Alba M.
Franco-Pereira, September 2010”’ kaynağından alınmıştır.
Polinomları
matris olarak tanımlarız,bu yüzden kısaca polinom işlemlerine de bakalım.
Polinomlar
Matlab’de
polinomlar katsayılarının vektörü ile tanımlanır.
Örnek: P(x) = -2x^5 + 3x^3 -x + 7 polinomunu yazınız.
P = [-2
0 3 0 -1 7]
x4 ve
x2 dereceli terimlerin katsayılarının 0
olarak girildi.
Polinomun kökleri
P polinomunun kökleri roots komutu ile
bulunabilir.
>>
r = roots(P)
r =
-1.2297 + 0.6225i
-1.2297 - 0.6225i
1.5136
0.4729 + 0.9969i
0.4729 - 0.9969i
Kökleri bilinen bir polinom
Kökleri [-2 3] olan polinomu için poly
ans =
1
-1 -6 (x2 - x -6)
Polinomun belli bir noktada değeri
Bu amaçla polyval fonksiyonu kullanılır.
>> polyval(P,2)
ans =
-35
Polinom
türevi için : help polyder
Polinom
integrali için : help polyint
Hiç yorum yok:
Yorum Gönder