Giris MATLAB, MATrix LABoratory szöcüklerinden gelir ve temelde sayisal ve analitik olarak matematiksel fonksyionlarin ifadelerinin kullanildigi basta mühendislik alaninda olmak üzere birçok sayisal analizi kullanan bilimlerde son yillarda oldukça sik kullanilan bir hazir yazilim paketidir. Özellikle yüksek performans gerektiren algoritma hazirlama ve gelistirme, sayisal analiz, simülasyon, mühendislik problemlerinin sayisal ve grafik çözüm tekniklerinde son derece etkindir. Baslarken Matlab yazilim paketinde kullanilacak olan her hazir fonksyion yaninda kullanicinin da kendi yazilimini olusturma imkani saglar. Matlab’in gerek kisisel bilgisayarlarda (PC) gerekse diger isletim sistemlerinde (UNIX, LINUX) gibi bazi ufak farkliliklar disinda kullanimi, ya dogrudan kendi çalisma ve komut ekreaninda ya da ‘m’ uzantili program dosyasi olusturmak suretiyle (script) olmaktadir. Program çalistrildiginda çalisma ekranina ilk olarak ‘>>’ komut ekrani gelecektir. >> 4.3+4.2 ans = 8.5000 ‘ans’ 2.3 ile 4.2 sayilarinin toplamini sonuc olarak verecektir. (answer) >> format rat >> 5.1-3.3 ans = 9/5 Sonuç format rat ile kesirli halde alinabilir. >> format compact >> 5*7 ans = 35 Islem sonucu arasina ekstra bosluk birakilmaz Temel Matematiksel islemler >> 5^8 ans = 40 >> format long ile istenilen sonucun duyarliligi gösterilir. >> sqrt(2) ans = 1.41421356237310
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Giris
MATLAB, MATrix LABoratory szöcüklerinden gelir ve temelde sayisal ve analitik olarakmatematiksel fonksyionlarin ifadelerinin kullanildigi basta mühendislik alaninda olmak üzerebirçok sayisal analizi kullanan bilimlerde son yillarda oldukça sik kullanilan bir hazir yazilim paketidir. Özellikle yüksek performans gerektiren algoritma hazirlama ve gelistirme, sayisalanaliz, simülasyon, mühendislik problemlerinin sayisal ve grafik çözüm tekniklerinde sonderece etkindir.
Baslarken
Matlab yazilim paketinde kullanilacak olan her hazir fonksyion yaninda kullanicinin da kendi yazilimini olusturma imkani saglar. Matlab’in gerek kisisel bilgisayarlarda (PC) gerekse diger isletim sistemlerinde (UNIX, LINUX) gibi bazi ufak farkliliklar disinda kullanimi, ya dogrudan kendi çalisma ve komut ekreaninda ya da ‘m’ uzantili program dosyasi olusturmak suretiyle (script) olmaktadir. Program çalistrildiginda çalisma ekranina ilk olarak ‘>>’ komut ekrani gelecektir.
>> 4.3+4.2
ans =
8.5000
‘ans’ 2.3 ile 4.2 sayilarinin toplamini sonuc olarak verecektir. (answer)
>> format rat>> 5.1-3.3
ans =
9/5Sonuç format rat ile kesirli halde alinabilir.
>> format compact>> 5*7ans =
35Islem sonucu arasina ekstra bosluk birakilmaz
Temel Matematiksel islemler >> 5^8ans = 40
>> format long ile istenilen sonucun duyarliligi gösterilir.>> sqrt(2)ans = 1.41421356237310
Temel trigonometric operatörler (cos, sin, tan, sec, csc, cot), tersleri (acos, asin, atan,asec, acsc, acot), exponansiyel fonksyionexp, dogal logaritma log.
Matlab’te hazir fonksyionalrin kullanim sekillerini bilmek istenirse ‘help’ komutu kullanilir>> help abs (mutlak deger icin yardim dosyasi cagirma)
ABS Absolute value. ABS(X) is the absolute value of the elements of X. When X is complex, ABS(X) is the complex modulus (magnitude) of the elements of X.
See also SIGN, ANGLE, UNWRAP.
Overloaded methods help sym/abs.m
Degiskenler
Tüm yazilabilir karakterler degisken olarak atanabilir ve ‘=’ olarak verilir.
>> x=23x =
23
Degislen isimleri büyük ve küçük harf ayrimina hassastir. X ve x degiskenleri ayri olarak tanimlabilir.>> x^2-3*x+2ans = 30>> log(x)ans =
1.94591014905531>> sin(x)ans = 0.65698659871879
Yeni bir ifade icin bir önceki degisken kullanilabilir. Her islem ssonucu bellekte saklanir. >> y=8*xy = 56
>> x=x+5x = 12
>> yy = 56
>> who komutu kullanilan degisken isimlerini verir
Your variables are:
ans x y
>> whos komutu degiskenlerin boyut bilgisini verir. Name Size Bytes Class
ans 1x1 8 double array x 1x1 8 double array y 1x1 8 double array
Grand total is 3 elements using 24 bytes
Bellekteki degiskenleri silmek icin ‘clear’ komutu kullanilir. Bu asamadan sonra degiskenler çagrilmak istenirse;>> clear>> who>> x??? Undefined function or variable 'x'.
ile karsilasilir.
Karmasik Sayilar
Genel formati a+ib, a-ib, a+bj, a+jb olan ifadelerdir.
>>2-3i
ans =
2.0000 - 3.0000i
>> 2-3*i
ans =
2.0000 - 3.0000i
ayni ifadenin 2-i3 olarak yazilamayacagina dikkat edilmeli.
Karmasik sayilarin taniminda ‘complex’ fonksyionuda kullanilir. Bu fonksyion karmasik sayinin gerçel ve sanal kisimlarini verir.
Özellikle saha ve gozlem verileri üzerinde yapilacak analizlerin ve degerlendirilmeler için istatistiksel yöntemleri Matlab’te kullanmak mümkündür. Bilinen en temel komutlar;max : Veri kümesindeki en büyük degeri bulur.min : Veri kümesindeki en küçük degeri bulur.length : Küme içinde kaç eleman oldugunu verir.sum : Kümenin toplam sayisini verirprod : Verilerin çarpimini hesaplarmedian : Verilerin ortanca degerini hesaplarstd : Standart sapmamean : Ortalama deger yada aritmetik ortalama
>> A(:,[1 3])=[] 1. ve 3. sütünlar kaldirildiktan sonraki durumA = 7 1 3 1 -2 0
Nokta çarpim
Matlab dilinde dot (nokta islemler) islemler çarpma *. Bölme ./ veya .\ Üstalma .^ olarak kullanilir. Yani nokta isaretli islemler matrislerde eleman (elemanter) islem yapilacagini gösterir. N bier sakaler olmak üzere a.^n, a matrisindeki her bir elemanin n. katresinin alinacagini ifade eder( Inan, A., 2004). Vektörlerin her elemani çarpilir ve kümülatif toplam elde edilir. >> v=[7; 23; 15; 2], w=[5; -2; 1; -8]v = 7 23 15 2w =
5-2
1-8
>> dot(v,w)ans =
-12
Nokta çarpim simetriktir ayni sonuç alinir.>> dot(w,v)ans =
-12
Bir vektörün boyu ||v||=√{v·v}. ise >> vlength=sqrt(dot(v,v))vlength =
28.4077
Yada norm komutu ile de elde edilir.>> norm(v)ans = 28.4077
Iki vector arasindaki açi θ ise v·w=||v||||w||cosθ. θ = arccos((v·w)/||v||||w||). çözümü
Ayni boyutttaki matrislerin toplami gerçeklestirilebilir.>> C=[3 1; 6 4]C = 3 1 6 4>> A+C??? Error using ==> +Matrix dimensions must agree.
Seklinde hatali sonuç alinir.
Bir matrisin elemanlarinin scalar bir sayi ile çarpilmasi.
A=[1 2 ; 3 4]
A =
1 2 3 4
>> 3*A
ans =
3 6 9 12
‘ * ‘ çarpim operatörü olup 2A seklinde yazilamaz.>> 2A??? 2 |Missing operator, comma, or semi-colon.
Ayni sekilde vektörlerin scalar çarpimlari ve ara islemleri yapilabilir.
B=[2 ;3]
B = 2 3>> C=[4 ;3]C =
4 3>> D=3*A-2*CD =
-2 3
Iki matrisin A*B çarpimi A m×n ve B n×k oldugunda geçerlidir. Sonuç A*B matrisi m×kboyutundadir.>> A=[3 1 7 2; 6 -3 4 2; 9 4 -1 -2]A = 3 1 7 2 6 -3 4 2 9 4 -1 -2>> B=[1 2; 3 4; 5 6; 7 8]
B = 1 2 3 4 5 6 7 8>> A*Bans = 55 68 31 40 2 12
Matlab’da islem satiri devam edemeyecek durumda ise … kullanilirA=[2;2;2 ...;33]A = 2 2
2 33
Matriks rank hesaplama için Bsr matrisin tüm karesel alt matrislerinden, determinanti sifirdan farkli olan en yüksek boyutlusunun boyutuna A matrisinin ranki denir. >> A=[1 2 1 4; 2 3 1 3; 3 2 1 2; 4 3 1 1]A = 1 2 1 4 2 3 1 3 3 2 1 2 4 3 1 1>> rank(A)ans = 3
Ters Islemler
Bir A matrisinin tersi A^(-1) yada inv(A) ile gösterilir. Inv ters islem yapma operatörüdür. >> A=[2 1 1; 1 2 2; 2 1 2]A = 2 1 1 1 2 2 2 1 2>> Ainv=inv(A)Ainv = 2/3 -1/3 0 2/3 2/3 -1
-1 0 1
Sonucun saglanmasi için ters ve kendisi birim matrisi vermelidir.>> A*Ainvans = 1 0 0 0 1 0 0 0 1>> Ainv*Aans =
1 0 0 0 1 0 0 0 1
Eger matris tekil ise tersi alinamaz. Hatali sonuç alinir. >> B=[1 2 3;4 5 6;7 8 9]B = 1 2 3 4 5 6 7 8 9>> inv(B)
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.055969e-018.ans = 1.0e+016 *
-0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007
-0.4504 0.9007 -0.4504
B matrisinin rank degeri >> rank(B)ans =
2
Rank degeri 3’den küçük oldugundan B matrisi tekildir, Matrisin determinantinin sifirdanfarkli deger almasi gerek.>> det(B)ans = 0
MAtlab tarafindan tekil olarak gorulen tersi alinabilen matrisler vardir.
>> format long>> C=[1.00000000000001 1; 1 .99999999999999]C = 1.00000000000001 1.00000000000000 1.00000000000000 0.99999999999999>> inv(C)Warning: Matrix is singular to working precision.ans = Inf Inf Inf Inf>> rank(C)ans = 1>> det(C)ans = 0>> rref(C)ans = 1.00000000000000 0.99999999999999 0 0
Matlab matrisi rank=1 ve determinanti 0 oldugundan tekil kabul eder..Ancak eger ε = 0.00000000000001, then det(C)=(1+ε)(1−ε)−1=−ε2 ≠ 0, boylece tersi alinabilir. Format komuru ile 1+ε ve 1−ε olarak birbirinden farkli 15 digitli bir deger elde edilir. Bu durumda tanim ;
(1+ε)(1−ε)=1−ε2 = 0.9999999999999999999999999999
Bu klasik anlamda bir ters çözüm isleminin tekil matrisler icin çözüm asamasidir.
Ax=b olarak verilen bir ifadenin çözümünü ele alalalim, Burada A is terselenebilir olsun, basitolarak x=A
Q matrisinin kolonlari A matrisinin öz-temellerini olusturur. v Q-1AQ=D. Saglamasi>> inv(Q)*A*Qans = 2.0000 0 0.0000 0.0000 2.0000 0.0000
-0.0000 0.0000 5.0000
Q gerçekçe özvektörlerin dik normalarini olusturur. >> Q'*Q
ans = 1.0000 0.0000 -0.0000
0.0000 1.0000 -0.0000-0.0000 -0.0000 1.0000
Bir matrisin kösegen degerleri için ‘diag(A)’ kullanilir.>> a=[2 4 4;2 3 1;3 -2 5]
a =
2 4 4 2 3 1 3 -2 5
>> diag(a)
ans =
2 3 5
Hazir matris fonksiyonlari
Rand, ones, zeros, eye:
‘rand’ veya ‘randn’ fonksyionlarinin kullanilmasi; bazi durumlarda yalnizca bir özelligi veya bir seyi denemek ve durumunu gözlemek için rastgele sayilardan olusmus bir matris olusturmak için kullanilir. ‘Rand’ düzenli olarak dagilmis ‘randn’ ise normal olarak dagilmis rastgele sayi üretir (Inan, A., 2004).
Örnegin; a=-5 ile b=5 arasinda yani -5 ile +5 arasinda rastgele sayili 2x4 (iki satur 4 sütünlu) bir matris üretmek istenirse
>>a=-5+10*rand(2,4)
a =
4.3547 -0.8973 -4.4211 3.1317
4.1690 3.9365 -1.4713 -4.9014
>> c=rand(4) 0 ile 1 arasinda 4x4 matris olusturur. Özellikle iki boyutlu verilere rastgele gürültü eklenmesinde temel kullanima uygundur.
Pascal(i) fonksyionu i. siraya kadar passcal üçgeninin elemanlarindan olusan ixi boyutunda bir matris olusturulur.
>> pascal(4)
ans =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
11 1
1 2 1 1 3 3 1
1 4 6 4 1
‘magic(j)’ fonksiyonu jxj uzunlugunda 1’den j’ye kadar sayilardan olusan (j=2 hariç) esit satir, sütün ve kösegen toplamina sahip bir kare matris olusturur.
>> magic(3)
ans =
8 1 6
3 5 7
4 9 2
8 + 1 + 6 = 15 + 3 + 5 + 7 = 15 + 4 + 9 + 2 = 15
---------------- 15 15 15
[x,y]=meshgrid(x,y) fonksiyonu x ve y vektörlerini X ve Y matrislerine dönüstürerek aslinda 3 boyutlu grafik çizimleri için bir veri ortami hazirlar.
Burada -2 ile 2 arasinda artimi 1 olan X ve Y matrisleri olusturulmustur.
Grafik Çizimleri
‘plot’ fonksiyonu belirli bir düzlem verisinin grafik gösterimi için kullanilir. Bir x ve y düzleminde verilen bir verinin gösterimi plot(x,y). Örnegin x ve y elemanlari (0,0), (1,1), (4,2) ve (5,−1) olan düzlem
>> x=[0 1 4 5 0];>> y=[0 1 2 -1 0];>> plot(x,y)
Bir baska örnekte y=x3 fonksiyonu [−2,2] olarak tanimlaniyorsa bunun matlab da çizimini
yapalim. Araligini kendimizin belirleyecegi −2 den 2 x degerleri
>> x=-2:.05:2; % 0.05 artim
x vektörü 1x81 matrisini olusturur. Bu size(x) yazilarakta belirlenebilir.>> y=x.^3;
y=x^3 yazildiginda x kare matris olmadiginda hata verecektir. >> plot(x,y)
r(t)=(2tcost/(t+1),2tsint/(t+1)) kapali egrisini t ∈ [0,4π] için çizimde t vektörü aiagidaki gibi tanimlansin .
>> t=0:.1:4*pi;
>> x=2*t.*cos(t)./(t+1);>> y=2*t.*sin(t)./(t+1);>> plot(x,y);>> title('(2t cos t/(t+1),2t sin t/(t+1))')
Matlab grafik çizimlerini otomatik ayarlar. Uygun ölçekte görmek için ‘axis equal’>> axis equal
Ayni sekil üzerinde birden fazla egriyi göstermek için ‘hold on’.
Ayni sekil üzerinde birden fazla egriyi göstermek için ‘hold on’ kullanilir.
Örnek: x2+y2=4 ve (x−1)2+(y−1)2=1 gibi iki daire ayni sekilde gösterilmek istenirse.r1(t)=(2cost,2sint) ve r2(t)=(1+cost,1+sint) t ∈ [0,2π] olarak tanimlanirsa.
>> t=0:pi/20:2*pi;>> plot(2*cos(t),2*sin(t))
>> hold on>> plot(1+cos(t),1+sin(t))>> axis equal>> title('x^2+y^2=4 and (x-1)^2+(y-1)^2=1 daireleri')
öylece 35 noktadan olusan 7×5 matris elde edilir. X matrisi x koordinatlarini y matrisi y kooridnatlarini içerir. f(x,y)=3x−2y fonksiyonunu çizelim. z koordinatlarini olusturan z >> Z=3*X-2*Y olarak tanimlansinZ = 0 3 6 9 12
Finally we plot the surface, and scale the axes so that it looks like a sphere! >> surf(X,Y,Z)>> axis equal>> title('Birim küre {\bf R}^3') %{\bf R} yazim sekli R3 için formattir.
Yada hazir fonksiyon halinde ‘sphere(n)’ n tam sayisi ile ayni küre elde edilir.
Konturlama ( Egri Seviye Degerleri )
f(x,y)=x2−y
2. seviye egrilerinin gösterilmesi için 'contour’ komutu kullanilmaktadir.
Konturlarin degerlerini elde etmek için>> [C,h]=contour(X,Y,Z);>> clabel(C,h)>> title('f(x,y)=x^2-y^2 kontur degerleri ile.')
Grafik ve Konturlarin beraber çizdirilmesi için ‘surfc’ komutu kullanilir>> surfc(X,Y,Z)>> title('f(x,y)=x^2-y^2. fonksiyonu ve kontur cizgileri')
Vektör Alanlari
Bir vektör alan Rn ile tanimlanan bir fonksiyon olsun. F:Rn→Rn, ve grafik olarak her x degerinin F(x) olarak yani x in Rn tanimlanir. MATLAB, quiver(X,Y,U,V) ile (U,V)vektörünü (X,Y)noktalarinda .
>> quiver(X,Y,-Y,X,0)quiver(X,Y,U,V,s) genel ifadesinde s ölçeklendirme olarak kullanilir. Yukarida sagdaki sekilde s=0 olarak alinmistir. Kullanilmassa otomatik ölçeklendirme yapilir.
Sembolik Degiskenler ve Ifadeleri
MATLAB simgesel islemlerde Symbolic Math Toolkit’i kullanir. Kullanilacak fonksiyonlar
>> help symbolic
ile görülebilir. Simgesel degisken ve islemlere giris yapmak için ‘>>symintro’ yazmak yeterlidir.
Sayisal islemlerde ve karakter indislerinde bildirime gerek yok iken, simgesel islemlerdekullanilacak degiskenlerin önceden bildirilmesi gerekir. Örnegin ‘a’ gibi bir sembolik degisken>> sym a ans = aveya>> sym('a')
ans = a
ile bildirilir.
Bir fonksionda geçen degiskenler x,y ve z olsun>> syms x y z
Anlami x=sym('x'), y=sym('y') ve z=sym('z'). Sembolik bir ifade yazalim. >> S=x^2-y^2S =x^2-y^2
Bu ifadenin faktörü.>> factor(S)ans =(x-y)*(x+y)
S’nin küpü ve açilimi.>> S^3ans =(x^2-y^2)^3>> expand(ans)ans =x^6-3*x^4*y^2+3*x^2*y^4-y^6
Bir fonksiyonu sadelestirmek icin ‘simplify’ fonksyionu kullanilir. >> S=(x^3-4*x)/(x^2+2*x)S =(x^3-4*x)/(x^2+2*x)>> simplify(S)ans =x-2
Sembolik ifadeler matris yada vektör normunda olabilir. >> syms a b>> A=[cos(a) -sin(a); sin(a) cos(a)]A =[ cos(a), -sin(a)][ sin(a), cos(a)]
simplify fonksiyonu görüldügü gibi herhangi bir degisiklik yapmadi. Bu durumda baska bir seçebek olan ’simple’ fonksyionu kullanilir. Esitligin en kisa ifadesi.>> D=simple(C)D =[ cos(a+b), -sin(a+b)][ sin(a+b), cos(a+b)]
Örnek: f(x,y)=(4x2−1)e−x2−y2 fonksiyonu için f(1,2) sonucunu bulalim.
>> syms x y>> f=(4*x^2-1)*exp(-x^2-y^2)f =(4*x^2-1)*exp(-x^2-y^2)
>> f(1,2)??? Index exceeds matrix dimensions.
f bir fonksiyon olmadigindan bir degisken oldugundan MATLAB f(1,2) bir satir ve 2 kolon olarak giris yapacaktir. Ifadenin sonucunu bulmak için degisken degistirme yapilmalidir. Bunun için ‘subs’ fonksiyonu kullanilir. >> subs(f,{x,y},{1,2})ans = 0.0202
Sadece y’ye bagli bir ifade elde edilecekse, >> subs(f,x,3)ans =35*exp(-9-y^2)
Fonksiyonlari tanimlamak için bir baska yol da ’inline’ komutunu kullanmaktir.
g(2,3) için fonksiyonu degerlendirmek için.g(2,3)ans =
-12
inline fonksyonlarin dezavantaji sembolik olarak degistirilemez.>> g^2??? Error using ==> ^Function '^' not defined for variables of class 'inline'.
Denklem Sistemlerinin Çözümü
Matlab’in bir diger gelismis özelligi her türlü dogrusal ve dogrusal olmayan denklem takimlarinin çözüm kümesini bulmasidir. Bu amaç için ‘solve’ komutunu kullanir.
Kesisim degerleri ((5−√7)/4,(5+√7)/4) and ((5+√7)/4,(5−√7)/4).
Dogrusal Denklem Takimlarinin Çözümü
n. dereceden dogrusal denklem takimi
nnnnnn
nn
nn
bxaxaxa
bxaxaxa
bxaxaxa
=+++
=+++
=+++
...
.............................................
...
...
2211
22222121
11212111
biçiminde verilir. Bu denklem takiminin matris biçiminde gösterimi
[ ]A [ ]x = [ ]B
seklinde tanimlanabilir. Burada;
=
nnnn
n
n
aaa
aaa
aaa
A
..
... .. .. .
..
..
21
22221
11211
[ ]nbbbB .. 21=
katsayilar matrislerini ve
[ ]321 ... xxxX =
çözümü istenen degiskenler matrisini (vektörünü) gösterir.
Bu tür istenen denklem takimlarinin çözümü için, içinde yer alan özel fonksiyonlar yoktur. Bu denklemlerin çözümünde matris islemlerinden yararlanilabilir. AX=B biçiminde verilendenklem takiminin çözümünde A\B biçiminde soldan (bölen bölme isaretinin solunda yeralmakta) matris bölme islemi ile yerine getirilir. XA=B biçiminde tanimlanan matris
Denklem Takimlarinin Ters Matris Islemi Yolu ile Çözümü
AX=B biçiminde verilen ve B’nin satir matrisi olarak tanimlandigi matris denkleminin her iki tarafini A-1 ile çarparsak
A-1 AX=A-1Belde edilir. Burada A-1 A, I olarak tanimlanan birim matrise denktir.Buna göre
IX=A-1Bveya
X=A-1B
elde edilir. MATLAB ortaminda bu çözüm;
X=inv(A)*B
komutu ile elde edilebilir. Diger taraftan B’nin sütun matrisi olarak tanimlandigi, XA=Bbiçiminde ifade edilen denklem takiminin çözümü için, her iki taraf A-1 ile çarpilir ve gerekli düzenlemeler yapilirsa
X=BA-1elde edilir.MATLAB ortaminda
X=B * inv(A)bildirimi ile gerekli çözüm elde edilmis olur.
Örnek : Asagida verilen denklem takiminin çözümünü elde ediniz.
−=+−−
=+−+
=−++
=+−+
1552103
1 24
16 272
2 4
4321
4321
4321
4321
xxxx
xxxx
xxxx
xxxx
Çözüm : Çözüm ilk önce soldan ve sagdan matris bölme islemlerine göre ele alinacak ve daha sonra da ters matris islemine göre çözülecektir. AX=B biçiminde matris denklemi verildiginde çözüm soldan bölme islemine göre asagidaki bildirimlerle yerine getirilebilir.
Denklem takimlari XA=B biçiminde matris denklemi ile tanimlandiginda çözüm sagdan bölme islemi ile asagidaki sekilde saglanir. Burada A ve B matrisleri bir önceki orijinal halinintraspozesi olmaktadir.
bildirimi ile çözüm elde edilir. Yukarida verilen bildirimler yolu ile x çözümü için
x= 2.0000 1.0000 3.0000 -1.0000
seklinde elde edilmis olur. Burada x1= 2, x2=1, x3=3 x4=-1 ‘dir.
Dogrusal Olmayan Denklemlerin Çözümü
Dogrusal olmayan denklemlerin dogrusal denklemlerde oldugu gibi tek bir standart biçimi yoktur. Gerek MATLAB içinde gerekse Otimatization Toolbox içinde, gerek tek degiskenli ve gerekse çok degiskenli denklemlerin çözümünde kullanilan çesitli çözüm fonksiyonlarivardir. Dogrusal olmayan denklemlerin çözümü, dogrusal denklem çözümü kadar basitolmayip bunlarin çözümü için ayrica bir fonksiyon dosyasi hazirlanmasi gerekir.
Burada, MATLAB içinde yer alan fzero fonksiyon fonksiyonu ile Otimatization
Toolbox içinde yer alan fsolve fonksiyon fonksiyonu ayrintili bir biçimde ele alinacaktir.Ayrica diger dogrusal olmayan fonksiyon fonksiyonlarinin kisaca tanimlari gözdengeçirilecektir.
fzero: Fonksiyon fonksiyonu; tek degiskenli bir fonksiyonun sifirini hesaplar. Genelkullanim biçimleri asagida oldugu gibidir.
fun(x) biçimindeki bir fonksiyonun, X0 ile tanimlanan degere yakin olan tek bir sifirinihesaplar. Burada, fonksiyonu sifir yapan, yani x eksenini kesen bir sifir degeri hesaplanir.
Ikinci bildirimde yer alan tol isimli, seçimli argüman bagil hata toleransini belirler. Üçüncü bildirimde yer alan seçimli trace argümani her bir hesap yineleme islemindeki bilgilerigörüntüler.
Fonksiyon fonksiyonu olan fzero fonksiyonunu kullanmak için ayrica function ile baslayan bir fonksiyon dosyasi hazirlanmasi gerekir.
Örnek: f(x)=x3-2x-5 fonksiyonunun bir sifirini bulunuz.
Çözüm: Önce bir fx.m adi ile fonksiyon dosyasi hazirlanir.
Function y=fx(x)y=x^3-2*x-5
Burada dosya adi ‘fx’ ile fonksiyon adi ‘fx’ ayni olmasi gerektigine dikkat edilmelidir. Daha sonra MATLAB ortaminda
z=fzero(‘fx’,2)
bildirimi ilez=2.0946
sonucu elde edilir. Burada X0=2 olarak tahmini bir baslangiç deger verilmistir.f (x) fonksiyonu gerçekten bir polinom olduguna göre asagida verilen roots komutu ile
p=roots([1 0 -2 -5])
Ayni fonksiyonu sifir yapan gerçek deger ile birlikte karmasik eslenik kökleri de;p= 2.0946-1.0473 + 1.1359i-1.0473 - 1.1359i
olarak elde edilmis olur
Örnek : e2x –x –2 biçiminde verilen dogrusal olmayan fonksiyonun bir adet sifirini bulunuz.
Çözüm:Burada f(x) fonksiyonu;
f(x)=e2x –x –2 biçimine sokulabildigine göre fonksiyon dosyasi;function y=fex(x)y=exp(2*x)-x-2;
biçiminde hazirlanir. Daha sonra MATLAB ortaminda;
z=fzero(‘fex’,1)z0.4475
elde edilir.
Yukaridaki örneklerden de görüldügü gibi fzero fonksiyonu herhangi bir fonksiyonuntahmini bir sifirinin hesaplanmasinda ve/veya dogrusal olmayan denklemlerin çözümünde daha kullanislidir. Dogrusal denklemlerin ayni anda tüm köklerini çözmek gerektiginde rootsfonksiyonunu kullanmak daha pratik olacaktir.
Dogrusal Olmayan Denklem Takimlarinin Çözümü
Dogrusal olmayan denklem takimlarinin çözümünde, Optimization Toolbox içinde yer alan fsolve fonksiyon fonksiyonu kullanilir. fsolve fonksiyonu dogrusal olmayan denklem takiminin çözümünü saglar.
fsolve fonksiyonunun belli basli kullanim biçimleri asagida oldugu gibidir.
fsolve dogrusal olmayan denklemlerin köklerini hesaplar. Çikis argümani olan X degerleri; F(x)=0 seklinde hesaplanir. Burada F(x) ve X skalar, vektör veya matrislerden ibaret olabilir.
x=fsolve(‘dun’,x0) bildirimi, fun.m isimli M-dosyasinda tanimlanan denklemleri, X0tahmini baslangiç degerlerinden baslayarak çözer ve sonucu X degiskenine atar. Burada X0boyutu x degisken sayisi kadar olmalidir.
Ikinci bildirimde yer alan seçimli argüman options seçimli parametreler vektörünütanimlar. options için pek çok seçenek mevcuttur. Bunlar ile ilgili bilgiler help folve yolu ile saglanabilir.
Üçüncü bildirimde yer alan grad, X noktasinda fonksiyonlarin kismi türevlerini(Jacobianlarini) df/dx, df=grad(x) elde etmek için kullanilir. df’in i’inci sütunu f’dekifonksiyonun i’inci kismi türevine karsilik gelir.
Örnek: Bir metal kesme islemine ait denklem takimi
biçiminde tanimlanmaktadir. Burada c 1.27 i,le 1.28 arasinda bir degerdir. Tamamen nonlinear olan bu denklemlerin çözümü için gerekli fonksiyon dosyasi
function f=nlnr(x)&x(1)=v, x(2)=f, x(3)=d, degiskenlerine .karsilik gelmektedir.F(1)=-0.08+11.6323/(x(1)*x(2))+5.744e-8 . . .
hazirlanabilir. Daha sonra MATLAB ortaminda fsolve ile asagidaki bildirimler yolu ileçözülür. Burada en önemli husus baslangiç degerinin seçimidir. Uygun bir çözüm elde edilene kadar baslangiç degerlerinin seçimi degistirilebilir.
x=fsolve(‘nlnr’,[0.5 112.5 20]);Bildirimi ile
X= 0.6686 217.4627 18.2436
Sonucu elde edilir. Bu sonuç f fonksiyonlari ile test edildiginde
f= 1.0e-008 *(-0.0573 -0.5991 0.5776)
sifira çok yakin degerler elde edildigi görülür. Buna karsilik X0 baslangiç degerleri asagida oldugu gibi seçilecek olursa
>>x=fsolve(‘nlnr’,[1 2 100]);
Warning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND= 6.79344e-017
Maximum number of iterations has been exceeded
Biçiminde bir uyari alinir. Buda çözümün yeterli tamlikta gerçeklenmedigini gösterir.Gerçekten de f fonksiyon degerleri asagidaki biçimde yazilarak test edildiginde
sifirdan oldukça farkli degerler elde edildigi görülür. Bu durumda baslangiç degerlerinidegistirmek sureti ile uygun çözümler arastirilmalidir.
Optimization Toolbox içinde, dogrusal olmayan denklemlerin, degisik sekildeçözümünde kullanilan diger pek çok fonksiyon vardir. Bunlarin tanimlari asagida kullanilandiger pek çok fonksiyon vardir. Bunlarin tanimlari asagida oldugu gibidir. Genel kullanimbiçimleri MATLAB ortaminda help komutu ile elde edilebilir.
attgoal : Çoklu-amaçli hedefe ulasma problemi çözümüconstr : Kisitli minimizasyon çözümüfmin : Skalar kisitsiz minimizasyon çözümü.fminu, fmins : Kisitsiz minimizasyon çözümü.Fsolve : Dogrusal olmayan denklem çözümü.leastssq : Dogrusal olmayan en küçük kareler çözümü.minimax : Minimum-maksimum çözümü.seminf : Yari mutlak minimizasyonlp : Dogrusal programlamannls : Negatif olmayan en küçük kareler çözümü.qp : Egrisel programlama.
Integraller
Simgesel integral alma fonksiyonu ‘int’ genel kullanim sekli
int(s) : findsym ile belirlenen simgesel degiskene göre S’nin belirsiz integralini alirint(s,v) : S’nin v’ye göre integralini alir.int(S,a,b) : S’nin varsayilan degiskene göre a’dan b’ye kadar belirli integralini alir.int(S,v,a,b) : S’nin tanimli a’dan b’ye kadar belirli integralini alir.
>> syms x a u t;>> int_s=a*t*log(t+1)+u*t;>> r=int(int_s,t)r = 1/2*a*log(t+1)*t^2-1/2*a*log(t+1)-1/4*a*t^2+1/2*a*t+3/4*a+1/2*u*t^2>> ss=int(int_s,t,0,1)ss =1/2*u+1/4*a
Eger integral sinirlari –8 , +8 ise -inf ve +inf olarak sinirlar verilir.
Türevler
Türev ifadesi ’diff’ komutu ile verilir. Örnegin f f(x)=sin(ex) ifadesinin x’e bagli türevi>> syms x>> f=sin(exp(x))f =sin(exp(x))>> diff(f)ans =cos(exp(x))*exp(x)
nth türev diff(f,n) olarak verilir. >> diff(f,2)ans =-sin(exp(x))*exp(x)^2+cos(exp(x))*exp(x)
Kismi türevlerin bulunmasina örnek f(x,y)=x
3y
4+ysinx.>> syms x y>> f=x^3*y^4+y*sin(x)f =x^3*y^4+y*sin(x)
Ilk olarak ∂f/∂x hesaplanir.>> diff(f,x)ans =3*x^2*y^4+y*cos(x)
Daha sonra ∂f/∂y hesaplanir.>> diff(f,y)ans =4*x^3*y^3+sin(x)
∂3 f/∂x3 bulmak istersek>> diff(f,x,3)ans =6*y^4-y*cos(x)
Bir fomksiyonun bilinmeyen parametrelerine göre türevinin alinmasi için Jacobian matrisin olusturulmasi gerekir. Bunun için ‘jacobian’ komutu kullanilir.
Adi Diferansiyel Denklemlerin Çözümü ‘dsolve’ komutu kullanilmaktadir.
Örnek:∂y/∂t=-ay diferansiyel denkleminin çözümü
>> y=dsolve('Dy=-a*y')y=C1*exp(-a*t)
Uygulamada varsayilan degisken t’dir. Ancak problem y=-ay seklinde verilseydi bu durumda degiskenin ne oldugu belirtilmemistir. y(0)=1 baslangiç kosulu verildigini düsünelim.>> y=dsolve('Dy=-a*y','y(0)=1') y = exp(-a*t)C1 katsayisinin kalktigi görülmektedir.
M-dosyalari olarak ele aldigimiz dosyalar aslinda matlab ortaminda kullanmis oldugumuz komutlardir ve veri analizini saglayan fonksiyonlardir.Bu fonksiyonlar her amaca yeterli olsa da sonuçlara daha hizli ulasabilmek için kendimize özel fonksiyonlar yani yeni M-dosyalariolusturabiliriz.Çesitli yollarla bu M-dosyalarini hazirlayabiliriz.Istersek bir komutlar dizisi sayesinde sonuca ulasiriz istersek de “function” kelimesiyle baslayan bir fonksiyonel dosya olustururuz.Önemli olan bize istedigimiz sonucu kisa zamanda verebilmesi.Simdi de örnek olarak bir M-dosyasi olusturalim:
Örnegin kütlesinin ve hizinin degerini girdigimde bana o cismin kinetik enerjisini veren bir M-dosyasi olusturalim.Öncelikle komutlari yazacagim sayfaya girmem gerek.M-dosyasiolusturmak için öncelikle “file “ menüsünden “new” dedigimizde M-file diyecektir.onu seçerek
alanimizi olusturmus oluruz.Baska bir yol ise Command Window’da “edit” yazarak olusturmaktir.
Asagidaki gibi M-dosyamizi olusturuyoruz:
% kütlesi ve hizi verilen bir cismin% kinetik enerjisinin hesabim=input('Lütfen kütle degerini giriniz(kg)= ')v=input('Lütfen cismin hiz degerini giriniz(m/s)= ')Ek=m*v^2/2 (verilen degerlere göre kinetik enerji hesaplaniyor)
Bu komutlari yazdiktan sonra bunu sakliyoruz.Örnegin sayfadaki disket resmine tikladik ve dosya ada olarak kinetik yazdik ve dosyayi saklamis olduk.Simdi de islemlerimizin dogrulugunu test edelim.Command Window’a geçerek kinetik yazdigimizda veya komutlari yazdigimiz sayfadan “debug ” menüsünden “Run” seçtigimizde bakalim neler oluyor: