Professional Documents
Culture Documents
Iindekiler
Giris Baslarken Temel Matematiksel Islemler Degiskenler Karmasik Sayilar Temel Istatistiksel Islemler Polinomlar Yuvarlatma Islemleri Matriks ve Vektrler Nokta arpim/Blme Temel Matris Islemleri Ters Islemler zvektrler ve zdegerler Hazir Matris Fonksyionlari Grafik izimler Yzey izimleri Vektr Alanlari Sembolik Degiskenler Denkleme Sistemlerinin zm Dogrusal Olmayan Denklem Takimlarinin zm Integraller Trevler rnekler rnekler
Giris
MATLAB, MATrix LABoratory szcklerinden gelir ve temelde sayisal ve analitik olarak matematiksel fonksyionlarin ifadelerinin kullanildigi basta mhendislik alaninda olmak zere birok sayisal analizi kullanan bilimlerde son yillarda olduka sik kullanilan bir hazir yazilim paketidir. zellikle yksek performans gerektiren algoritma hazirlama ve gelistirme, sayisal analiz, simlasyon, mhendislik problemlerinin sayisal ve grafik zm tekniklerinde son derece etkindir.
Baslarken
Matlab yazilim paketinde kullanilacak olan her hazir fonksyion yaninda kullanicinin da kendi yazilimini olusturma imkani saglar. Matlabin 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 trigonometric operatrler (cos, sin, tan, sec, csc, cot), tersleri (acos, asin, atan, asec, acsc, acot ), exponansiyel fonksyionexp, dogal logaritma log. rnek: ln(14)+sin(/4) asagidaki sekilde hesaplanir
>> log(14)+sin(pi/4) ans = 3.34616411080181
Matlabte 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
Tm yazilabilir karakterler degisken olarak atanabilir ve = olarak verilir.
>> x=23 x = 23
Degislen isimleri byk ve kk harf ayrimina hassastir. X ve x degiskenleri ayri olarak tanimlabilir.
>> x^2-3*x+2 ans = 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*x y = 56 >> x=x+5 x = 12
Your variables are: ans x y komutu degiskenlerin boyut bilgisini verir. Size Bytes Class 1x1 1x1 1x1 8 8 8 double array double array 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 gerel ve sanal kisimlarini verir.
> x=3;y=4; >> complex(x,y)
angle : Faz aisi conj imag real : Karmasik eslenik : Karmasik sanal kisim : Karmasik gerel kisim
>> z=2+5i; >> abs(z) ans = 5.3852 >> angle(z) ans = 1.1903 >> conj(z) ans = 2.0000 - 5.0000i >> imag(z) ans = 5 >> real(z) ans = 2
>> T=[2.1;2.5;1.9;-1.9;2.4;3.0] T = 2.1000 2.5000 1.9000 -1.9000 2.4000 3.0000 >> max(T) ans = 3 >> min(T) ans = -1.9000 >> length(T) ans = 6 >> sum(T) ans = 10 >> prod(x) ans = 120 >> median(x) ans = 3.5000 >> median(T) ans = 2.2500 >> std(T) ans = 1.7874 >> mean(T) ans = 1.6667 >> geomean(T) ??? Error using ==> geomean The data must all be non-negative numbers. >> harmmean(T) ans = 3.6896
Polinomlar
Matlabta polinomlar bir vektrle temsil edilirler. Polinom olusturmak iin yksekten dsk dereceliye dogru azalan sirada polinom katsayilari yazilir. x=s4+3s3-15s2-2s+9 polinomu programa asagidaki sekilde yazilir; x=[1 3 -15 -2 9] x= 1 3 -15 -2 9
Benzer sekilde y=s4+1in gsterilimi y=[1 0 0 0 0 1] seklindedir. Polinomun herhangi bir kk iin degeri, rnegin s4+1in s=2 iin degeri; z=polyval([1 0 0 0 1],2) veya dogrudan z=polyval(y,2) z= 17 Polinomun kklerinin bulunmasi, rnegin s4+3s3-15s2-2s+9 iin; roots([1 3 -15 -2 9]) ans= -5.5745 2.5836 -0.7951 0.7860 Iki polinomun arpilmasi, (x+8) (x2+4x+8) = x3+6x2+16x+16 x=[1 2] y=[1 4 8] z=conv(x,y) z= 1 6 16 16 Iki polinomu blelim [xx,R]=deconv(z,y) xx= 1 2 (blm=x+2) R= 0 0 0 0 (kalan=0) rnek: P(x)=x4+3x3-15x2-2x+9 polinomunun x=2 iin alacagi degerin bulunmasi
>> P=polyval([1 3 -15 -2 0],2) P = -24 rnek: P(x)=x4-5x >> >> >> pp x=[2 8]; p=[1 0 0 -5 0]; pp=polyval(p,x) = 6 4056 x=2 ve x= 8 iin fonksiyonun alacagi degerin bulunmasi
Polinom Kklerinin Bulunmasi Bir P(x)=0 polinomunun kklerinin bulmak iin roots komutu kullanilir.
Yuvarlatma Islemleri
fix floor ceil : Sifira dogru yuvarlatir : - 8 dogru yuvarlatir :+ 8 dogru yuvarlatir
Matrisler ve Vektrler
Matriks olusturmak iin kseli, parantez kullanilir ve ; ile satirlar ayrilir
>> A=[2 11 -3 8; 1 0 8 -3; 7 1 2 5] A =
2 1 7
11 0 1
-3 8 2
8 -3 5
Sonu verecek olan her komut satiri sonuna ; konulursa grlmesini istemediginiz
>> B=[2 0 -3; -1 1 3];
will still define the variable B containing a 23 matrix, but MATLAB will not echo anything.
>> whos Name A B v Size 3x4 2x3 3x1 Bytes 96 48 24 Class double array double array double array
rnegin iki sayi arasinda sirali satir vektr olusturmak iin a:b; rnegin
>> 2:5 ans = 2 3 4 5
j:i:k bir satir vektrn tanimlar ve j baslangi, I artim ve k son elemani gsterir.
>> 3:2:9 ans = 3 5 7 9
Matrisin transpozu
>> A=[5 -2 9; 11 7 8] A = 5 -2 9 11 7 8 >> A' ans = 5 11 -2 7 9 8
Ayni satir sayisina sahip iki matris asagidaki rnekte oldugu birlestirilebilir.
>> A=[1 2 3; 4 5 A = 1 2 4 5 >> B=[7 8; 9 10] B = 7 8 9 10 >> [A B] ans = 1 2 4 5 >> C=[7 8 9] C = 6] 3 6
3 6
7 9
8 10
Nokta arpim
Matlab dilinde dot (nokta islemler) islemler arpma *. Blme ./ veya .\ stalma .^ olarak kullanilir. Yani nokta isaretli islemler matrislerde eleman (elemanter) islem yapilacagini gsterir. N bier sakaler olmak zere a.^n, a matrisindeki her bir elemanin n. katresinin alinacagini ifade eder( Inan, A., 2004). Vektrlerin her elemani arpilir ve kmlatif toplam elde edilir.
>> v=[7; 23; 15; 2], w=[5; -2; 1; -8] v = 7 23 15 2 w = 5 -2 1 -8 >> dot(v,w) ans = -12
28.4077
Yaklasik ai 92.5.
Seklinde hatali sonu alinir. Bir matrisin elemanlarinin scalar bir sayi ile arpilmasi.
A=[1 2 ; 3 4] A = 1 3 2 4
* arpim operatr olup 2A seklinde yazilamaz. >> 2A ??? 2 | Missing operator, comma, or semi-colon. Ayni sekilde vektrlerin scalar arpimlari ve ara islemleri yapilabilir.
B=[2 ;3] B = 2 3 >> C=[4 ;3] C = 4 3 >> D=3*A-2*C D = -2 3
Iki matrisin A*B arpimi A mn ve B nk oldugunda geerlidir. Sonu A*B matrisi mk boyutundadir.
>> 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 3 5 7 >> A*B ans = 55 31 2 2 4 6 8
68 40 12
Matlabda islem satiri devam edemeyecek durumda ise kullanilir A=[2;2;2 ... ;33] A= 2 2
2 33 Matriks rank hesaplama iin Bsr matrisin tm karesel alt matrislerinden, determinanti sifirdan farkli olan en yksek 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 gsterilir. Inv ters islem yapma operatrdr.
>> A=[2 1 1; 1 2 2; 2 1 2] A = 2 1 1 2 2 1 >> Ainv=inv(A) Ainv = 2/3 -1/3 2/3 2/3 -1 0 1 2 2
0 -1 1
0 1 0
0 0 1
Rank degeri 3den kk oldugundan B matrisi tekildir, Matrisin determinantinin sifirdan farkli deger almasi gerek.
>> det(B) ans = 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)=12 = 0.9999999999999999999999999999 Bu klasik anlamda bir ters zm isleminin tekil matrisler icin zm asamasidir. Ax=b olarak verilen bir ifadenin zmn ele alalalim, Burada A is terselenebilir olsun, basit olarak x=A1b olacaktir.
>> A=[11 7 -6 8; 3 -1 12 15; 1 1 1 7; -4 6 1 8] A = 11 7 -6 8
3 -1 12 15 1 1 1 7 -4 6 1 8 >> b=[10; -23; -13; 4] b = 10 -23 -13 4 >> format rat >> x=inv(A)*b x = 1 5 2 -3
zvektrler ve zdegerler
Bir kare matrisin zdegerlerini bulmak iin eig komutu kullanilir.
>> A=[ 3 1 1; 1 3 1; 1 1 3] A = 3 1 1 1 3 1 1 1 3 >> eig(A) ans = 2.0000 2.0000 5.0000 >> [Q,D]=eig(A) A arprazlanabilir ise Q = -0.8164 -0.0137 0.5774 0.3963 0.7139 0.5774 0.4201 -0.7001 0.5774 D = 2.0000 0 0 0 2.0000 0 0 0 5.0000
>> c=rand(4) 0 ile 1 arasinda 4x4 matris olusturur. zellikle iki boyutlu verilere rastgele grlt eklenmesinde temel kullanima uygundur. c = 0.1389 0.2028 0.1987 0.6038 0.2722 0.1988 0.0153 0.7468 0.4451 0.9318 0.4660 0.4186 0.8462 0.5252 0.2026 0.6721
Ones fonksyionu elemanlari 1 olan bir matris zeros fonksiyonu elemanlari 0 olan matris olusturur. >> s=ones(3)
s = 1 1 1 1 1 1 1 1 1
>> d=zeros(4) d = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1
1 1
1 1
0 0 1
zel Matrisler 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
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 magic(j) fonksiyonu jxj uzunlugunda 1den jye kadar sayilardan olusan (j=2 hari) esit satir, stn ve ksegen toplamina sahip bir kare matris olusturur.
>> magic(3) ans = 8 3 4 1 5 9 6 7 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 vektrlerini X ve Y matrislerine dnstrerek aslinda 3 boyutlu grafik izimleri iin bir veri ortami hazirlar. >> [X,Y]=meshgrid(-2:1:2,-2:1:2) X = -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2
Y = -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2
Grafik izimleri
plot fonksiyonu belirli bir dzlem verisinin grafik gsterimi iin kullanilir. Bir x ve y dzleminde verilen bir verinin gsterimi plot(x,y). rnegin x ve y elemanlari (0,0), (1,1), (4,2) ve (5,1) olan dzlem
>> 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
r(t)=(2tcost/(t+1),2tsint/(t+1)) kapali egrisini t [0,4] iin izimde t vektr 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 lekte grmek iin axis equal
>> axis equal
Ayni sekil zerinde birden fazla egriyi gstermek iin hold on. Ayni sekil zerinde birden fazla egriyi gstermek iin hold on kullanilir. rnek: x2+y2=4 ve (x1)2+(y1)2=1 gibi iki daire ayni sekilde gsterilmek 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))
daireleri')
Yzeylerin izimleri
f(x,y) fonksiyonun dikdrtgensel ortamda gsterimi
R=[a,b][c,d]={(x,y) | a x b and c y d}, Ilk olarak meshgrid fonksiyonunu kullanarak ortami gridleyerek tanimlayabiliriz
Dikdrtgen [0,4][0,3] paralara blnrse ve genisligi 1 yksekligi 0.5 olan. Gird araligini tanimlayan x ve y vektrlerinin tanimlanmasi gerek.
>> x=0:4 x = 0 1 >> y=0:.5:3 y = 0 2 3 4
0.5000
1.0000
1.5000
2.0000
2.5000
3.0000
4 4 4 4
1 1 1
3 3 3
4 4 4 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
ylece 35 noktadan olusan 75 matris elde edilir. X matrisi x koordinatlarini y matrisi y kooridnatlarini ierir. f(x,y)=3x2y fonksiyonunu izelim. z koordinatlarini olusturan z >> Z=3*X-2*Y olarak tanimlansin
Z = 0 -1 -2 -3 -4 -5 -6 3 2 1 0 -1 -2 -3 6 5 4 3 2 1 0 9 8 7 6 5 4 3 12 11 10 9 8 7 6
rnek: f(x,y)=x2y2y fonksiyonunu [2,2][1,1] tanimli aralikta gsterelim. Kenar uzunlugu 0.1 olan karelerden olusan bir grid tanimlanmasi gerek.
>> [X,Y]=meshgrid(-2:.1:2,-1:.1:1);
z yzeyinin tanimi
>> Z=(X.^2).*Y-2*Y;
Yzeyin izilmesi.
>> surf(X,Y,Z) >> title('f(x,y)=x^2y-2y Yzeyi')
Yariapi olan bir kre R3 ile merkezlenmis olsun. Ve genellestirilmis ifadesi ve tanim araligi,
r(,)=(sincos sinsin,cos)
0 ,0 2.
= 1 iin.
>> X=sin(Phi).*cos(Theta); >> Y=sin(Phi).*sin(Theta); >> Z=cos(Phi);
Finally we plot the surface, and scale the axes so that it looks like a sphere!
>> surf(X,Y,Z) >> axis equal >> title('Birim kre {\bf R}^3') %{\bf R} yazim sekli R3 iin formattir.
Yada hazir fonksiyon halinde sphere(n) n tam sayisi ile ayni kre elde edilir.
Vektr Alanlari
Bir vektr alan Rn ile tanimlanan bir fonksiyon olsun. F:RnRn, ve grafik olarak her x degerinin F(x) olarak yani x in Rn tanimlanir. MATLAB, quiver(X,Y,U,V) ile (U,V)vektrn (X,Y)noktalarinda . rnek:Vektr alani F(x,y)=(y,x)
>> >> >> >> [X,Y]=meshgrid(-1:.2:1); quiver(X,Y,-Y,X) axis equal axis([-1 1 -1 1])
>> quiver(X,Y,-Y,X,0) quiver(X,Y,U,V,s) genel ifadesinde s leklendirme olarak kullanilir. Yukarida sagdaki sekilde s=0 olarak alinmistir. Kullanilmassa otomatik leklendirme yapilir.
Sayisal islemlerde ve karakter indislerinde bildirime gerek yok iken, simgesel islemlerde kullanilacak degiskenlerin nceden bildirilmesi gerekir. rnegin a gibi bir sembolik degisken >> sym a ans = a veya >> sym('a') ans = a
ile bildirilir.
Anlami x=sym('x'), y=sym('y') ve z=sym('z'). Sembolik bir ifade yazalim. >> S=x^2-y^2 S = x^2-y^2
Bu ifadenin faktr.
>> factor(S) ans = (x-y)*(x+y) Snin kp ve ailimi. >> S^3 ans = (x^2-y^2)^3 >> expand(ans) ans = x^6-3*x^4*y^2+3*x^2*y^4-y^6
f bir fonksiyon olmadigindan bir degisken oldugundan MATLAB f(1,2) bir satir ve 2 kolon olarak giris yapacaktir. Ifadenin sonucunu bulmak iin degisken degistirme yapilmalidir. Bunun iin subs fonksiyonu kullanilir.
>> subs(f,{x,y},{1,2}) ans = 0.0202
Fonksiyonlari tanimlamak iin bir baska yol da inline komutunu kullanmaktir. rnek: g(x,y)=x23xy+2
>> g=inline('x^2-3*x*y+2') g = Inline function: g(x,y) = x^2-3*x*y+2 olarak tanimlanabilir.
Denklem Sistemlerinin zm
Matlabin bir diger gelismis zelligi her trl dogrusal ve dogrusal olmayan denklem takimlarinin zm kmesini bulmasidir. Bu ama iin solve komutunu kullanir.
>> solve('sin(x)+x=5') ans = 5.6175550052726989176213921571114
rnek: x2+y2=4 ve (x1)2+(y1)2=1 olarak verilen iki fonksiyonun kesisim degerlerini bulmak iin.
>> S=solve('x^2+y^2=4','(x-1)^2+(y-1)^2=1') S = x: [2x1 sym] y: [2x1 sym] >> [S.x S.y] ans = [ 5/4-1/4*7^(1/2), 5/4+1/4*7^(1/2)] [ 5/4+1/4*7^(1/2), 5/4-1/4*7^(1/2)]
[ A] [x] = [B ]
seklinde tanimlanabilir. Burada;
B = [b1 b2 .. bn ]
X = [x1 x 2 ... x 3 ]
zm istenen degiskenler matrisini (vektrn) gsterir. Bu tr istenen denklem takimlarinin zm iin, iinde yer alan zel fonksiyonlar yoktur. Bu denklemlerin zmnde matris islemlerinden yararlanilabilir. AX=B biiminde verilen denklem takiminin zmnde A\B biiminde soldan (blen blme isaretinin solunda yer almakta) matris blme islemi ile yerine getirilir. XA=B biiminde tanimlanan matris
denklemin zmnde B/A seklinde sagdan matris blme islemi kullanilir. Sagdan ve soldan matris blme isleminde sayisal Gauss eliminasyon teknigi kullanilir. Denklem Takimlarinin Ters Matris Islemi Yolu ile zm AX=B biiminde verilen ve Bnin satir matrisi olarak tanimlandigi matris denkleminin her iki tarafini A-1 ile arparsak A-1 AX=A-1B elde edilir. Burada A-1 A, I olarak tanimlanan birim matrise denktir. Buna gre IX=A-1B veya X=A-1B elde edilir. MATLAB ortaminda bu zm; X=inv(A)*B komutu ile elde edilebilir. Diger taraftan Bnin stun matrisi olarak tanimlandigi, XA=B biiminde ifade edilen denklem takiminin zm iin, her iki taraf A-1 ile arpilir ve gerekli dzenlemeler yapilirsa X=BA-1 elde edilir.MATLAB ortaminda X=B * inv(A) bildirimi ile gerekli zm elde edilmis olur.
=2 x1 + 4 x2 x3 + x4 2 x + 7 x + x 2 x = 16 2 3 4 1 x1 + 4 x2 x3 + 2 x4 = 1 3x1 10 x2 2 x3 + 5 x4 = 15
zm : zm ilk nce soldan ve sagdan matris blme islemlerine gre ele alinacak ve daha sonra da ters matris islemine gre zlecektir. AX=B biiminde matris denklemi verildiginde zm soldan blme islemine gre asagidaki bildirimlerle yerine getirilebilir.
a=[ 1 4 1 b=[ 2 16 1 >> x=a\b; 1; 2 7 -15 ] 1 -2; 1 4 -1 2; 3 -10 -2 5 ]
Denklem takimlari XA=B biiminde matris denklemi ile tanimlandiginda zm sagdan blme islemi ile asagidaki sekilde saglanir. Burada A ve B matrisleri bir nceki orijinal halinin traspozesi olmaktadir.
a=[ 1 2 b=[2 16 x=b/a 1 1 3; 4 -15] 7 4 -10; -1 1 -1 -2; 3 -10 -2 5]
Ters matris islemi ile zmde; MATRIS denklemi AX=B biiminde verildiginde, A ve B matrisi
a=[ 1 b=[ 2 4 1 16 1 1; 2 7 -15 ] 1 -2; 1 4 -1 2; 3 -10 -2 5 ];
biiminde tanimlandiktan sonra x=inv(a)*b; bildirimi ile zm elde edilir: Benzer sekilde Matris denklemi XA=B biiminde verildiginde A ve B matrisleri,
a=[ 1 2 1 b=[2 16 1 x=b*inv(a) 3; 4 -15] 7 4 -10; -1 1 -1 -2; 3 -10 -2 5]
bildirimi ile zm elde edilir. Yukarida verilen bildirimler yolu ile x zm iin x= 2.0000 1.0000 3.0000 -1.0000
z=fzero(function,X0,tol, trace);
fun(x) biimindeki bir fonksiyonun, X0 ile tanimlanan degere yakin olan tek bir sifirini hesaplar. Burada, fonksiyonu sifir yapan, yani x eksenini kesen bir sifir degeri hesaplanir. Ikinci bildirimde yer alan tol isimli, seimli argman bagil hata toleransini belirler. nc bildirimde yer alan seimli trace argmani her bir hesap yineleme islemindeki bilgileri grntler. Fonksiyon fonksiyonu olan fzero fonksiyonunu kullanmak iin ayrica function ile baslayan bir fonksiyon dosyasi hazirlanmasi gerekir.
rnek: f(x)=x3-2x-5 fonksiyonunun bir sifirini bulunuz. zm: 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 ile
z=2.0946
sonucu elde edilir. Burada X0=2 olarak tahmini bir baslangi deger verilmistir. f (x) fonksiyonu gerekten bir polinom olduguna gre asagida verilen roots komutu ile
p=roots([1 0 -2 -5])
Ayni fonksiyonu sifir yapan gerek deger ile birlikte karmasik eslenik kkleri de; p= 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i olarak elde edilmis olur
rnek : e2x x 2 biiminde verilen dogrusal olmayan fonksiyonun bir adet sifirini bulunuz. zm:Burada f(x) fonksiyonu; f(x)=e2x x 2 biimine sokulabildigine gre fonksiyon dosyasi;
function y=fex(x) y=exp(2*x)-x-2;
z=fzero(fex,1) z0.4475
elde edilir. Yukaridaki rneklerden de grldg gibi fzero fonksiyonu herhangi bir fonksiyonun tahmini bir sifirinin hesaplanmasinda ve/veya dogrusal olmayan denklemlerin zmnde daha kullanislidir. Dogrusal denklemlerin ayni anda tm kklerini zmek gerektiginde roots fonksiyonunu kullanmak daha pratik olacaktir.
fsolve dogrusal olmayan denklemlerin kklerini hesaplar. ikis argmani olan X degerleri; F(x)=0 seklinde hesaplanir. Burada F(x) ve X skalar, vektr veya matrislerden ibaret olabilir. x=fsolve(dun,x0) bildirimi, fun.m isimli M-dosyasinda tanimlanan denklemleri, X0 tahmini baslangi degerlerinden baslayarak zer ve sonucu X degiskenine atar. Burada X0 boyutu x degisken sayisi kadar olmalidir. Ikinci bildirimde yer alan seimli argman options seimli parametreler vektrn tanimlar. options iin pek ok seenek mevcuttur. Bunlar ile ilgili bilgiler help folve yolu ile saglanabilir. nc bildirimde yer alan grad, X noktasinda fonksiyonlarin kismi trevlerini (Jacobianlarini) df/dx, df=grad(x) elde etmek iin kullanilir. dfin iinci stunu fdeki fonksiyonun iinci kismi trevine karsilik gelir.
rnek: Bir metal kesme islemine ait denklem takimi C=1.2+11.62323v-1f-1 + 5.7449x10-8v3f0.16d1.14 0.0499v0.95 f0.78 d0.75=20 biiminde tanimlanmaktadir. Burada c 1.27 i,le 1.28 arasinda bir degerdir. Tamamen nonlinear olan bu denklemlerin zm iin 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 zlr. Burada en nemli husus baslangi degerinin seimidir. Uygun bir zm elde edilene kadar baslangi degerlerinin seimi 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 grlr. Buna karsilik X0 baslangi degerleri asagida oldugu gibi seilecek 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 Biiminde bir uyari alinir. Buda zmn yeterli tamlikta gereklenmedigini gsterir. Gerekten de f fonksiyon degerleri asagidaki biimde yazilarak test edildiginde >> F(1)=-0.08+11.6323/(x(1)*x(2))+5.744e-8 . . . (x(1).^3)* (x(2).^0.16) * (x(3).^1.14); >> f(2)=12.7 0.015*(x(1).^(-1.52))*(x(2).^1.004) . . . *( x(3). ^0.25); >> f(3)=20-0.0449*(x(1).^0.95)*(x(2).^0.78) *(x(3).^0.75); f= 0.1715 0.2316 0.5576 sifirdan olduka farkli degerler elde edildigi grlr. Bu durumda baslangi degerlerini degistirmek sureti ile uygun zmler arastirilmalidir.
Optimization Toolbox iinde, dogrusal olmayan denklemlerin, degisik sekilde zmnde kullanilan diger pek ok fonksiyon vardir. Bunlarin tanimlari asagida kullanilan diger pek ok fonksiyon vardir. Bunlarin tanimlari asagida oldugu gibidir. Genel kullanim biimleri MATLAB ortaminda help komutu ile elde edilebilir.
attgoal constr fmin fminu, fmins Fsolve leastssq minimax seminf lp nnls qp
: oklu-amali hedefe ulasma problemi zm : Kisitli minimizasyon zm : Skalar kisitsiz minimizasyon zm. : Kisitsiz minimizasyon zm. : Dogrusal olmayan denklem zm. : Dogrusal olmayan en kk kareler zm. : Minimum-maksimum zm. : Yari mutlak minimizasyon : Dogrusal programlama : Negatif olmayan en kk kareler zm. : Egrisel programlama.
Integraller
Simgesel integral alma fonksiyonu int genel kullanim sekli int(s) int(s,v) int(S,a,b) int(S,v,a,b) : findsym ile belirlenen simgesel degiskene gre Snin belirsiz integralini alir : Snin vye gre integralini alir. : Snin varsayilan degiskene gre adan bye kadar belirli integralini alir. : Snin tanimli adan bye kadar belirli integralini alir.
rnek:
integralinin hesaplanmasi
>> 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.
Trevler
Trev ifadesi diff komutu ile verilir. rnegin f f(x)=sin(ex) ifadesinin xe bagli trevi
>> syms x >> f=sin(exp(x)) f = sin(exp(x)) >> diff(f) ans = cos(exp(x))*exp(x)
Bir fomksiyonun bilinmeyen parametrelerine gre trevinin alinmasi iin Jacobian matrisin olusturulmasi gerekir. Bunun iin jacobian komutu kullanilir. rnek: f(x,y)=(sin(xy),x2+y2,3x2y).
>> f=[sin(x*y); x^2+y^2; 3*x-2*y] f = [ sin(y*x)] [ x^2+y^2] [ 3*x-2*y] >> Jf=jacobian(f) Jf = [ cos(y*x)*y, cos(y*x)*x] [ 2*x, 2*y] [ 3, -2]
The Jacobian of T is A matrisinivermektedir. Adi Diferansiyel Denklemlerin zm dsolve komutu kullanilmaktadir. rnek: y/t=-ay diferansiyel denkleminin zm
>> y=dsolve('Dy=-a*y') y= C1*exp(-a*t)
Uygulamada varsayilan degisken tdir. Ancak problem y=-ay seklinde verilseydi bu durumda degiskenin ne oldugu belirtilmemistir. y(0)=1 baslangi kosulu verildigini dsnelim.
>> y=dsolve('Dy=-a*y','y(0)=1') y = exp(-a*t) C1 katsayisinin kalktigi grlmektedir.
C1 exp(1/2 (-3 + 5
Pretty komutu ile dzenli basim sekli gelir. rnek: y(0)=0, y?(0)=1 kosullari altinda y??+4y?+12y=8sin4t ikinci derecden diferansiyel denklemin zm r=dsolve('D2y+4*Dy+12*y=8*sin(4*t)','y(0)=0','Dy(0)=1','t') r= -4/17*sin(2*2^(1/2)*t)*sin(2*(2^(1/2)-2)*t)-3/17*sin(2*2^(1/2)*t)*cos(2*(2^(1/2)2)*t)*2^(1/2)-7/34*sin(2*2^(1/2)*t)*sin(2*(2^(1/2)2)*t)*2^(1/2)+3/17*cos(2*2^(1/2)*t)*sin(2*(2+2^(1/2))*t)*2^(1/2)+7/34*cos(2*2^(1/2)*t)*co s(2*(2+2^(1/2))*t)*2^(1/2)+3/17*cos(2*2^(1/2)*t)*sin(2*(2^(1/2)-2)*t)*2^(1/2)7/34*cos(2*2^(1/2)*t)*cos(2*(2^(1/2)2)*t)*2^(1/2)+1/17*sin(2*2^(1/2)*t)*cos(2*(2+2^(1/2))*t)+7/34*sin(2*2^(1/2)*t)*sin(2*(2+2 ^(1/2))*t)*2^(1/2)-4/17*cos(2*2^(1/2)*t)*cos(2*(2+2^(1/2))*t)4/17*cos(2*2^(1/2)*t)*cos(2*(2^(1/2)-2)*t)3/17*sin(2*2^(1/2)*t)*cos(2*(2+2^(1/2))*t)*2^(1/2)1/17*cos(2*2^(1/2)*t)*sin(2*(2+2^(1/2))*t)+1/17*cos(2*2^(1/2)*t)*sin(2*(2^(1/2)-2)*t)4/17*sin(2*2^(1/2)*t)*sin(2*(2+2^(1/2))*t)-1/17*sin(2*2^(1/2)*t)*cos(2*(2^(1/2)2)*t)+8/17*exp(-2*t)*cos(2*2^(1/2)*t)+41/68*exp(-2*t)*sin(2*2^(1/2)*t)*2^(1/2) >> pretty(simple(r)) 1/2 8/17 exp(-2 t) cos(2 2 t) - 2/17 sin(4 t) - 8/17 cos(4 t) 41 1/2 1/2 + -- exp(-2 t) sin(2 2 t) 2 68
M-Dosyalari
M-dosyalari olarak ele aldigimiz dosyalar aslinda matlab ortaminda kullanmis oldugumuz komutlardir ve veri analizini saglayan fonksiyonlardir.Bu fonksiyonlar her amaca yeterli olsa da sonulara daha hizli ulasabilmek iin kendimize zel fonksiyonlar yani yeni M-dosyalari olusturabiliriz.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 ktlesinin ve hizinin degerini girdigimde bana o cismin kinetik enerjisini veren bir Mdosyasi olusturalim.ncelikle komutlari yazacagim sayfaya girmem gerek.M-dosyasi olusturmak iin ncelikle file mensnden new dedigimizde M-file diyecektir.onu seerek
alanimizi olusturmus oluruz.Baska bir yol ise Command Windowda edit yazarak olusturmaktir. Asagidaki gibi M-dosyamizi olusturuyoruz: % ktlesi ve hizi verilen bir cismin % kinetik enerjisinin hesabi m=input('Ltfen ktle degerini giriniz(kg)= ') v=input('Ltfen cismin hiz degerini giriniz(m/s)= ') Ek=m*v^2/2 (verilen degerlere gre 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 Windowa geerek kinetik yazdigimizda veya komutlari yazdigimiz sayfadan debug mensnden Run setigimizde bakalim neler oluyor: >> kinetikLtfen ktle degerini giriniz(kg)=10m = 10 Ltfen cismin hiz degerini giriniz(m/s)=50 v = 50 Ek = 12500 %************************************** % Hareketli egri iin bir rnek r(t)=(2tcost/(t+1),2tsint/(t+1))
% kivrim.m % hold on for T=0:.1:4*pi t=[T T+.1]; plot(2*t.*cos(t)./(t+1),2*t.*sin(t)./(t+1)) axis equal axis([-2 2 -2 2]) axis off pause(.01) end %************************************************* % rastgele sayi retimi ve sinus zerine bindirme f1=50 % frekans f2=100 % frekans dt=0.001; max_sure=50; % saniye byt=40; % random sayi buyultme faktoru t = 0:0.001:.255; x = 10*sin(2*pi*f1*t) %+cos(2*pi*f2*t); yy = x + byt*randn(size(t)); subplot(2,1,1) plot((1/dt)*t(1:max_sure),yy(1:max_sure)) xlabel('zaman (milisaniye)') subplot(2,1,2) Y = fft(yy,256);
Pyy = Y.* conj(Y) / 256; f = 1000*(0:128)/256; plot(f,Pyy(1:129)) xlabel('frekans (Hz)') %************************************************ %************************************************ % K,re seklinde bir cismin gravite anomalisi ve rastgele grlt eklenmesi clear all; G=6.6579E-8; s=3000000; d=300; % s=input('ktle='); % d=input('derinlik='); byt=0.008; % rastgele sayi faktoru % kure seklindeki cismin gravite anomalisinin ifadesi % anomaliye rastgele gurultu eklenir. for i=(1:40) tm=s*1E6 td=d*1E2 x(i)=(i-21)*1E4 delg(i)=((G*tm*td)*(1/((x(i)^2+td^2)^1.5)))*1E3; gur=byt*randn(size(i)); gdelg(i)=delg(i)+gur; end; plot(x,gdelg) xlabel('uzaklik km') ylabel('mgal') text(5000,0.2,'\leftarrowanomali',... 'FontSize',16) %****************************************************
KAYNAKLAR
MATLAB ILE MHENDISLIK SISTEMLERININ ANALIZI VE ZM Prof.Dr. Ibrahim YKSEL U..Makine Mhendisligi Blm 1996 Matlab ve Programlama Dr. Aslan Inan, Papatya DIFERANSIYEL DENKLEMLER VE UYGULAMALARI Prof. Dr. Mehmet AYDIN Gnl GNDZ Beno KURYEL Yard. Do. Dr. Galip OTURAN Izmir 1999