Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Emre Özbay
GİRİŞ
Matlab nedir?
Ø (MATrix LABoratuvary); ilk defa 1985 de C.B. Moler tarafından geliştirilmiş ve özellikle de matris esaslı matematik ortamında kullanılabilen etkileşimli bir paket programlama dilidir. Ø Matlab, ABD menşeli The Mathworks Inc. Natick, MA şirketinin tescilli adıdır. Web adresi: http://www.mathworks.com Ø Türkiye Distribitörü: F"GES firması Web adresi: http://www.figes.com.tr
Matlab neler yapabilir?
m
Matematik ve hesaplama işlemleri, algoritma geliştirme. Modelleme, benzetim ve prototipleme. Grafik işlemleri Özgün Mühendislik işlemleri İstatiksel hesaplamalar Lineer, Kompleks, Diferansiyel denklem takımlarının çözümü MATLAB, matematik-istatistik, optimizasyon, neural network, fuzzy, işaret ve görüntü işleme, kontrol tasarımları, yöneylem çalışmaları, tıbbi araştırmalar, finans ve uzay araştırmaları gibi çok çeşitli alanlarda kullanılmaktadır. MATLAB, kullanıcıya hızlı bir analiz ve tasarım ortamısağlar. Matlab programını C/C++ diline dönüştürebilir, 20. dereceden bir denklemin köklerini bulabilir, 100x100 boyutlu bir matrisin tersini alabilir, Bir elektrik motorunu gerçek zamanda kontrol edebilir, Bir otobüsün süspansiyon simülasyonunu yapabilirsiniz
.e e
Ø Ø Ø Ø Ø Ø Ø
Ø Ø Ø Ø Ø
w w
w
de rs no tla ri. co m
MATLAB DERS NOTLARI
Matlab’da işler nasıl yürür? Programın dili ve yardım bilgileri tamamen İngilizce dir. Komut temelli yazılımdır. İşareti komut » prompt’udur. Komutlar Enter ile yürütülür.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Matlab Temel Kullanımlar
Örnek:
>> a=4*sqrt(5) a = 8.9443
ifadesinde a değişken , 4 sayı , * işleç , sqrt, fonksiyondur. Bir ifade = işareti ile bir değişkene atanmamış ise Matlab otomatik olarak sonucu, ans (answer) adı verilen özel bir değişkende saklar.
Komutlardan sonra “;” işaretinin kullanılmasıyla işlemler yapılır fakat ekrana yazdırılmaz. Tek satırda birden fazla komut girmek için komutlar “,” veya “;” kullanılır. >> clc, a=5, c=6; a =
.e e
m
5
w w
w
de rs no tla ri. co m
» işaretinden sonra komut girilebilir. Herhangi bir komut yapısını kopyalayıp yapıştırabilirsiniz. Klavyede üst ok ve alt ok komut geçmişi içerisinde gezinmeyi sağlar. “clc” komutu ekranda yazılı olan komutları temizler. Değişken tipi otomatik tanımlanır. (Numbers, Char, String, Boolean); Matlab’da ifadeler genellikle değişken = ifade veya sadece ifade formundadır.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
de rs no tla ri. co m
Matlab arayüzü
Dikkat Edilmesi Gerekenler
w
w w
.e e
m
Ø Değişken tanımlarken ve dosya yazdırırken Türkçe ve sembolik karakter kullanmamaya dikkat edilmelidir (ı"ğĞüÜçÇöÖ ve &(%*! .. vs.). Alt çizgi (_) kullanılabilir. Ø Matlab’da büyük harf ile küçük harf tanımı birbirinden faklıdır: sayi≠Sayi≠SAY"≠SAYI Ø Tanımlı herhangi bir fonksiyon ismi değişken ve dosya ismi olamaz. Ø Parantez farklılıkları ( ), [ ], { } Ø Ondalık sayı tanımlarken 3,5 şeklinde değil 3.5 Ø 0.5 yerine .5 da yazılabilir. Ø Bilimsel notasyon gösterimi olan e (veya E) harfi 10’nun kuvvetini temsil eder. Ø 2e4=2.000e+4=2·104=20000 Ø 1.65e-20=1.65·10-20 Ø Kompleks sayılarda imajiner (sanal) kısımlar i veya j ekini alır. i veya j ile gösterimlerinde bir fark yoktur.
>> a=3+3i a= 3.0000 + 3.0000i >> a=3+i*3
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
a= >> a=3+4j
a=3.0000 + 4.0000i >> a=3+i4
??? Undefined function or variable 'i4'.
Matlab Temel Kullanımlar
Ø “help” komutu yardımı Matlab ekranına indeksler. Ø “helpwin” komutu ise ayrı bir pencerede yardım konularını indeksler. Ø “help ...” şeklinde yazılan bir komut ...yerinde yazan komut hakkında yardım belgesini Matlab ekranına indeksler. Ø “helpwin ...” şeklinde yazıldığında ise ayrı bir pencerede bu işlemi yapar. SHORT 5 LONG 15 BANK RAT
rakamlı (4 ondalık) rakamlı (14 ondalık) iki ondalıklı sayı Ondalık sayıları rasyonel sayı olarak gösterir.
.e e
m
Ø Matlab’da işlemler varsayılan (default) olarak 4 ondalık sayı gösterilir. Ø “format” komutu ile değerlerin gösterim formatı ayarlanır. sadece “format” komutu girildiğinde varsayılan formata döner. Ø “format...” şeklinde kullanılır. ... yerine formatlardan uygun olanı gelir. Ø Diğer formatlar için: >> helpwin format
w w
w
de rs no tla ri. co m
3.0000 + 3.0000i
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
w
w w
.e e
m
de rs no tla ri. co m
Sık kullanılan bazı komutlar
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
w
w w
.e e
m
de rs no tla ri. co m
Kullanılan Belli Başlı Noktalama İşaretleri
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Matlab’da İşlem Sırası
2. Üslü ifadeler (soldan sağadoğru)
3. Çarpma ve bölme (soldan sağa doğru)
4. Toplama ve çıkarma (soldan sağa doğru) >> 3+6^2-(24*6/3)^4 ans =
.e e
m
-5308377
w w
w
de rs no tla ri. co m
1. Parantez içindeki ifadeler
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
w
w w
.e e
m
de rs no tla ri. co m
Bazı Sayısal Fonksiyonlar
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
.e e
m
Soru:
de rs no tla ri. co m
Bazı Kullanılan Sabitler
Sadece x’in sonucunu verecek bir matlab programı yazın.
w
w w
Cevap:
>> y=17^(1/3)/sqrt(5);
>> x=(1/sqrt(log(pi)))*exp((y^6)/4) x = 1.6660
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Bilgi Yazdırma ve Bilgi Alma
w
w w
.e e
m
de rs no tla ri. co m
Matlab’da değerleri gösterme birçok şekilde yapılır:
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
TRİGONOMETRİK İFADELER ve MATRİS İŞLEMLERİ
de rs no tla ri. co m
Trigonometrik İfadeler
m
>> alpha=30;
>> x=sin(alpha*pi/180)
.e e
x=
0.5000
>> y=0.6;
>> beta=acos(y)*(180/pi)
w
w w
beta=
53.1301
Soru:
a=?
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
>> b=5;c=8;A=120; a= 11.3578
.e e
m
Hiperbolik Fonksiyonlar
w w
w
de rs no tla ri. co m
>> a=sqrt(b^2+c^2---‐2*b*c*cos(A*pi/180))
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
VEKTÖRLER ve DİZİM
>> V=3:2:12
V= 3 5 7 9 11
>> lnn=linspace(3,10,4) lnn =
3.0000 3.6667 4.3333 5.0000 >> lgg=logspace(3,5,4) lgg= 1.0e+05 *
0.0100 0.0464 0.2154 1.0000
MATRİSLER
Matlab ‘de bir matrisi bilgisayara yüklemek için çeşitli yöntemler vardır: 1.
>> a=[2 7 9; 1 -‐3 6; 0 5 7]
m
% ve enter tuşuna basılır.
%Aşagıda görüldüğü gibi, bir a matrisi oluşacaktır: a=
.e e
2 7 9
1 -‐3 6 0 5 7
2. Matris elemanları arasına boşluk yerine virgül (,) ayracı da konulabilir:
w w
w
de rs no tla ri. co m
Ø Genellikle tek boyutlu matrislere vektör denir. Ø Matlab’da n dereceli bir vektör ile 1xn veya nx1 lik bir matrisin farkı yoktur. Ø Vektör yazdırmada kolaylık sağlama adına : işareti sıklıkla kullanılır.
>> a=[2,7,9;1,-3,6;0,5,7] a = 2 7 9 1 -‐3 6 0 5 7
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
3. Diğer bir yol ise matrisin satırlarını [ ] sembolleri arasına almaktır:
a= 2 7 9 1 -‐3 6 0 5 7
de rs no tla ri. co m
>> a=[[2 7 9]; [1 -‐3 6]; [0 5 7]]
Matris elemanların girilişinde dördüncü yol ise her satır sonrası ; sembolleri yerine enter tuşu kullanmaktır: >> a=[2 7 9 1 -‐3 6 0 5 7] a= 2 7 9 1 -‐3 6
w
w w
.e e
m
0 5 7
A.B ile B.A nın birbirlerinden farklı olduğu unutulmamalı. Matris elemanları alelade rakamlardan ibaret olabileceği gibi MATLAB deyimlerinden ibaret de olabilir. Örneğin
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
x=[-‐1.3 sqrt(3) (1+2+3)*4/5]
x=
de rs no tla ri. co m
bildirimi
-‐1.3000 1.7321 4.8000
Küçük matrisleri eleman olarak kullanıp daha büyük matrisler oluşturmak mümkündür. Örneğin, C=[a; [10 11 12]]
“:” işareti kullanmak sureti ile büyük bir matristen daha küçük bir matris oluşturulabilir. Örneğin C=C(1:3,:)
Verilerin değerlendirilmesinde sütun işlemcisi “:” çok kullanışlıdır. Örneğin x=data(:,1)
y=data(:,2)
bildirimleri ile data adı altında matris biçiminde tanımlanan verilerin 1. sütun x değişkenine ve 2. sütunu da y değişkenine atanmış olur. Benzer şekilde;
m
x=data(1,:)
data matrisindeki verilerin 1. satırını x değişkenine atar.
.e e
X=data(:,2:3)
Data matrisindeki verilerin 2. ve 3. sütunlarını x değişkenine atar.
w
w w
X=data(1:3,:)
Data matrisindeki verilerin 1,2 ve 3 üncü satırlarını x değişkenine atar. Bu şekilde mevcut bir veri tablosundan çok değişik matrisler oluşturmak mümkündür. MATLAB’ta kullanıcı, verileri kendi matrisleri ile tanımlayabileceği gibi MATLAB’ın kendi özel matrislerinden de faydalanabilir. Bunların belli başlıları; ones, eye, zeros, magic, rand, randn şeklindedir. Ø Ones(n) :Tüm elemanları 1 olan nxn elemanlı kare matris oluşturur. Ø Ones(1,n):Tüm elemanları 1 olan n elemanlı bir satır matrisi oluşturur. Ø Ones(n,1):Tüm elemanları 1 olan n elemanlı bir sütun matris oluşturur.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Örnek
de rs no tla ri. co m
Ø Benzer şekilde eye ile köşegen elemanları 1 olan birim matris, zeros ile tüm elemanları sıfır olan matris, rand, randn ile elemanları rasgele sayılardan oluşan bir matris oluşturulabilir. help olanakları ile daha ayrıntılı bilgiler elde edilebilinir.
Değerleri 30 ile 100 arasında rasgele bir tamsayı değeri alan 3x4 lük bir matris oluşturun. >> K=30+fix(rand(1)*70*ones(3,4)) K=
54 54 54 54
m
54 54 54 54 54 54 54 54
.e e
>> K=30+fix(rand(1)*70*ones(3,4)) K =
88 88 88 88 88 88 88 88
w
w w
88 88 88 88
Aşağıdaki soruları cevaplandırın. 2 3 5 A= 7 11 13 17 19 23
» A(2,1) ans=? » A(2:3,2:3) ans= ? » A(:,1) ans= ?
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
» A(2,:) ans= ?
de rs no tla ri. co m
»A([1 3],[2 3]) ans= ? » B= A(: ), B = ?
» linspace(-‐1,1,9) ans= ? »A(2,:) = [], A = ?
Aşağıdaki matrisin sağ alt köşesinden itibaren 2x2 lik bir kare matrisi B değişkenine atayınız.
m
Ø Matlab’da temel matris işlemlerinin tamamı yapılabilir. Ø Bir matrisin transpozesinin alınması: A=[ 0 -‐1 2; 1 2 -‐4], B=A' A=
.e e
0 -‐1 2 1 2 -‐4 B=
w
w w
0 1
-‐1 2 2 -‐4 Ø Bir matrisin tersinin (inversinin) alınması:
>> A(3,:)=[3 5 7] %Öncekinden devam A = 0 -‐1 2 1 2 -‐4
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
3 5 7 ans=
2.0000 1.0000 0
-‐1.1176 -‐0.3529 0.1176 -‐0.0588 -‐0.1765 0.0588 >> inv(A) ans=
Not : sadece kare matrsilerin tersi alınabilmektedir. Fakat kare matris olup da tersi tanımlı olmayan matrislerde olabilir. Tekil matrislerin tersleri yoktur.
2.0000 1.0000 0
-‐1.1176 -‐0.3529 0.1176 -‐0.0588 -‐0.1765 0.0588
Ø Bir matrisin determinantının alınması: A= 0 -‐1 2 1 2 -‐4 3 5 7
>> B=det(A) B=
.e e
m
17
w w
w
de rs no tla ri. co m
>>A^-‐1
Not : Not: Sadece kare matrislerin determinantlarının tanımlı olduğu unutulmamalıdır.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
w
w w
.e e
m
de rs no tla ri. co m
Matrisler için Tanımlı Bazı Fonksiyonlar
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Matrisler için Tanımlı Bazı Fonksiyonlar
Max(A),
ans=?
B=[11 13 5 7; 8 9 10 12]; Max(B) , ans=?
Bu iki işlemden de anlaşılacağı gibi matrislerdeki fonksiyonlar, veriler üzerinde sütun tabanlı olarak işletilir. Yani bu fonksiyonlar her bir sütuna ayrı ayrı uygulanır. −2 Soru A= 1 0 Ø Ø Ø Ø Ø
3 −1 −3
4 5 6
2 B= 4 1
−1 −3 1
1 6 0
C=A*B D=[A;B]
A matrisinin 1. Sutunu x dizine atayın B matrisinin 2. ve 3. sutnunu y matirisine atayın D matrisinin determinantını hesaplayınız. B matrisindeki en büyük sayıyla A matrisini çarpın. A ile B matrisini eleman elamana çarpın
Soru Kullanıcıdan bilgi alıp faktörüyel hesabı yapıp kullanıcıya açıklayıcı bilgi veren bir program yazınız.
N=input('Faktöriyeli alınacak sayıyı girin='); P=[1:1:N];
Sonuc=prod(P);
.e e
m
fprintf('Girmiş dir.',Sonuc);
olduğunuz
sayının
fatöriyeli
Faktöriyeli alınacak sayıyı girin=5 Girmiş olduğunuz sayının fatöriyeli 120 dir.>>
w w
w
de rs no tla ri. co m
A=[1 3 5 7 8 9 10]
%.0f
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Matrislerde işlemler
de rs no tla ri. co m
Toplama İşleme
w
w w
.e e
m
Çıkarma işlemi
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
de rs no tla ri. co m
Çarpma işlemi
Çok Boyutlu Matrisler
w
w w
.e e
m
Ø İki boyutlu matrisler mxn şeklinde iken çok bayutlu matrisler i1xi2xi3xi4x...i19 şeklindedir. Ø Verilerin tasarımında matris boyutunu arttırmak mantıklı değildir. Veri tasarlama konusunda veritabanı kitaplarına müracaat edilebilir.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
DENKLEM ve DENKLEM TAKIMLARI İŞLEMLERİ
de rs no tla ri. co m
Denklem Tanımlama
Matlab’da tanımlamak istediğimiz denklemi ne için kullanacağımıza bağlı olarak tanımlama şekilleri değişebilir. Denklem ifa ettiği fonksiyona göre şu şekilde tanımlanabilir: y=
!! ! !!"# ! !! !"#$ !
‘denklemim.m’ adlı dosya:
function y=denklemim(x)
y=(3*x^2+sin(x)---‐5)/(cos(x)^2); end
Denklemin x=3 iken MATLAB ana programda kullanımı:
>> fy=denklemim(3) fy= 22.5910
Bir diğer denklem tanımlama şekli de şu şekildedir: >>
m
Y=inline('x^2-‐y^2') Y=
.e e
Inline function: Y(x,y)=x^2-‐y^2 >> Y(3,5)
w
w w
ans= -‐16
Polinom tanımlama Ø Polinomları dnklem gibi tanımlayabildiğimiz gibi polinomal işlemlerde kullanmak üzere polinomun sadece katsayılarını bir vektör şeklinde tanımlayabiliriz. Ø Polinom katsayılarının vektörel tanımlamasında katsayı tanımlama polinomun en üst dereceli değişkeninin katsayısından başlayarak sırayla gitmelidir. Ø n. dereceden bir polinom için kuvveti n, n-1, n-1 ... 2,1,0 şeklinde bütün bağımsız değişkenlerin katsayıları olmak zorundadır. Yok ise katsayısı 0 alınmalıdır.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar y=3x4-5x2+7
n. dereceden bir polinomun katsayılar vektörünün boyutu n+1 olacağına dikkat edilmelidir.
Polinom İşlemleri
Ø MATLAB’da polinom tanımlarken bağımsız değişken x’in değerinin veya vetörel olarak değerlerinin daha önceden tanımlanmış olması gerektir. Ø Bu işlem polyval(katsayılar, bağımsız değişken) fonsiyonu ile yapılır. x= 5 ⇒ y=3x3+4x2+4
>>x=5;
>>K=[3 4 0 4];
>> polyval(K,x) ans= 479
İki Polinomun Toplamı
m
iki polinom toplanırken katsayıları toplanacağı unutulmamalıdır. İki vektör toplanırsa eleman eleman toplanacağından polinomların katsayılar vektörleri normal olarak toplanır ve sonuç polinomunun katsayıları elde edilir. P(x)= 7x4+5x-7
R(x)= x3+5
Şeklinde iki polinom toplanacak olursa:
.e e
>>P=[7 0 0 5 -‐7];
>>R=[0 1 0 0 5]; >>toplam=P+R toplam=
w w
w
de rs no tla ri. co m
Y=[3 0 -‐5 0 7]
7 1 0 5 -‐2
Polinomun Bir Sayı ile Çarpımı Bir polinomun bir sayı ile çarpımı bu polinomun katsayılarının bu sayı ile ayrı ayrı çarpılması şeklindedir. P(x)= 7x4+5x-7 5* P(x)= 35x4+25x-35
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
>>P=[7 0 0 5 -‐7]; ans=
35 0 0 25 -‐35
İki Polinomun Birbiriyle Çarpımı
MATLAB’da katsayılar vektörleri x ve y olan iki polinomun birbiriyle çarpımı conv(x,y) fonksiyonuyla sağlanır ve sonuç çarpım polinomunun katsayıları şeklinde verilir.
>>x=[2 3 -‐4 7];
>>y=[1 0 -‐3 0 -‐5 0]; >> z=conv(x,y) z=
2 3 -‐10 -‐2 2 -‐36 20 -‐35 0
.e e
m
Polinom Hesaplamaları İçin Kullanılan Fonsiyonlar
w w
w
de rs no tla ri. co m
>>5*P
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Polinomun Köklerinin Bulunması
Katsayıları A verktörü olan bir polinomun kökleri roots(A) fonksiyonu ile hesaplanıp kaç kök var ise vektörel olarak sonuç verilir.
Kökleri Bilinen Bir Polinomun Bulunması
m
Kökleri bilinen bir polinomun bulunması poly fonksiyonu ile yapılır. Burada eşit kökler de belirtilmek zorundadır. poly fonksiyonu polinomun katsayılarının cevabını verir.
>>kokler=[0 2 1-‐i 1+i];
.e e
>>P=poly(kokler) P=
1 -‐4 6 -‐4 0
w w
w
de rs no tla ri. co m
Doğrusal Denklem Takımlarının Çözümü n. dereceden doğrusal bir lineer denklem takımı:
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar biçiminde verilir. Bu denklem takımının matris biçiminde gösterimi [A]*[x]=[B]
Matri işlemleri yoluyla X bilinmeyenleri aşağıdaki işlemlerle bulunabilir. A ∗ X =B!
A-1 ∗ A ∗ X = A-1 ∗B X =A-1B
.e e
m
Soru
w w
w
de rs no tla ri. co m
şeklinde tanımlanabilir. Burada; katsayılar, bağımsız değişken ve sonuç matrisleri aşağıda olduğu gibidir.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
de rs no tla ri. co m
Ø Doğrusal olmayan denklemlerin doğrusal denklemlerde olduğu gibi tek bir standart biçimi yoktur. Gerek MATLAB içinde gerekse Otimatization Toolbox içinde, gerek tek değişkenli ve gerekse çok değişkenli denklemlerin çözümünde kullanılan çeşitli çözüm fonksiyonları vardır. Doğrusal olmayan denklemlerin çözümü, doğrusal denklem çözümü kadar basit olmayıp bunların çözümü için ayrıca bir fonksiyon dosyası hazırlanması gerekir. Ø Burada, MATLAB içinde yer alan fzero fonksiyon fonksiyonu ile Otimatization Toolbox içinde yer alan fsolve fonksiyon fonksiyonu ayrıntılı bir biçimde ele alınacaktır. Ayrıca diğer doğrusal olmayan fonksiyon fonksiyonlarının kısaca tanımları gözden geçirilecektir.
Doğrusal Olmayan Denklemlerin Çözümü
fzero: Fonksiyonu; tek değişkenli bir fonksiyonun sıfırını hesaplar. Genel kullanım biçimleri aşağıda olduğu gibidir. z=fzero(‘function’,X0); z=fzero(‘function’,X0,tol); z=fzero(‘function’,X0,tol, trace);
Ø fun(x) biçimindeki bir fonksiyonun, X0 ile tanımlanan değere yakın olan tek bir sıfırını hesaplar. Burada, fonksiyonu sıfır yapan, yani x eksenini kesen bir sıfır değeri hesaplanır. Ø ikinci bildirimde yer alan tol isimli, seçimli argüman bağıl hata toleransını belirler. Üçüncü bildirimde yer alan seçimli trace argümanı her bir hesap yineleme işlemindeki bilgileri görüntüler. Ø Fonksiyon fonksiyonu olan fzero fonksiyonunu kullanmak için ayrıca function ile başlayan bir fonksiyon dosyası hazırlanması gerekir. Soru y=sin(x)+cos(x) denkleminin belli noktalarda denklemi sıfır yapan köklerini bulalım.
m
Öncelikle denklemin tanımlandığı harici bir fonksiyon dosyası oluşturmamız gerekir.
% sincos.m adlı dosya
.e e
function y=sincos(x) y=sin(x)+cos(x);
w
w w
end
%Ana program dosyası clc,clear; fplot('sincos',[-‐5 5 -‐5 5]); grid on, line([-‐5 5],[0 0]); x0=fzero('sincos',---‐4)
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
-‐3.9270
de rs no tla ri. co m
x0= >> %Matlab ekranında gözüken sonuç
m
Örneklerden de görüldüğü gibi fzero fonksiyonu herhangi bir fonksiyonun tahmini bir sıfırının hesaplanmasında ve/veya doğrusal olmayan denklemlerin çözümünde daha kullanışlıdır. Doğrusal denklemlerin aynı anda tüm köklerini çözmek gerektiğinde roots fonksiyonunu kullanmak daha pratik olacaktır. fzero ile denklem köklerini çözümlemeden önce fplot ile denklemin grafiğini çizdirip istenilen kökün çözümlenmesi kolaylık sağlayacaktır.
w
w w
.e e
Bir diğer denklem takımlarının çözüm yolu ise fsolve fonksiyonudur. Bu fonksiyon çok değişkenli denklem takımlarının köklerini bulmak için kullanılır.
%coklufonk.m dosyası function F= coklufonk(X) F=[X(1)^2+X(2)^2---‐X(3); X(1)^2+X(2)^2+X(3)^2---‐1; X(1)+X(2)];
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
>>x0=[0.1;---‐1;2]; >>[x, fonksiyondegeri, ozellikler]=fsolve('abcfonk',x0)
Denklem Takımlarının Basit Çözümü
Ø Sembolik çözümleme için MATLAB programında Sembolic ToolBox’a tanımlı fonksiyonlarla gerçekleştirilir. Ø Sembolik çözümleme basit olarak solve fonksiyonu ile yapılır.
>> [x y]=solve('x^2+y=0','x+8*y=0') x= 0 1/8 y= 0 -‐1/64
Birinci dereceden bir diferansiyel denklemin genelleştirilmiş biçimi !"
y= =g(x,y)
m
!"
.e e
şeklinde ifade edilebilir. Burada; x bağımsız değişken ve y de bağımlı değişkendir. Birinci dereceden bir diferansiyel denklemin çözümü f (x) =g(x,y) fonksiyonundan elde edilen y=f(x) şeklinde bir fonksiyondur. Bir diferansiyel denklem çözümünün sayısal hesaplaması y türevinden y nin elde edilmesi için gerekli integrasyon işlemini
w w
w
de rs no tla ri. co m
kontrol,...
kapsar. Bir diferansiyel denklemin çözümü genellikle fonksiyon biçimindedir. Tek bir özel çözümün hesaplanabilmesi için sınır koşullarının (x=a, x=b) tanımlanması gerekir.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
SEMBOLİK İŞLEMLER
de rs no tla ri. co m
Sembolik Tanımlama
Ø Sembolik işlemlerde karakterler matlab ortamına sayısal değermiş gibi tanımlanır. Ø String bir değişken değil sayısal bir değişkenmiş gibi algılanır. Ø Şu şekilde tanımlamalar mümkündür:
>>A=sym('a') A= a
syms a b c;
A= a
m
>>A=sym('a','real')
.e e
>> B=sym('b','unreal') B= b
w
w w
>> % veya syms a real, syms b unreal >> z=A+B*i z=
a+b*i
Sembolik Biçime Dönüştürme >> % teferruatlı kesirli
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
>> a=3.2; >> sym(a,'f') 3602879701896397/1125899906842624 >>% Kesirli
>> sym(a,'r') ans= 16/5
>>% exponensiyel >> sym(a,'e') ans=
(4*eps)/5 +16/5
>> Sembolik anlamlı gösterim >> sym(a,'d') ans=
3.200000000000000177635683940025
Sembolik Biçimden Sayısal Biçime Dönüştürme
Sembolik olarak gösterimde olan sayısal ifadeler şu şekilde sayısal değerlerine kavuşurlar:
A=
.e e
4/5
m
>>A=sym(4/5)
>> SayisalA=double(A) SayisalA= 0.8000
w w
w
de rs no tla ri. co m
ans=
Sembolik İşlemler
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Sevimli Görünüm
de rs no tla ri. co m
Ø MATLAB komut tabanlı bir yazılım olduğundan sayısal sonuçlarda text formatında ekrana yazdırılır. Bazen alınan sonuçlar gözümüze çok karmaşık gelebilir. Ø Özellikle sembolik gösterimlerde verilen ekram çıktıları çok karmaşık gibi gözükür. Ø Bütün bu karmaşıklığı gidermek için pretty komutu ile çıktıların dahasevimli gözükmesini sağlayabiliriz.
w
w w
.e e
m
Sembolik Çözümleme
Çarpanlarına Ayırma Sembolik çözümlemenin yapıldığı sonuçların çarpanlarına ayrılmasının istiyorsak factor fonksiyonu kullanılır.
>> S=x^2---‐y^2; >>factor(S)
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
ans=
Çarpanları Dağıtma
Sembolik görünümdeki denklem tek düze ifadeye indirgenir.
>>syms x;
>>y=x^2---‐5; >> z=2*x+7; >>V=z*y V=
(2*x+7)*(x^2-‐5) >>expand(V) ans=
2*x^3+7*x^2-10*x-‐35
Denklemi Sadeleştirmek
Bir denklemi sadeleştirmek için simplify komutu kullanılır.
>> S=(x^3---‐4*x)/(x^2+2*x); ans=
.e e
x-‐2
m
>> simplify(S)
Sembolik İntegral İşlemi Sembolik integral alma fonksiyonu int olup genel formatı:
w w
w
de rs no tla ri. co m
(x-‐y)*(x+y)
Ø Ø Ø Ø
int(S), S’in belirsiz integralini alır. int(S,v), S’in v’ye göre belirsiz integralini alır. nt(S,a,b),S’in varsayılan sembolik değişkene göre a’dan b’ye kadar belirli integralini alır. int(S,a,b,v),S’in v’ye göre a’dan b’ye kadar belirli integralini alır. Şeklindedir.
∫ (−2x5 − 4x + 20)dx clc,clear,syms x integral=int('---‐2*x^2---‐4*x+20') pretty(integral)
Sembolik Türev
Türev alma işleminde kullanılan fonksiyon adı diff olup sembolik işlem mantığı çerçevesinde genel formatı: Ø Ø Ø Ø
diff(S), S’in türevini alır. diff(S,v), S’in v’ye göre türevini alır. diff(S,n), n pozitif bir tamsayı olmak üzere n. dereceden türevini alır. diff(S,'v',n) veya diff(S,n,'v'), S’in v’ye göre n. dereceden türevini alır.
Şeklindedir.
Türevin x=p’deki değerini bulmak için » subs(turev,x,p) kullanılır.
Sembolik Türev
m
f(x)=5x3+ax2+bx -14 (a ve b sabit değerdir) fonksiyonunun türevini bulunuz. >>syms a b x
.e e
>> f=5*x^3+a*x^2+b*x-- 14;
>> diff(f) ans=
w w
w
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
15*x^2 + 2*a*x + b >> pretty(ans) 15x2 + 2 ax + b
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
GRAFİK İŞLEMLERİ
Matlab, 2D ve 3D başta olmak üzere çok gelişmiş grafik araçları sunar: Ø Ø Ø Ø Ø Ø
Çizgi (line) grafikler (plot, plot3, polar) Yüzey (surface) grafikler (surf, surfc) Ağ (mesh) grafikler (mesh, meshc, meshgrid) Contour grafikler (contour, contourc, contourf) Çubuk (bar), pasta (pie) vb özel grafikler (bar, bar3, hist, rose, pie, pie3) Animasyonlar (moviein, movie vb komutlar)
Figür Penceresi
.e e
m
Grafiklerin gösterildiği penceredir. Grafiklere dair bir çok ayar ve düzenleme buradan yapılabilir.
w w
w
de rs no tla ri. co m
Temel Grafik Yapıları
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
>>x=1:0.01:2*pi; >>y=tan(x);
de rs no tla ri. co m
>>z=sin(x); >>k=cos(x);
>>figure(1),plot(x,y); >>figure(2),plot(x,z);
w
w w
.e e
m
>>figure(3),plot(x,k);
>>x=1:0.01:2*pi; >>y=tan(x); >>z=sin(x); >>k=cos(x); >>figure(1),plot(x,y); >>figure(2),plot(x,z); >>figure(3),plot(x,k);
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
m
>> close(1); % figüre 1 kapatır
>>close % aktif olan grafik penceresini kapatır
.e e
>>close all; % bütün grafik pencerelerini kapatır
w
w w
>>x=1:0.01:2*pi; >>y=tan(x); >>plot(x,y);
>>clf
.e e
m
>>clf reset
w w
w
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
2 Boyutlu Grafikler Ø x-y dik koordinat düzleminde grafik çizmek için plot(x,y) fonksiyonu kullanılır ve x vektörüne karşı y vektörünün grafiğini verir. Yani x değerleri x-ekseninde, y değerleri yekseninde yer alır. Ø Çizimin görünümünü değiştirmek isterseniz plot(x,y,’s’) fonksiyonu kullanılır. s argümanı, çizimin rengini, işaretleyici sembolünü ve çizgi tipini belirler. Bu üç argümanın kullanımı isteğe (sırası ve sayısı) bağlıdır. Bu işlemi grafik üzerinde de yapabilirsiniz.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
>>A=1:4.7:100; >>B=(1/2)*A.^2;
w
w w
.e e
m
de rs no tla ri. co m
>>plot(A,B,'b---‐+');
Çoklu Grafikler Birden fazla grafiği (aynı x-ekseni baz olmak üzere) üst üste çizmek için
Örneğin: x,y1,y2,….yn için; 1.yol: plot(x,y1,x,y2,..x,yn) 2.yol: plot(x,y1), Hold on, plot(x,y2,..x,yn) Çoklu grafiği etiketlemek için: 1.yol: Grafik üzerinde metin ekleme yapılır.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar 2.yol: legend(‘1.grafikmetin’,’2.grafikmetin’….) fonksiyonu kullanılır.
subplot(m,n,p)
fonksiyonu kullanılır. Bu fonksiyon matris düzeninde çizim alanı açar ve grafikler yine plot fonksiyonu ile çizilir.
Tek değişkenli fonksiyon ( y=f(x) ) grafikleri
1.yol: Çizim aralığı belirlenir ve bu aralıkta x değerleri girilir. Bu x değerlerine karşılıkl y değerleri bulunur ve plot(x,y) veya plotyy(x,y1,x,y2) kullanılır. 2.yol:
fplot(‘f(x)’,[xmin xmax]) veya ezplot
(‘f(x)’) (Grafiği varsayılan -2*pi < x < 2*pi aralığında çizer) fonksiyonları kullanılır.
>>A=1:10; >>B=A.^2;
m
>>C=B.*sqrt(A); >>D=-‐C;
>>subplot(1,2,1), plot(A,C);
.e e
>>subplot(2,2,2), plot(A,D); >>subplot(2,2,4), plot(C,D);
w w
w
de rs no tla ri. co m
Birden fazla grafiği farklı pencerelerde (aynı veya farklı x-ekseni baz olmak üzere) çizmek için
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Eksenleri Düzenleme Komutları
de rs no tla ri. co m
Ø axis ([xmin xmax ymin ymax]): Satır vektörü içinde verilen değerleri kullanarak eksenlerin minimum ve maksimum değerlerini belirler. Ø V=axis: V, ([xmin xmax ymin ymax]) biçiminde bir satır vektörü olup hali hazır grafik için ölçek değerlerini içerir Ø axis, auto axis (`auto`): eksen ölçek değerlerini varsayılan otomatik değerlerine döndürür Ø axis manual: Ölçek değerlerini hal ihazır sınırlarda dondurur ve böylece eğer tutma komutu (hold on) etkin hale getirilmişse, bir sonraki grafik çiziminde aynı eksen değerlerini kullanma imkanı sağlar. Ø axis xy: Sistem orijinin en düşük (en küçük koordinat çifti) sol köşede olduğu, buna karşılık düşey eksenin alttan üste doğru arttığı yerdeki Kartezyen koordinat kullanılır. Ø axis square: halihazır grafik eksenlerini (varsayılan dikdörtgen biçimi yerine) kare biçimine dönüştürür. Ø axis off: Eksenleri, eksen üzerinde yer alan işaretleri ve yazıları siler, kaldırır. Başlık ve herhangi etiketleri text ve gtext komutları ile yerleştirilecek duruma geçirir. Ø axis on: Silinen eksenleri tekrar geri çağırır.
>>x=0:0.01:2*pi; >>y=sin(x); >>z=cos(x);
w
w w
.e e
m
>>plot(x,y,x,z);
>>axis([-‐1 8 -‐2 2]);
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
.e e
m
>>axis auto
w
w w
>> axis square
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
.e e
m
>>axis equal
w
w w
>>axis normal
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
>>axis on
.e e
m
>>grid on
>>colordef black
w w
w
de rs no tla ri. co m
>> axis off
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
de rs no tla ri. co m
>>colordef white, box off;
Grafiğe Bilgi İlave Etme
Grafik üzerinde keyfi bir konuma bir metin yazma ve eksenin altına etiket metni yazdırmak mümkündür. Bu komut fonksiyonların belli başlıları:
Ø title fonksiyonu, grafik üzerine başlık yazdırır. Ø xlabel, ylabel ve zlabel fonksiyonları, sırasıyla x-ekseni, y- ekseni ve z-ekseni üzerine etiket yazdırır. Ø legend fonksiyonu, mevcut bir grafik üzerine açıklayıcı ifadeler ilave eder. Ø text fonksiyonu, grafik üzerinde koordinatları belirten bir konuma bir metin yazdırır. Ø gtext fonksiyonu, fareyi kullanarak grafik üzerinde metin yerleştirilir.
w
w w
.e e
m
Yukarıda verilen fonksiyonları komut penceresinde kullanarak grafik üzerinde gerekli düzenlemeler yapabilir. Bunlara ilaveten şekil penceresinde grafik editörü (Plot Editör) ile de benzer işlemler yapmak mümkündür.
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
.e e
m
Soru Aşağıdaki eşitliklerini t = 3 - 9 aralığında MATLAB ortamında 0.1 hassasiyetle denklem renginde ve değer noktalarını farklı simgelerle belirten; başlığı ve her grafiğin aitliğini gösteren grafik çizdirecek‘denklem.m’ isminde bir .m dosyasıhazırlayınız.
t=3:0.1:9;
a=-t.^2+5*t-1;
w
w w
b=-5*t.^2+8; c=2*t.^2-1;
plot(t,a,'r+-',t,b,'b*--',t,c,'go-.'); title('Denklemler'); legend('a denklemi','b denklemi','c denklemi');
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
Diğer 2 Boyutlu Grafikler
plotyy(x1,y1,x2,y2) fonksiyonu
y ekseninde sağ ve sol kenarların kullanılmasını sağlar. Böylelikle bir bağımsız değişkenle değerleri birbirinden uzak iki bağımlı değişkenin grafikleri çizdirilebilir.
>>A=0:0.1:2*pi; >>B=A.^2;
>>C=sin(A);
w
w w
.e e
m
>>plotyy(A,B,A,C)
fplot sözcüğü function plotting (Fonksiyon çizdirme) sözcüklerinden türetilmiş ve Matlab ortamında iki boyutlu grafikler oluşturmak için çeşitli imkanlar sunmaktadır. fplot fonksiyonunun iki parametresi vardır ve aşağıdaki gibi kullanılır: fplot(FonksiyonAdı, Aralık)
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
de rs no tla ri. co m
Burada fonksiyonadı parametresi string türünde verilmiş tek bir fonksiyona ait ifade olabileceği gibi, aynı anda birden fazla fonksiyon çizdirilecekse bu durumda da string ifadesi biçiminde ve [] embolleri içinde yer alan ve birbirlerinden virgülle ayrılmış fonksiyon ifadelerinden
>>fplot('sin(x)',[-‐10 10 -‐1 1]); >>hold on
>>fplot('cos(x)',[-‐10 10 -‐1 1]);
ezplot
fonksiyonu bir bağımsız bir bağımlı değişkenden oluşan ve sıfıra eşit olan bir eşitliğin grafiğini çizer.
w
w w
.e e
m
ezplot('sin(x)^2+cos(2*y)^3')
line fonksiyonu çizgi çizme amaçlı kullanılır.
>>line([---‐10,10],[-‐10 10]) >>line([-‐10,10],[0 0]) >> line([0,0],[-‐10 10])
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
.e e
m
Soru Y=e2cosx fonksiyonunu 0 ile 4% arasında plot ve fplot fonksiyonlarını kullanarak çiziniz.
w
w w
Diğer Grafik Türleri MATLAB çok çeşitli grafik türlerini desteklemektedir. Verilerin yapısına bağlı olarak uygun bir grafik tür seçilebilir. Aşağıda verilen grafik komutları özel amaçları çeşitli grafiklerin oluşturulması kullanılabilir. Ø Bar ve area fonksiyonları: Çubuk ve alan grafiklerini oluşturulur. Bu grafikler zaman üzerinden sonuçlarının incelenmesi için kullanışlıdır. Bu grafikler üzerinde sonuçlar karşılaştırılır ve bir toplam miktar üzerinde değerlerin payı görülür. bar fonksiyonun değer biçimleri; barh, bar3 ve bar3h dır Ø Polar fonksiyonu: Kutupsal koordinatları kabul eder ve bir kartezyen düzleme kutupsal koordinatların grafiğini oluşturur. Ayrıca grafik düzlemine kutupsal grid oluşturur.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
MATLAB x-y düzlemindeki bir dikdörtgen grid üzerinde noktaların zkoordinatları yolu ile bir ağ gözü düzeyi tanımlar. Birbirine bitişik noktaları düz çizgilerle birleştirmek suretiyle bir grafik oluşturur. Bu da veri noktalarında düğümleri olan bir balıkçı ağına benzer. Ağ gözü grafikleri büyük matrisleri görüntülenmesi veya iki değişkenli fonksiyonların çizgi grafikleri için çok kullanışlıdır. Bu konuda kullanılan belli başlı fonksiyonlar: Ø Ø Ø Ø Ø Ø
mesh, surf: Yüzey grafiği meshc, surfc: Yüzey grafiği ile aynı olup altında kontur grafiği vardır. meshz: perde grafiği (başvuru düzlemi) ile yüzey grafiği. pcolor: Düz yüzey grafiği (değer yalnızca renk ile orantılı) surfl: Belli yönden aydınlatılmış yüzey grafiği surface: Yüzey seviyeden yüzey grafik fonksiyonları bu fonksiyonları esas alır.
Sütun (Bar Chart) Grafiği
.e e
m
1997-1999 yılları arasındaki her yılda bölümlerin öğrenci mezun etme sayısını gösteren aşağıdaki tablo verilmiş olsun:
w w
w
de rs no tla ri. co m
Ø Hist ve rose fonksiyonları: Histogram türü grafiklerin oluşturulmasında kullanılır. Histogramlar veri değerlerinin dağılımını gösterir. Burada hist fonksiyonu verileri kartezyen koordinat sisteminde ve rosefonksiyonu da verileri kutupsal koordinatlar sistemi üzerinde değerlendirir. Ø Stair, stem (ve stem3) fonksiyonları: Kesikli zaman verilerin grafiklerini oluşturur. Bunlardan stairfonksiyonu, verilerin merdiven basamağı biçiminde sürekli grafiği oluşturur. stem fonksiyonu ise veri noktaların düşey çizgileri oluşturur. Ø Compass, feather, quiver (ve quiver3) fonksiyonları: Grafik üzerinde yön ve hız vektörlerini görüntüler. Ø Contour (ve contour3) fonksiyonları: 2 ve 3-boyutlu dış hat çizgilerini oluşturur.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
mezuniyet=[65 67 60 67 65 60 70 50 65];
de rs no tla ri. co m
60 56 68
bar(1997:1999,mezuniyet') xlabel('YILLAR')
ylabel('MEZUN SAYISI')
title('1997-1999 YILLARINDA MEZUN ÖĞRENCİLER') legend('ELT','BİL','ELK', 'TIP')
w
w w
.e e
m
Pasta (Pie Chart) Grafiği
a=[60 65 25]; pie(a) gtext('ÖĞRETMEN ORANI') legend('ELK','BİL','ELT',2)
de rs no tla ri. co m
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
3 Boyutlu Grafikler
3 boyulu uzayda noktaların ve çizgilerin grafiğini oluşturu. plot(x,y,z) komutu 3 boyutlu uzayda koordinatlarıx,z ve z’nin elemanları olan noktalardan geçen tek bir çizgi grafiği oluşturur. Burada x,y ve z’nin aynı boyutta vektörler olması gerekir.
m
Ø MATLAB ile üç boyutlu grafik çizimini gerçekleştirmek için meshgrid ve mesh fonksiyonlarını kullanılır. Ø mesgrid fonksiyonu, x ve y koordinatların oluşturduğu ikililerle bir değerler kümesi hazırlar ve meshfonksiyonu ise be değerler matrislerini kullanarak üç boyutlu grafiği çizer. Ø surf fonksiyonu, mesh fonksiyonu gibi üç boyutlu grafik çizme işini Ø gerçekleştirir. mesh fonksiyonundan farkı, çizilen yüzeyin grid boyunca farklı bölgelerinin farklı renklerde boyanmasıdır.
t = 0:pi/50:10*pi;
.e e
plot3(sin(t),cos(t),t)
w
w w
grid
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar z=x2+y2+xy yüzeyinin –2
[x,y]=meshgrid(-2:0.5:2 -2:0.5:2);
de rs no tla ri. co m
z=x.^2+y.^2+x.*y;
mesh(x,y,z);
w
w w
.e e
m
surface(x,y,z);
Soru x=-12:12, y=-12:12 aralığında z=-(x2+y2)(1/2) üç boyutlu yüzeyini hem mesh hem de surface komutlarıyla çizdirin.
Selçuk Üniversitesi | Kimya Mühendisliği | Matlab Notları 2013 | Emre Özbay, Orhan Baytar
[X Y]=meshgrid(-12:12,-12:12); Z=-sqrt(X.^2+Y.^2); mesh(X,Y,Z);
title('Mesh ile z denkliğinin çizimi'); subplot(2,1,2); surface(X,Y,Z);
title('Surface ile z denkliğinin çizimi');
.e e
m
grid on
w w
w
de rs no tla ri. co m
subplot(2,1,1);
de rs no tla ri. co m
MATLAB
w
w
.e
em
DİFERANSİYEL DENKLEMLER
w
SELÇUKSEM 2013 Konya
3 Nisan 13 Çarşamba
Emre Özbay
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemler
Bir ya da daha fazla fonksiyonun türevlerini içeren denklemlere diferansiyel denklem denir.
✤
Bir yada daha fazla bağımlı değişken ve bir bağımsız deşkenden oluşan diferansiyen denklemlere adi diferansiyel denklem denir.
✤
Bir veya daha fazla bağımlı ve birden fazla bağımsız değişkenin olduğu diferansiyel denklemlere de kısmi diferansiyel denklem denir.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemler
MATLAB ortamında diferansiyel denklemler hem sayısal hemde sembolik (analitik) çözülebilir.
✤
Sembolik ortamda diferansiyel bir denklemi çözmek için dsolve komutu kullanılır.
✤
Diferansiyel denklemlerin sayısal çözümleri için bu denklemleri ikiye ayırmak mümkün
em
✤
Doğrusal (Linear) Diferansiyel Denklemler
✤
Doğrusal olmayan (Nonlinear) Diferansiyel Denklemeler
w
w
w
.e
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemler
Doğrusal diferansiyel denklemlerin çözümü analitik olarak kolay yapılabilirken, doğrusal olmayanları yapmak zordur.
✤
Bunun için çeşitli Euler ve Runge-Kutta yaklaşımları gibi çeşitli sayısal yöntemler geliştirilmiştir.
✤
Bu yöntemleri kullanmak için ya yöntemler programlama mantığına uygun programlanır ya da MATLAB’da tanımlı olan hazır fonksiyonlar kullanılır.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemler
Diferansiyel denklemlerin MATLAB dasayısal çözümlerinde ode23, ode45, ode113, ode15s, ode23s, ode23t, ode23tb, ode15i olarak adlandırılan komutlar kullanılır.
✤
ode23 ve ode45 komutları Ruge-Kutta yaklaşımını kullanır.
✤
ode23, 2. ve 3. mertebeden R-K yaklaşımını kullanırken, ode45 ise 4. ve 5. mertebeden R-K yaklaşımını kullanır.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemler
ode113, 1. mertebeden 13. mertebeye kadar değişken değerli açık ifadeli Adams kestirimci-düzeltici yöntemlerin yeni yorumu olan bir algoritmayı işletir.
✤
ode23s, 2. ve 3. mertebeden doğrusal olarak kapalı ifadeli R-K yaklaşımının stiff halidir.
✤
ode15s, 1. mertebeden 5. mertebeye kadar değişken değerli kapalı ifadeli çok basamaklı yöntemlerin yeni bir türüdür.
✤
ode15i, implisit türden diferansiyel denklemleri çözer.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemler
ode23, gecikmeli diferansiyel denklemleri sabit gecikmelerle çözmek için kullanılır.
✤
bvp4c komutu ise sınır değer problemlerini Collocation metodunu kullanarak çözer.
✤
pdepe komutu ile 1 boyutlu sınır ilk değer problemlerni temsil eden parabolik ve eliptik kısmi diferansyel denklemleri çözer.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemler
ode23tb, 2. ve 3. mertebeden R-K yaklaşımı ile sıkı denklemleri çözmek için kullanılır.
✤
ode23t, ılımlı (orta düzey) sıkı diferansiyel denklemleri trapez kuralına göre çözer.
✤
Bütün bu komutlar hem doğrusal hem de doğrusal olmayan diferansiyel denklemlerin çözümü için kullanılsa da doğrusal denklemlerin çözümü için kullanılan lsim, initial, step komutları The control system toolbox içerisinde geliştirilmiştir.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklem Tanımlama Diferansiyel denklemlerin sembolik çözümünde denklem fonksiyonun içerisine doğruden denklemi yazarak çözüme gidilmesi en uygundur. Zira bu komutta denklem hangitim denklem olduğu önemsenmeden tek satırda girilebilir.
✤
Sayısal çözümlemede ise harici bir fonksiyon dosyasında denklemi tanımlamak önemlidir. Çünkü bu komutlar iterasyon yaptığından harici fonksiyon içerisine verilerin gönderilmesi programlama açısından daha mantıklıdır.
✤
Bazı sayısal çözümlemelerde harici fonksiyon tanımlamaktan başka çareyoktur.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
ode23 ile Diferansiyel Denklem Çözümü ✤
ode23 fonksiyonu aşağıdaki gibi kullanılır:
[t,y]=ode23('fonksiyon_adi',[t0 tson],y0,secenekler,p1,p2); fonksiyon_adi: diferansiyel denklemin tanımlı olduğu harici fonksiyon dosyasıdır. Adı tırnak içerisinde yazılmalıdır. bu dosya fonksiyon tanımlama kurallarına uygun olarak hazırlanmış olmalıdır. Tırnak içerine fonksiyonun ve dolayısıyla dosyanın adı yazılır. (.m) dosya uzantısının yazılmaması gerektiği unutumamaldır.
✤
Burada t değişkenine t0 dan başlayaran tson a kadan iterasyonda kullanılan t değerleri atanır.
✤
y değişkeninde ise birinci sütuna t ye (bağımsız değişkene) karşı y değerleri (bağımsız değişken değerleri) sırasıyla diğer sütunlara ise 1.,2., ... n. dereceden türevlerinin aldığı değerler atanır.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
ode23 ile Diferansiyel Denklem Çözümü ✤
ode23 fonksiyonu aşağıdaki gibi kullanılır:
[t,y]=ode23('fonksiyon_adi',[t0 tson],y0,secenekler); t0: Sayısal çözümlemenin yapılacağı başlangıç iterasyonunun değeri.
✤
tson: #terasyonun son bulacağı değer.
✤
y0: Denklemin t0 noktasında aldığı değer.
✤
Burada y denklemi için y(t0)=y0 şeklinde sınır şartı söz kousudur.
✤
secenekler: Yapılan iterasyona dair bilgileri içeren odeset komutu ile kullnılan değişken takımıdır.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
ode23 ile Diferansiyel Denklem Çözümü - Soru !" ! = = ! !, ! = ! ! − ! !! !
Yukarıda verilen diferansiyel denklemi y(0)=1 başlangıç koşulu altında 0 ve 3 değerleri arasında ode komutu ile çözünüz.
em
%difdenk1.m dosyası function dy_dt = difdenk1(t,y) dy_dt=t.^2-‐y; end
w
w
w
.e
%Program Dosyası (difdenkprog1.m) t0=0; tson=3; y0=1; [t,y]=ode23('difdenk1',[t0 tson],y0); plot(t,y,'k-‐'); title('ode23 komutu ile diferansiyel denklem çözümü'); xlabel('t'),ylabel('y(t)'); grid on;
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
ode45 ile Diferansiyel Denklem Çözümü - Soru !"(!) = −15! ! + 2 cos 2! + ! !"
Yukarıda verilen sabit katsayılı lineer diferansiyel denklemin çözümü, t=[0:3] saniye zaman aralığında ve i(0)=0 ilk koşulu altında, ode45 komutu ile çözün ve çizdirin. %ode 45 ile diferansiyel denklem çözümü clear; clc; t0=0; tson=3; y0=0; [t,a]=ode45('difdenk2',[t0 tson],y0); plot(t,a); title('ode45 ile dif. denk. çözümü'); xlabel('t'),ylabel('i=i(t)'); grid;
w
w
w
.e
em
%difdenk.m dosyası function di_dt = difdenk2(t,a) di_dt=-‐15*a+2*cos(2*t)+t; end
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
dsolve ile Diferansiyel Denklemlerin Çözümü dsolve komutu adi diferansiyel denklemlerin çözümü gerçekleştirilir.
✤
Bu komut symbolic toolbox içerisinde bulunur.
✤
d/dt şeklindeki diferansiyel ifadeyi D harfi temsil eder.
✤
Eğer sınır şartları belirtilmemiş ise üretilecek olan sembolik denklemde c gibi sabitler olacaktır.
em
✤
w
w
w
.e
! !!! − 4! ! − 5 = !
!! ! !! ! −4 ! −5=! ! !! !!
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
dsolve ile Diferansiyel Denklemlerin Çözümü ! !!! − 4! ! − 5 = !
!! ! !! ! −4 ! −5=! ! !! !!
em
>> x_t=dsolve('D3x-‐4*Dx-‐5=t') x_t = C2 -‐ (5*t)/4 -‐ t^2/8 + C3/exp(2*t) + C4*exp(2*t) -‐ 51/16 >> pretty(x_t)
w
w
w
.e
2 5 t t C3 51 C2 -‐ -‐-‐-‐ -‐ -‐-‐ + -‐-‐-‐-‐-‐-‐-‐-‐ + C4 exp(2 t) -‐ -‐-‐ 4 8 exp(2 t) 16
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
dsolve ile Diferansiyel Denklemlerin Çözümü - Soru ! !! + ! ! = 2!
Şeklindeki diferansiyel denklemi aşağıdaki sınır şartları ile dsolve komutu ile çözdürüp grafiğini çizin.
! 0 =0
!′ 0 = 1
em
!′′ 0 = 3
w
w
w
.e
>> S=dsolve('D3x+x=2*t','x(0)=0','Dx(0)=1','D2x(0)=3') S = 2*t + 4/(3*exp(t)) -‐ (4*exp(t/2)*cos((3^(1/2)*t)/2))/3 + (2*3^(1/2)*exp(t/2)*sin((3^(1/2)*t)/2))/3 >> ezplot(S) 3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
dsolve ile Diferansiyel Denklemlerin Çözümü - Soru
w
w
w
.e
em
! !! + ! ! = 2!
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
MATLAB
w
w
.e
em
SEMBOLİK İŞLEMLER
w
SELÇUKSEM 2013 Konya
3 Nisan 13 Çarşamba
Emre Özbay
[email protected]
de rs no tla ri. co m
Sembolik Tanımlama ✤
Sembolik işlemlerde karakterler matlab ortamına sayısal değermiş gibi tanımlanır.
✤
String bir değişken değil sayısal bir değişkenmiş gibi algılanır.
✤
Şu şekilde tanımlamalar mümkündür:
em
>> A=sym('a') A = a
w
w
w
.e
syms a b c;
3 Nisan 13 Çarşamba
>> A=sym('a','real') A = a >> B=sym('b','unreal') B = b >> % veya syms a real,syms b unreal >> z=A+B*i z = a + b*i Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sembolik Biçime Dönüştürme
w
w
w
.e
em
>> % teferruatlı kesirli >> a=3.2; >> sym(a,'f') ans = 3602879701896397/1125899906842624 >> % Kesirli >> sym(a,'r') ans = 16/5 >> % exponensiyel >> sym(a,'e') ans = (4*eps)/5 + 16/5 >> Sembolik anlamlı gösterim >> sym(a,'d') ans = 3.200000000000000177635683940025
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sembolik Biçimden Sayısal Biçime Dönüştürme ✤
Sembolik olarak gösterimde olan sayısal ifadeler şu şekilde sayısal değerlerine kavuşurlar:
w
w
w
.e
em
>> A=sym(4/5) A = 4/5 >> SayisalA=double(A) SayisalA = 0.8000
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sembolik İşlemler 3
∫
x x dx = 3
1
3
∫
x x dx = 3 2
Sembolik Çözüm
1
0
1 = 3
Analitik Çözüm
w
w
w
.e
em
0
2
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sevimli Görünüm
✤
>> pretty(X)
+-‐ -‐+ | 2 1/2 | | b + (b -‐ 4 a c) | | -‐ -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ | Özellikle sembolik gösterimlerde | 2 a | verilen ekram çıktıları çok karmaşık | | | 2 1/2 | gibi gözükür. | b -‐ (b -‐ 4 a c) | Bütün bu karmaşıklığı gidermek için | -‐ -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ | | 2 a | pretty komutu ile çıktılaın daha +-‐ -‐+ sevimli gözükmesini sağlayabilriz.
w
w
w
.e
✤
MATLAB komut tabanlı bir yazılım olduğundan sayısal sonuçlarda text formatında ekrana yazdırılır. Bazen alınan sonuçlar gözümüze çok karmaşık gelebilir.
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sembolik Çözümleme
X = -‐(b + (b^2 -‐ 4*a*c)^(1/2))/(2*a) -‐(b -‐ (b^2 -‐ 4*a*c)^(1/2))/(2*a) A = -‐(c + b*x)/x^2 B = -‐(a*x^2 + c)/x C = -‐ a*x^2 -‐ b*x ans = -‐(b + (b^2 -‐ 4*a*c)^(1/2))/(2*a) -‐(b -‐ (b^2 -‐ 4*a*c)^(1/2))/(2*a)
w
w
w
.e
em
%sembolicanaprog1.m dosyası clc,clear; syms a b c; X=solve('a*x^2+b*x+c','x') A=solve('a*x^2+b*x+c','a') B=solve('a*x^2+b*x+c','b') C=solve('a*x^2+b*x+c','c') solve('a*x^2+b*x+c')
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Çarpanlarına Ayırma
Sembolik çözümlemenin yapıldığı sonuçların çarpanlarına ayrılmasını istiyorsak factor fonksiyonu kullanılır. >> S=x^2-‐y^2; >> factor(S) ans = (x -‐ y)*(x + y)
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Çarpanları Dağıtma
Sembolik görünümdeki denklem tek düze ifadeye indirgenir. >> syms x; >> y=x^2-‐5; >> z=2*x+7; >> V=z*y V = (2*x + 7)*(x^2 -‐ 5) >> expand(V) ans = 2*x^3 + 7*x^2 -‐ 10*x -‐ 35
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Denklemi Sadeleştirmek ✤
Bir denklemi sadeleştirmek için simplify komutu kullanılır.
w
w
w
.e
em
>> S=(x^3-‐4*x)/(x^2+2*x); >> simplify(S) ans = x -‐ 2
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sembolik İntegral İşlemi int(S), S’in belirsiz integralini alır.
✤
int(S,v), S’in v’ye göre belirsiz integralini alır.
✤
int(S,a,b),S’in varsayılan sembolik değişkene göre a’dan b’ye kadar belirli integralini alır.
✤
int(S,a,b,v),S’in v’ye göre a’dan b’ye kadar belirli integralini alır.
em
✤
şeklindedir.
w
w
w
✤
Sembolik integral alma fonksiyonu int olup genel formatı:
.e
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sembolik İntegral İşlemi 5
∫ (−2 x − 4 x + 20)dx
clc,clear,syms x integral=int('-‐2*x^2-‐4*x+20') pretty(integral)
2 2 x (x + 3 x -‐ 30) -‐ -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ 3
w
w
w
.e
em
integral = -‐(2*x*(x^2 + 3*x -‐ 30))/3
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sembolik Türev
Türev alma işleminde kullanılan fonksiyon adı diff olup sembolik işlem mantığı çerçevesinde genel formatı: diff(S), S’in türevini alır.
✤
diff(S,v), S’in v’ye göre türevini alır.
✤
diff(S,n), n pozitif bir tamsayı olmak üzere n. dereceden türevini alır.
✤
diff(S,'v',n) veya diff(S,n,'v'), S’in v’ye göre n. dereceden türevini alır.
em
✤
.e
✤
şeklindedir.
✤
Türevin x=p’deki değerini bulmak için » subs(turev,x,p) kullanılır.
w
w
w
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Sembolik Türev
f(x)=5x3+ax2+bx -14 (a ve b sabit değerdir) fonksiyonunun türevini bulunuz.
w
w
w
.e
em
>> syms a b x >> f=5*x^3+a*x^2+b*x-‐14; >> diff(f) ans = 15*x^2 + 2*a*x + b >> pretty(ans)
3 Nisan 13 Çarşamba
2 15 x + 2 a x + b Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemlerin Sembolik Çözümü ✤
Diferansiyel denklemlerin sembolik çözümleri dsolve fonksiyonu ile gerçekleştirilir. A= dsolve(‘dif1’,‘dif2’,...,‘sınırşartı1’,‘sınırşartı2’); dif: Diferansiyel denklem
✤
sınırşartı: Çözüm için gerekli olan çözüm şart(lar)ı.
✤
Burada denklem içerisinde birinci türev D, ikinci türev D2, üçüncü türev ise D3 olarak gösterilmelidir.
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemlerin Sembolik Çözümü !" + ! = cos ! + ! !!
Şeklinde bir diferansiyel denklemin çözümü aşağıdaki gibidir.
w
w
w
.e
em
>> Fx=dsolve('Dx+x=cos(t)+t') %sınır şartı yok Fx = t + cos(t)/2 + sin(t)/2 + C14/exp(t) -‐ 1 >> Fx=dsolve('Dx+x=cos(t)+t','x(0)=1') %sınır şartı var Fx = t + 3/(2*exp(t)) + cos(t)/2 + sin(t)/2 -‐ 1 >> Y=inline(Fx) Y = Inline function: Y(t) = t+exp(-‐t).*(3.0./2.0)+cos(t).*(1.0./2.0)+sin(t).*(1.0./2.0)-‐1.0 >> Y(0) ans = 1
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
Diferansiyel Denklemlerin Sembolik Çözümü !! ! = sin!(2!) ! !!
Şeklinde bir diferansiyel denklemin çözümü aşağıdaki gibidir.
w
w
w
.e
em
>> F2x=dsolve('D3x=sin(2*t)','D2x(0)=1','Dx(0)=0','x(0)=-‐1') F2x = cos(2*t)/8 + (3*t^2)/4 -‐ 9/8
3 Nisan 13 Çarşamba
Selçuk Üniversitesi | Emre Özbay |
[email protected]
de rs no tla ri. co m
MATLAB
w
w
.e
em
PROGRAMLAMA
w
SELÇUKSEM 2013 Konya
3 Nisan 13 Çarşamba
Emre Özbay
[email protected]
de rs no tla ri. co m
Matlab Programlama V=input(‘hız değeri gir’);
Giriş
Değişken Tanımlama
em
Bilgi Alma
#şlemler
Sonuç Verme
w
w
w
.e
fprintf(‘#vme %. 1f dir.’);
3 Nisan 13 Çarşamba
V=4; t=300;
Son
a=V/t;
de rs no tla ri. co m
Fonksiyon Tanımlama ✤
Harici fonksyonların tamamı .m dosyalarında hazırlanır.
✤
Aşağıdaki gibi yapılara sahiptir:
function ‘Döndürülecek değerler’ = fonksiyon_adi(parametreler) işlemler;
em
#şlemler bölümünde bütün işlemler yapılır. Dödürülecek kaç değer varsa döndürülür. Eğer çok değer varsa (vertör ise) fonksiyon kullanılacağı zaman değerler vektöre atanmalıdır. >>[Xdegeri, YDegeri] = ... hesapla(5,7);
.e
function [x,y] = hesapla(a,b) x=a*b; y=-‐x;
w
w
Yada aşağıdaki gibi değer atanmadan fonksiyon tanımlanır. Eğer bu şekilde olursa işlemler bölümünde hangi işlemler varsa yapılır.
w
function fonksiyon_adi(parametreler) işlemler; 3 Nisan 13 Çarşamba
de rs no tla ri. co m
Fonksiyon Tanımlama
Fonksiyon tanımlarken şunlara dikkat edilmedlidir:
Matlabda tanımlı (hedef klasörlerin herhangi birinde var olan) bir fonksiyonla aynı isimle olmamalı
✤
Hedef klasörlerden birinde olan dosyalar ile aynı isimde olmamalı
✤
‘function’ ifadesi ile başlamalı
✤
Fonksiyon adı ile dosya adı aynı olmalı
w
w
w
.e
em
✤
3 Nisan 13 Çarşamba
de rs no tla ri. co m
Fonksiyon Tanımlama
#deal gaz denkleminde hacmi bulan bir fonksiyon yazalım. Gidiler: Basınç (P), Mol sayısı (n), Sıcaklık (T) Çıktılar: Hacim (V)
em
% idealhacim.m dosyasının içeriği function V = idealhacim(P,n,T) R=0.082; V=(n*R*T)/(P);
w
w
w
.e
>> % Matlab ortamı >> hacim=idealhacim(2,3,300) hacim = 36.9000
3 Nisan 13 Çarşamba
de rs no tla ri. co m
Mantıksal Operatörler İşaret <
Küçük
Büyük eşit Eşit mi
∼=
Eşit değil mi
w
w
==
Küçük eşit
w
.e
>=
Büyük
em
> <=
Anlamı
3 Nisan 13 Çarşamba
de rs no tla ri. co m
Mantıksal Operatörler
em
!
w
w
w
.e
Mantıksal operatörlerden gelen cevap ‘Evet’ ise 1 ‘Hayır’ ise 0 cevabı verilir.
3 Nisan 13 Çarşamba
de rs no tla ri. co m
Mantıksal Operatörler
w
w
w
.e
em
>> x=2:2:18 x = 2 4 6 8 10 12 14 16 18 >> y=[0 4 3 5 10 13 17 16 20]; >> mantik1=x>=8 mantik1 = 0 0 0 1 1 1 1 1 1 >> mantik2=x>y mantik2 = 1 0 1 1 0 0 0 0 0 >> mantik3=(x==y) mantik3 = 0 1 0 0 1 0 0 1 0 >> z=y>10 z = 0 0 0 0 0 1 1 1 1 >> W=z.*y W = 0 0 0 0 0 13 17 16 20 3 Nisan 13 Çarşamba
de rs no tla ri. co m
Mantıksal İşaretçiler İşaret
em
&
ve
veya
w
.e
∣
Anlamı
w
w
~
3 Nisan 13 Çarşamba
değil
de rs no tla ri. co m
Mantıksal İşaretçiler
w
w
w
.e
em
>> x=-‐1:3:17 x = -‐1 2 5 8 11 14 17 >> mantik1=x<8 mantik1 = 1 1 1 0 0 0 0 >> mantik2=~(x>5) mantik2 = 1 1 1 0 0 0 0 >> mantik3=(x>0)&(x<14) mantik3 = 0 1 1 1 1 0 0 >> mantik4=xor((x<3),(x>11)) mantik4 = 1 1 0 0 0 1 1
3 Nisan 13 Çarşamba
de rs no tla ri. co m
Mantıksal Fonksiyonlar
x veya y den her hangi ikisi doğru veya yanlış ise 1 diğerlerinde 0 değerini döndürür.
xor(x,y)
all(a)
a vektörü içinde tüm elemanlar 0‘dan farklı ise 1 değilse 0 değerini döndürür.
w
.e
em
any(a)
a vektörü içinde herhangi bir eleman 0’dan farklı ise 1 değilse 0 değerinin döndürür
w
w
find(a)
3 Nisan 13 Çarşamba
a bir vektör ise a’nın sıfır olmayan elemanlarının konumunu gösterir.
de rs no tla ri. co m
Mantıksal Fonksiyonlar
a elemanı NaN değerinde ise 1 değilse 0 değerinin döndürür
isnan(a)
a vektörünün elelanları sonlu sayı ise 1 değilse 0 değerinin döndürür
isfinite(a)
a vektörünün elelanları inf veya -‐inf ise 1 değilse 0 değerinin döndürür
isinf(a)
eğer a matrisi boş ise 1 değilse 0 değerinin döndürür. a ve b matrislerinin birbirlerine eşit olup olmadığını kontrol eder.
.e
isequal(a,b)
em
isempty(a)
w
w
isreal(a)
w
islogical(a)
3 Nisan 13 Çarşamba
a matrisi içerisindeki tüm sayılar real (gerçek) sayı ise 1 değilse 0 değerinin döndürür a matrisi içerisindeki tüm sayılar rlojik sayılar ise 1 değilse 0 değerinin döndürür
de rs no tla ri. co m
Matıksal İşlemler - Soru ✤
Kullanıcı klavye yardımı ile elemanları reel sayılar olan bir matris girecektir. Yazılan MATLAB programı ile bu matristeki pozitif sayılar bir matrise, negatif sayılar bir diğer matrise, 1‘den küçük veya 5‘den büyük sayılar ise başka bir matrise atanacaktır. Bu işlemi yapan bir MATLAB programı yazınız.
‣A=input('[....
; .... ; ....] Şeklinde bir matris
w
w
w
.e
em
girin '); ‣disp('Girdiğiniz matristeki negatif sayılar'); ‣A1=(A<0).*A ‣disp('Girdiğiniz matristeki pozitif sayılar'); ‣A2=(A>0).*A ‣disp('Girdiğiniz matristeki 1 den küçük 5 den bütük sayılar'); ‣A3=(A<1 | A>5).*A 3 Nisan 13 Çarşamba
de rs no tla ri. co m
Koşul işlemleri
w
w
w
.e
em
if (eğer) (1 şart) if mantıksal ifade deyim end
else (değilse) (2 şart) if mantıksal ifade deyim 1 else deyim 2 end
3 Nisan 13 Çarşamba
elseif (değilse eğer) (n şart) if mantıksal ifade 1 deyim 1 elseif mantıksal ifade 2 deyim 2 …… elseif mantıksal ifade n-1 deyim n-1 else deyim n end
UYGULAMALAR
de rs no tla ri. co m
1. Aşağıdaki ifadeleri Matlab formatında yazınız a. axn-5 b. (m/3)2n(k-3r)
.e e
m
c. 𝑢𝑣 !!! + 1 d. (abg)/c-1/h 2. Aşağıdaki ifadeleri Matlab formatında yazınız ve sonuçlarını bulunuz. a. 10/log100 b. elog10 c. ln(e10) d. 3cos(pi) e. sin(7pi/4) f. 1+(1/2)2+(1/3)3+(1/4)4+(1/5)5 g. ln(1000+(2pi)-2) h. e (i*pi) i. 5sin(2.53-pi)+1/(75- 9) 3. a=2, b=5 ise aşağıdaki ifadelerin sonuçlarını bulunuz. a. c=a+b b. d=a+bc c. e=bc+a2 d. f=a/0 e. g=2e20/e 4. x=2, y=3, z=4, t=5 ise aşağıdaki ifadelerin sonuçlarını bulunuz. a. s1=xyzt b. s2=(1-xy)(1-zt) c. s3=1/x/1/y/1/z/1/t d. s4=(x(y+z))t e. s5=(z-y)2/(t-x)2- 𝑥𝑦𝑧𝑡 !"
!
!!
6. a=sqrt(-1), b=sqrt(a) ise aşağıdaki ifadeleri yazınız. a. a/b b. a\b c. b/a d. b\a
w w
w
!"
5. x=5 ve y= ise z= +𝑥 !.!" işleminin sonucunu bulnuz
7. B=
! !!!!
a. b. c. d. !
olduğuna göre aşağıdaki ifadelerin sonuçlarını bulunuz.
Gerçel kısmı Sanal kısmı Eşleniği Mutlak değeri !"
!!
8. x= ! ve y=arccos( ) ise ! ! değeri nedir !
-1
9. sin (sin30) değerini bulunuz.
!
10. x=xo+vot+ gt2 formülünde xo=120 m, vo=7m/s ve g=9.81 m/s2 ise t=5 s için x değerini !
bulunuz. !!!!
de rs no tla ri. co m
11. x=25 ve y=9 ise A=(!!!)! (!!!)! ifadesinin değerini bulunuz.
! ! !
12. T=290, r=0.0076, a=0.765, b=0,0675, A=20,ve B=20 için K=(!!!)! −
değerini
bulunuz.
13. Gauss olasılık yoğunluk fonksiyonu, f(x)=
!
!!"!
−𝑒 !
(!!!)! !!
şeklindedir, bu ifadeye göre
.e e
m
a=10, x=2 ve c=0.5 için f(x) değerini bulunuz. 14. P(x)= x4+3x3-15x2-2x+9 polinomunun köklerini bulunuz. 15. P(x)= x4+3x3-15x2-2x+9 polinomunun x=2 için değerini bulunuz. 16. P(x)= x4+3x3-15x2-2x+9 polinomunun türevini bulunuz. 17. P(x)= x4+3x3-15x2-2x+9 polinomunun integralini bulunuz. 18. x=45o için sin(4x)-2cos(x)2 ifadesinin değerini bulunuz? 19. k=30o için sin(k)2+cos(k)2=1 özdeşliğini gerçekleyiniz. 20. x=35o için y= (sinx-1)2/(1-cos2x) ve sonra da z=y-tan-1x ifadesini hesaplayınız? 21. Aşağıdaki vektörleri üretiniz. a. -20 ile 20 arasında tek sayılardan oluşan a vektörü. b. 70 ile 180 arasındaki çift sayılardan oluşan b vektörü. c. Tüm elemanları -2 olan 13 elemanlı bir c vektörü. d. 0 ile 500 arasında 15 artımlı bir d vektörü 22. a=1:5, b=1:2:9 olmak üzere aşağıdaki işlemleri yapınız a. c=a+b b. d=a-b c. e=3a d. f=ab e. h=a/b f. k=[b a] g. l=[a(1:2:5) 11 12 13] h. m=[1 2 a 3 4] i. n=a’ 23. x=(0:0.1:2)*pi vektörüne göre a. ilk beş elemanı gösteriniz; b. 11. Elemana kadar sayıları gösteriniz; c. Sırasıyla 10.9.8.7. elemanları gösteriniz 1 2 3 24. A= 4 5 6 ise 7 8 9 a. A matrisinin transpozesi olan B matrisini; b. A matrisinin tersi olan C matrisini; c. AC çarpımını; d. AA ve A.*A matrislerini; e. A-1A ve AA-1 işlemini;
w w
w
!
!!!
.e e
29. –2 ≤ x ≤ 2 aralığında olacak şekilde x’in e-x ve x2 karşı grafiklerini çiziniz.
w w
w
A matrisini giriniz. A matrisini mevcut çalışma klasörünüze katsayilar ismiyle kaydediniz. Dosyanın kaydedilip kaydedilmediğini kontrol ediniz. (OpenFilespenceresinden) MATLAB oturumundaki tüm değişkenleri siliniz (clear) Command window’da yazılmış tüm ifadeleri temizleyiniz. (clc) A*2 işlemini yapınız. A matrisini geri çağırınız. A matrisinin üst ve alt üçgen matrislerini oluşturunuz. C=[A zeros(3,2)] işlemini yapınız.
m
ABCDEFGHI-
de rs no tla ri. co m
f. A matrisin determinantı bulunuz; −1 2 0 25. T= 4 −2 5 verildiğine göre 3 2 1 a. T(3,2) b. T(3,:) c. T(:,2) d. T(:,3)=[ ] adreslemelerini bulunuz 26. 2x-y-3z=2 y-4z=6 2x+y-4z=7 ise x, y ve z değerini bulunuz. 27. r+s+t+u=4 2r-s+u=2 3r+s-t-u=2 r-2s-3t+u=-4 ise r, s, t, u değerini bulunuz. −9 6 5 28. A= 78 14 6 10 21 13