Professional Documents
Culture Documents
2006
BÖLÜM -I -
Içindekiler
Giris
Baslarken
Temel Matematiksel Islemler
Degiskenler
Karmasik Sayilar
Temel Istatistiksel Islemler
Polinomlar
Yuvarlatma Islemleri
Matriks ve Vektörler
Nokta Çarpim/Bölme
Temel Matris Islemleri
Ters Islemler
Özvektörler ve Özdegerler
Hazir Matris Fonksyionlari
Grafik Çizimler
Yüzey Çizimleri
Vektör Alanlari
Sembolik Degiskenler
Denkleme Sistemlerinin Çözümü
Dogrusal Olmayan Denklem Takimlarinin Çözümü
Integraller
Türevler
Örnekler
Örnekler
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)
ans =
9/5
Sonuç format rat ile kesirli halde alinabilir.
Matlab’te hazir fonksyionalrin kullanim sekillerini bilmek istenirse ‘help’ komutu kullanilir
>> help abs (mutlak deger icin yardim dosyasi cagirma)
Overloaded methods
help sym/abs.m
Degiskenler
Tüm yazilabilir karakterler degisken olarak atanabilir ve ‘=’ olarak verilir.
>> x=23
x =
23
Degislen isimleri büyük ve küçük 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
>> y
y =
56
ans x y
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
> x=3;y=4;
>> complex(x,y)
ans =
3.0000 + 4.0000i
>> complex(2,-3)
ans =
2.0000 - 3.0000i
>> 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
Polinomlar
Matlab’ta polinomlar bir vektörle temsil edilirler. Polinom olusturmak için
yüksekten düsük dereceliye dogru azalan sirada polinom katsayilari yazilir.
P =
-24
6 4056
Yuvarlatma Islemleri
fix : Sifira dogru yuvarlatir
>> a=3.5;
>> fix(a)
ans =
>> floor(a)
ans =
>> ceil(a)
ans =
>> round(a)
ans =
Matrisler ve Vektörler
Matriks olusturmak için köseli, parantez kullanilir ve ’;’ ile satirlar ayrilir
>> A=[2 11 -3 8; 1 0 8 -3; 7 1 2 5]
A =
2 11 -3 8
1 0 8 -3
7 1 2 5
Sonuç verecek olan her komut satiri sonuna ‘;’ konulursa görülmesini istemediginiz
>> B=[2 0 -3; -1 1 3];
will still define the variable B containing a 2×3 matrix, but MATLAB will not echo anything.
>> whos
Name Size Bytes Class
Örnegin iki sayi arasinda sirali satir vektörü olusturmak için a:b; örnegin
>> 2:5
ans =
2 3 4 5
j:i:k bir satir vektörünü tanimlar ve j baslangiç, I artim ve k son elemani gösterir.
>> 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
Esit artimli bir vektörün transpozu asagidaki gibi tanimlanir;
>> [1:3:10]'
ans =
1
4
7
10
>> A(3,2)
ans =
15
Ayni satir sayisina sahip iki matris asagidaki örnekte oldugu birlestirilebilir.
>> A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>> B=[7 8; 9 10]
B =
7 8
9 10
>> [A B]
ans =
1 2 3 7 8
4 5 6 9 10
>> C=[7 8 9]
C =
7 8 9
Eger satirlar birlestirilmek istenirse;
>> [A;C]
ans =
1 2 3
4 5 6
7 8 9
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
2
w =
5
-2
1
-8
>> dot(v,w)
ans =
-12
>> theta=acos(dot(v,w)/(norm(v)*norm(w)))
theta =
1.6144
>> theta*180/pi
ans =
92.4971
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.
B =
2
3
>> C=[4 ;3]
C =
4
3
>> D=3*A-2*C
D =
-2
3
Iki matrisin A*B çarpimi A m×n ve B n×k oldugunda geçerlidir. Sonuç A*B matrisi m×k
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 2
3 4
5 6
7 8
>> A*B
ans =
55 68
31 40
2 12
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
Rank degeri 3’den küçük oldugundan B matrisi tekildir, Matrisin determinantinin sifirdan
farkli deger almasi gerek.
>> det(B)
ans =
0
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, basit
olarak x=A−1b olacaktir.
Özvektörler ve Özdegerler
Bir kare matrisin özdegerlerini bulmak için ‘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
Q matrisinin kolonlari A matrisinin öz-temellerini olusturur. v Q-1AQ=D. Saglamasi
>> inv(Q)*A*Q
ans =
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
a =
2 4 4
2 3 1
3 -2 5
>> diag(a)
ans =
2
3
5
‘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 =
>> c=rand(4) 0 ile 1 arasinda 4x4 matris olusturur. Özellikle iki boyutlu verilere
rastgele gürültü eklenmesinde temel kullanima uygundur.
c =
0.1389 0.2722 0.4451 0.8462
0.2028 0.1988 0.9318 0.5252
0.1987 0.0153 0.4660 0.2026
0.6038 0.7468 0.4186 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
>> d=zeros(2,4)
d =
0 0 0 0
0 0 0 0
>> e=ones(2,5)
e =
1 1 1 1 1
1 1 1 1 1
>> f=eye(3,3)
f =
1 0 0
0 1 0
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 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(-2:1:2,-2:1:2)
X =
-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
Y =
-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
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
Bir baska örnekte y=x3 fonksiyonu [−2,2] olarak tanimlaniyorsa bunun matlab da çizimini
yapalim. Araligini kendimizin belirleyecegi −2 den 2 x degerleri
>> 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')
Yüzeylerin Çizimleri
f(x,y) fonksiyonun dikdörtgensel ortamda gösterimi
Dikdörtgen [0,4]×[0,3] parçalara bölünürse ve genisligi 1 yüksekligi 0.5 olan. Gird araligini
tanimlayan x ve y vektörlerinin tanimlanmasi gerek.
>> x=0:4
x =
0 1 2 3 4
>> y=0:.5:3
y =
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
ö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 tanimlansin
Z =
0 3 6 9 12
-1 2 5 8 11
-2 1 4 7 10
-3 0 3 6 9
-4 -1 2 5 8
-5 -2 1 4 7
-6 -3 0 3 6
>> [X,Y]=meshgrid(-2:.1:2,-1:.1:1);
z yüzeyinin tanimi
>> Z=(X.^2).*Y-2*Y;
Yüzeyin çizilmesi.
>> surf(X,Y,Z)
>> title('f(x,y)=x^2y-2y Yüzeyi')
Yariçapi ρ olan bir küre R3 ile merkezlenmis olsun. Ve genellestirilmis ifadesi ve tanim
araligi,
>> phi=0:pi/20:pi;
>> theta=0:pi/10:2*pi;
>> [Phi,Theta]=meshgrid(phi,theta);
ρ = 1 için.
>> 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 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−y2. seviye egrilerinin gösterilmesi için 'contour’ komutu kullanilmaktadir.
>> [X,Y]=meshgrid(-1:.1:1);
>> Z=X.^2-Y.^2;
>> contour(X,Y,Z)
>> title(' f(x,y)=x^2-y^2 fonksiyonunun seviye egrileri')
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 .
>> [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 ölçeklendirme olarak kullanilir.
Yukarida sagdaki sekilde s=0 olarak alinmistir. Kullanilmassa otomatik
ölçeklendirme yapilir.
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 islemlerde
kullanilacak degiskenlerin önceden bildirilmesi gerekir. Örnegin ‘a’ gibi bir sembolik degisken
>> sym a
ans =
a
veya
>> sym('a')
ans =
a
ile bildirilir.
>> simplify(C)
ans =
[ cos(a)*cos(b)-sin(a)*sin(b), -cos(a)*sin(b)-sin(a)*cos(b)]
[ sin(a)*cos(b)+cos(a)*sin(b), cos(a)*cos(b)-sin(a)*sin(b)]
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)]
>> 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
Örnek: g(x,y)=x2−3xy+2
>> g=inline('x^2-3*x*y+2')
g =
Inline function:
g(x,y) = x^2-3*x*y+2
olarak tanimlanabilir.
>> solve('sin(x)+x=5')
ans =
5.6175550052726989176213921571114
>> solve('a*x^2+b*x+c','x')
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
Örnek: x2+y2=4 ve (x−1)2+(y−1)2=1 olarak verilen iki fonksiyonun kesisim degerlerini bulmak
için.
>> 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 ]
n1 n 2
a a .. a nn
katsayilar matrislerini ve
X = [x1 x 2 ... x 3 ]
çö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 verilen
denklem takiminin çözümünde A\B biçiminde soldan (bölen bölme isaretinin solunda yer
almakta) matris bölme islemi ile yerine getirilir. XA=B biçiminde tanimlanan matris
denklemin çözümünde B/A seklinde sagdan matris bölme islemi kullanilir. Sagdan ve soldan
matris bölme isleminde sayisal Gauss eliminasyon teknigi kullanilir.
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-1B
elde edilir. Burada A-1 A, I olarak tanimlanan birim matrise denktir.
Buna göre
IX=A-1B
veya
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=B
biçiminde ifade edilen denklem takiminin çözümü için, her iki taraf A-1 ile çarpilir ve gerekli
düzenlemeler yapilirsa
X=BA-1
elde edilir.MATLAB ortaminda
X=B * inv(A)
bildirimi ile gerekli çözüm elde edilmis olur.
x1 + 4 x2 − x3 + x4 =2
2 x + 7 x + x − 2 x = 16
1 2 3 4
x1 + 4 x2 − x3 + 2 x4 = 1
3x1 − 10 x2 − 2 x3 + 5 x4 = −15
Çö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.
Ters matris islemi ile çözümde; MATRIS denklemi AX=B biçiminde verildiginde, A ve B
matrisi
x=inv(a)*b;
bildirimi ile çözüm elde edilir: Benzer sekilde Matris denklemi XA=B biçiminde verildiginde
A ve B matrisleri,
bildirimi ile çözüm elde edilir. Yukarida verilen bildirimler yolu ile x çözümü için
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 fonksiyonlari
vardir. Dogrusal olmayan denklemlerin çözümü, dogrusal denklem çözümü kadar basit
olmayip 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özden
geçirilecektir.
fzero: Fonksiyon fonksiyonu; tek degiskenli bir fonksiyonun sifirini hesaplar. Genel
kullanim biçimleri asagida oldugu gibidir.
z=fzero(‘function’,X0);
z=fzero(‘function’,X0,tol);
z=fzero(‘function’,X0,tol, trace);
fun(x) biçimindeki 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, seçimli argüman bagil hata toleransini belirler. Üçüncü
bildirimde yer alan seçimli trace argümani her bir hesap yineleme islemindeki bilgileri
görüntüler.
Fonksiyon fonksiyonu olan fzero fonksiyonunu kullanmak için ayrica function ile baslayan
bir fonksiyon dosyasi hazirlanmasi gerekir.
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 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
Örnek : e2x –x –2 biçiminde verilen dogrusal olmayan fonksiyonun bir adet sifirini bulunuz.
elde edilir.
x=fsolve(‘fun’,x0)
x=fsolve(‘fun’,x0,options)
x=fsolve(‘fun’,x0,options,’grad’)
x=fsolve(‘fun’,x0,options,’grad’,p1,p2, ...)
[x,options]=fsolve(‘fun’,x0, ...)
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, X0
tahmini baslangiç degerlerinden baslayarak çözer ve sonucu X degiskenine atar. Burada X0
boyutu 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’deki
fonksiyonun i’inci kismi türevine karsilik gelir.
C=1.2+11.62323v-1f-1 + 5.7449x10-8v3f0.16d1.14
0.0499v0.95 f0.78 d0.75=20
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 . . .
(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);
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.
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]);
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
>> 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(3)=20-0.0449*(x(1).^0.95)*(x(2).^0.78)
*(x(3).^0.75);
sifirdan oldukça farkli degerler elde edildigi görülür. Bu durumda baslangiç degerlerini
degistirmek sureti ile uygun çözümler arastirilmalidir.
Integraller
Simgesel integral alma fonksiyonu ‘int’ genel kullanim sekli
int(s) : findsym ile belirlenen simgesel degiskene göre S’nin belirsiz integralini alir
int(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.
Örnek:
∫ (−2 x − 4 x + 20)dx integrallinin hesaplanmasi
5
>>int(-2*x^5-4*x+20)
ans =
-1/3*x^6-2*x^2+20*x
>> pretty(int(-2*x^5-4*x+20))
6 2
- 1/3 x - 2 x + 20 x
Örnek:
Bir fomksiyonun bilinmeyen parametrelerine göre türevinin alinmasi için Jacobian matrisin
olusturulmasi gerekir. Bunun için ‘jacobian’ komutu kullanilir.
Örnek: f(x,y)=(sin(xy),x2+y2,3x−2y).
T ‘nin Jacobian ‘i
>> JT=jacobian(T)
JT =
[ 11, -3, 14, 7]
[ 5, 7, 9, 2]
[ 8, 12, -6, 3]
Ö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.
Örnek:
d2y dy
2
+ 3 + y = 0 diferansiyel denklemin çözümü
dt dt
dsolve('D2y+3*Dy+y=0')
ans =
C1*exp(1/2*(-3+5^(1/2))*t)+C2*exp(-1/2*(3+5^(1/2))*t)
pretty(ans)
1/2 1/2
C1 exp(1/2 (-3 + 5 ) t) + C2 exp(- 1/2 (3 + 5 ) t)
‘Pretty’ komutu ile düzenli basim sekli gelir.
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 sonuçlara daha hizli ulasabilmek için 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 kütlesinin ve hizinin degerini girdigimde bana o cismin kinetik enerjisini veren bir M-
dosyasi olusturalim.Öncelikle komutlari yazacagim sayfaya girmem gerek.M-dosyasi
olusturmak 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.
%**************************************
% Hareketli egri için 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 gürültü eklenmesi
clear all;
G=6.6579E-8;
s=3000000;
d=300;
% s=input('kütle=');
% 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 ve Programlama
Dr. Aslan Inan, Papatya
• HTTP://WWW.MATHWORKS.COM
• HTTP://EDUCATION.MATHWORKS.COM
• HTTP://EFE.EGE.EDU.TR/~MATLAB/MATLAB1.DOC