18
Contents Sembolik değişken tanımlama İfadeleri daha görsel biçimde görme Türev alma Integral alma Limit alma Sembolik fonksiyonları çizdirme Sembolik ifadeleri basitleştirme Sembolik denklem çözme Çok bilinmeyenli sembolik denklemler Diferansiyel denklem çözme Çok bilinmeyenli diferansiyel denklemler Laplace dönüşümü Ters Laplace dönüşümü Diğer dönüşümler Sembolik ifadelerde değişkenlere değer verme Çok değişken içeren sembolik ifadelerde değişkenlere değer verme: Sembolik matrisler Sembolik matris işlemleri 1 Sembolik matris işlemleri 2 Sembolik fonksiyonlarla interaktif işlem yapmak için bir araç (funtool) Sembolik değişken tanımlama a, t, x ve y değişkenlerini sembolik olarak tanımlayalım ve değişken listesinde görelim: syms a t x y whos Name Size Bytes Class Attributes a 1x1 112 sym t 1x1 112 sym x 1x1 112 sym y 1x1 112 sym Sembolik değişkenler ile her türlü hesap yapılabilir, bu değişkenler kullanılarak başka değişkenler oluşturulabilir: f = exp(-2*t) g = sin(3*t)/(3*t) h = x^2+y^3; f = 1/exp(2*t) g = sin(3*t)/(3*t)

semboller

Embed Size (px)

DESCRIPTION

matlab sembol eğitim

Citation preview

Page 1: semboller

Contents

Sembolik değişken tanımlama İfadeleri daha görsel biçimde görme Türev alma Integral alma Limit alma Sembolik fonksiyonları çizdirme Sembolik ifadeleri basitleştirme Sembolik denklem çözme Çok bilinmeyenli sembolik denklemler Diferansiyel denklem çözme Çok bilinmeyenli diferansiyel denklemler Laplace dönüşümü Ters Laplace dönüşümü Diğer dönüşümler Sembolik ifadelerde değişkenlere değer verme Çok değişken içeren sembolik ifadelerde değişkenlere değer verme: Sembolik matrisler Sembolik matris işlemleri 1 Sembolik matris işlemleri 2 Sembolik fonksiyonlarla interaktif işlem yapmak için bir araç (funtool)

Sembolik değişken tanımlama

a, t, x ve y değişkenlerini sembolik olarak tanımlayalım ve değişken listesinde görelim:

syms a t x y

whos

Name Size Bytes Class Attributes

a 1x1 112 sym

t 1x1 112 sym

x 1x1 112 sym

y 1x1 112 sym

Sembolik değişkenler ile her türlü hesap yapılabilir, bu değişkenler kullanılarak başka

değişkenler oluşturulabilir:

f = exp(-2*t)

g = sin(3*t)/(3*t)

h = x^2+y^3;

f =

1/exp(2*t)

g =

sin(3*t)/(3*t)

Page 2: semboller

İfadeleri daha görsel biçimde görme

pretty komutu ile ifadelerin daha görsel biçimde formatlanarak ekrana yazdırılmasını

sağlayabiliriz:

pretty(f)

pretty(g)

pretty(h)

1

--------

exp(2 t)

sin(3 t)

--------

3 t

2 3

x + y

Türev alma

diff komutu ile türev alınabilir:

dfdt = diff(f)

dgdt = diff(g)

dfdt =

-2/exp(2*t)

dgdt =

cos(3*t)/t - sin(3*t)/(3*t^2)

Yüksek dereceli türevler:

dfdt2 = diff(f,2) % İkinci türev

dfdt3 = diff(f,3) % Üçüncü türev

dfdt10 = diff(f,10) % Onuncu türev

dfdt2 =

4/exp(2*t)

dfdt3 =

-8/exp(2*t)

dfdt10 =

1024/exp(2*t)

Page 3: semboller

Birden fazla değişken varsa, hangi değişkene göre türev alınacağını belirtebiliriz:

dhdx = diff(h,x)

dhdy = diff(h,y)

dhdx =

2*x

dhdy =

3*y^2

Integral alma

int komutu ile integral alınabilir:

fi = int(f)

gi = int(g)

fi =

-1/(2*exp(2*t))

gi =

sinint(3*t)/3

Yine integralin de hangi değişkene göre alınacağını belirtelibiliriz:

hix = int(h,x)

hiy = int(h,y)

hix =

x^3/3 + x*y^3

hiy =

x^2*y + y^4/4

Belirli integral aldırma:

fi = int(f,0,1)

gi = int(g,1,2)

hix = int(h,x,-1,2)

hiy = int(h,y,-1,2)

fi =

1/2 - 1/(2*exp(2))

Page 4: semboller

gi =

sinint(6)/3 - sinint(3)/3

hix =

3*y^3 + 3

hiy =

3*x^2 + 15/4

Limit alma

limit komutu ile limit bulunabilir:

f0 = limit(f,0) % t 0'a giderken f'nin limiti

finf = limit(f,inf) % t sonsuza giderken f'nin limiti

g0 = limit(f,0) % t 0'a giderken g'nin limiti

ginf = limit(f,inf) % t sonsuza giderken g'nin limiti

f0 =

1

finf =

0

g0 =

1

ginf =

0

Yine limitin de hangi değişkene göre alınacağını belirtelibiliriz:

hx2 = limit(h,x,2)

hy3 = limit(h,y,3)

hx2 =

y^3 + 4

hy3 =

x^2 + 27

Page 5: semboller

Sembolik fonksiyonları çizdirme

İki boyutlu çizimler

ezplot(f); % f'yi çizdir

ezplot(f,[-1 1]); % f'yi istenilen aralıkta çizdir

ezplot(g); % g'yi çizdir

Page 6: semboller

ezplot(g, [2 4]); % g'yi istenilen aralıkta çizdir

Üç boyutlu çizimler

ezsurf(h); % h'yi çizdir

Page 7: semboller

ezsurf(h, [-1 1 -2 2]); % h'yi x [-1,1] ve y [-2,2] aralığında çizdir

Sembolik ifadeleri basitleştirme

Aşağıdaki ifadede normalde olduğundan paydaki ile sadeleşebilir.

Yine basitleştirmesi yapılabilir.

f = (x^2-1)/(x-1)+cos(x)^2+sin(x)^2;

pretty(f);

2

2 2 x - 1

cos(x) + sin(x) + ------

x - 1

Page 8: semboller

MATLAB'da sembolik ifadeleri basitleştirmek için simplify kullanabiliriz:

simplify(f)

ans =

x + 2

Sembolik denklem çözme

Tek bilinmeyenli denklem çözme

xs = solve('x^2-9=0')

xs =

-3

3

xs = solve('sin(x)=1/2')

xs =

pi/6

(5*pi)/6

Çok bilinmeyenli sembolik denklemler

İki bilinmeyenli iki denklem çözdürelim:

[xs,ys] = solve('3*x+5*y=9','2*x+3*y=5')

xs =

-2

ys =

3

Alternatif notasyon

S = solve('3*x+5*y=9','2*x+3*y=5') % Tüm değişkenler için çözümü S'ye yaz

S =

x: [1x1 sym]

y: [1x1 sym]

S.x % x için çözüm

ans =

-2

Page 9: semboller

S.y % y için çözüm

ans =

3

Üç bilinmeyeli üç denklem çözdürelim:

eq1 = 'x+y*z=-5';

eq2 = '2*x^2+3*y-z=-7';

eq3 = 'x*y^2*z=12';

S = solve(eq1,eq2,eq3) % Tüm değişkenler için çözümü S'ye yaz

S =

x: [5x1 sym]

y: [5x1 sym]

z: [5x1 sym]

Birkaç tane çözüm bulunduğuna dikkat edin. Bu çözümlerin hepsi de bu denklemleri sağlar.

Örnek olarak birinci çözümün doğruluğunu kontrol edelim. x, y ve z değişkenlerine birinci

çözüm değerlerini verelim:

x = S.x(1)

y = S.y(1)

z = S.z(1)

x =

1

y =

-2

z =

3

Birinci denklemin sol tarafını hesaplayalım, sağ tarafa (-5) eşit çıkmalı

x+y*z

ans =

-5

İkinci denklemin sol tarafını hesaplayalım, sağ tarafa (-7) eşit çıkmalı

2*x^2+3*y-z

ans =

Page 10: semboller

-7

Üçüncü denklemin sol tarafını hesaplayalım, sağ tarafa (12) eşit çıkmalı

x*y^2*z

ans =

12

Diğer çözümler için de benzer şekilde sağlama yapabiliriz.

Diferansiyel denklem çözme

dsolve komutu ile diferansiyel denklemler çözülebilir. Türevi belirtmek için D harfi kullanılır.

İkinci türev D2, üçüncü türev D3 ... şeklinde belirtilir.

Örneğin denklemini için çözdürelim:

dsolve('Dx = -3*x')

ans =

C126/exp(3*t)

İlk koşul vermediğimiz için çözümde bir C sabiti var. Eğer ilk koşul da vermek istersek

(mesela ilk koşul verelim)

x = dsolve('Dx = -3*x','x(0) = 1')

x =

1/exp(3*t)

denklemini ve için çözdürelim

dsolve('D2x-4*Dx+5*x=1','x(0)=1','Dx(0)=0')

ans =

(4*exp(2*t)*cos(t))/5 - (8*exp(2*t)*sin(t))/5 + 1/5

dsolve normalde bağımsız değişkeni zaman (t) olarak alır. Bağımsız değişkene başka bir şey

demek istersek onu da parametre olarak belirtebiliriz. Mesela bağımsız değişken olsun

ve denkleminden 'yi çözdürelim:

dsolve('Dx = -3*x','s')

ans =

Page 11: semboller

C152/exp(3*s)

Çok bilinmeyenli diferansiyel denklemler

Çok bilinmeyenli diferansiyel denklemleri de normal denklemleri çözdürdüğümüze benzer

çekilde çözdürebiliriz. Örneğin

denklemlerini ilk koşullar ve olmak üzere çözdürelim:

S = dsolve('Dx = y', 'Dy = -x', 'x(0)=0', 'y(0)=1')

S =

x: [1x1 sym]

y: [1x1 sym]

S.x % x(t) için çözüm

ans =

sin(t)

S.y % y(t) için çözüm

ans =

cos(t)

Laplace dönüşümü

laplace komutu ikl sembolik fonksiyonların Laplace dönüşümü alınabilir. Örneğin birim dürtü

fonksiyonu için Laplace dönüşümü:

syms t

F = laplace(dirac(t)) % dirac = birim dürtü

F =

1

Birim basamak fonksiyonu için Laplace dönüşümü:

F = laplace(heaviside(t)) % heaviside = birim basamak

F =

1/s

Page 12: semboller

Rampa fonksiyonu için Laplace dönüşümü:

f = int(heaviside(t)); % rampa, birim basamağın integralidir

F = laplace(f)

F =

1/s^2

Sinüs ve kosinüs fonksiyonları için Laplace dönüşümü

syms w

F = laplace( sin(w*t) )

F =

w/(s^2 + w^2)

F = laplace( cos(w*t) )

F =

s/(s^2 + w^2)

Ters Laplace dönüşümü

ilaplace komutu ile ters Laplace dönüşümü alınabilir. Örneğin:

syms s;

f = ilaplace(1/(s+2))

f =

1/exp(2*t)

f = ilaplace(3/(s^2+9))

f =

sin(3*t)

f = ilaplace(s/(s^2+9))

f =

cos(3*t)

F = 1/(s^2*(s+1)*(s+2));

pretty(F); % Fonksiyonu güzel formatlanmış olarak görelim

1

------------------

2

s (s + 1) (s + 2)

f = ilaplace(1/(s^2*(s+1)*(s+2)));

pretty(f); % Sonucu güzel formatlanmış olarak görelim

Page 13: semboller

t 1 1 3

- + ------ - ---------- - -

2 exp(t) 4 exp(2 t) 4

Laplace ve ters Laplace dönüşümü birbirinin tersidir. f'nin Laplace'ını alırsak yine F'yi elde

ederiz:

laplace(f)

ans =

1/(s + 1) - 1/(4*(s + 2)) - 3/(4*s) + 1/(2*s^2)

Eşit olduklarını görebilmek için sonucu basitleştirelim ve güzel formatlanmıl bir biçimde

görelim

pretty(simplify(laplace(f)))

1

------------------

2

s (s + 1) (s + 2)

Diğer dönüşümler

Laplace dönüşümüne benzer şekilde başka faydalı sembolik dönüşümler, örneğin Fourier ve

z-dönüşümleri ve tersleri de MATLAB'da kolayca gerçekleştirebilir. Detaylı bilgi ve örnekler

için: doc fourier, doc ifourier, doc ztrans, doc iztrans ile ilgili yardım dosyalarına

ulaşabilirsiniz.

Sembolik ifadelerde değişkenlere değer verme

subs komutu ile sembolik ifadede bir değişkene nümerik bir değer verebiliriz.

syms x

f = x^3+x^2+x+4

f =

x^3 + x^2 + x + 4

f ifadesindeki sembolik değişken (x) yerine 2 koyalım

subs(f,2)

ans =

18

subs komutu ile bir sembolik değişkeni başka bir sembolik değişkenle veya ifadeyle de

değiştirebiliriz:

syms y

Page 14: semboller

f2 = subs(f,y) % f'de x yerine y koyarak f2 değişkenini oluştur

f2 =

y^3 + y^2 + y + 4

f3 = subs(f,(x+1)) % f'de x yerine x+1 koyarak f3 değişkenini oluştur

f3 =

x + (x + 1)^2 + (x + 1)^3 + 5

Not: f3'teki terimleri açmak için expand komutunu kullanabiliriz:

expand(f3)

ans =

x^3 + 4*x^2 + 6*x + 7

Çok değişken içeren sembolik ifadelerde değişkenlere değer verme:

syms x y;

f = x*y

f =

x*y

f'de x yerine 2, y yerine de 3 koyalım:

subs(f, {x, y}, {2,3})

ans =

6

f'de x yerine x+2, y yerine de y^3 koyalım:

subs(f, {x, y}, {x+2,y^3})

ans =

y^3*(x + 2)

Sembolik matrisler

Sembolik değişkenler kullanılarak matrisler de oluşturulabilir:

syms x;

A = [1 x;2 x^2+1]

Page 15: semboller

B = [x^2+1 4*x; x-3 1]

A =

[ 1, x]

[ 2, x^2 + 1]

B =

[ x^2 + 1, 4*x]

[ x - 3, 1]

Sembolik matris işlemleri 1

Nümerik matrislerle yaptığımız işlemlerin çoğunu sembolik matrislerde de yapabiliriz.

Örneğin matris toplamı

C = A+B

C =

[ x^2 + 2, 5*x]

[ x - 1, x^2 + 2]

Matris çarpımı

C = A*B

C =

[ x*(x - 3) + x^2 + 1, 5*x]

[ (x^2 + 1)*(x - 3) + 2*x^2 + 2, x^2 + 8*x + 1]

Matris tersi

Ai = inv(A)

Ai =

[ (x^2 + 1)/(x - 1)^2, -x/(x - 1)^2]

[ -2/(x - 1)^2, 1/(x - 1)^2]

Matris tersinin doğruluğunu kontrol edelim

Ai*A

ans =

[ (x^2 + 1)/(x - 1)^2 - (2*x)/(x - 1)^2,

0]

Page 16: semboller

[ 0, (x^2 + 1)/(x - 1)^2 - (2*x)/(x -

1)^2]

Bu sonuç aslında birim matrise eşit ama MATLAB sadeleştirmeleri yapmamış olduğu için

böyle olduğu anlaşılmıyor. Bu durumlarda simplify kullanabiliriz:

simplify(Ai*A)

ans =

[ 1, 0]

[ 0, 1]

Sembolik matris işlemleri 2

Özdeğer buldurma

eig(A)

ans =

x^2/2 - (x^4 + 8*x)^(1/2)/2 + 1

(x^4 + 8*x)^(1/2)/2 + x^2/2 + 1

Determinant

det(A)

ans =

x^2 - 2*x + 1

Karakteristik polinom

poly(A)

ans =

t^2 - t*(x^2 + 2) - 2*x + x^2 + 1

Matris exponansiyeli

expm(A)

ans =

[ (2*exp(x^2/2 - (x^4 + 8*x)^(1/2)/2 + 1)*((x^4 + 8*x)^(1/2)/4 +

x^2/4))/(x^4 + 8*x)^(1/2) + (2*exp((x^4 + 8*x)^(1/2)/2 + x^2/2 + 1)*((x^4 +

8*x)^(1/2)/4 - x^2/4))/(x^4 + 8*x)^(1/2), (2*exp((x^4 + 8*x)^(1/2)/2 +

x^2/2 + 1)*((x^4 + 8*x)^(1/2)/4 - x^2/4)*((x^4 + 8*x)^(1/2)/4 +

x^2/4))/(x^4 + 8*x)^(1/2) - (exp(x^2/2 - (x^4 + 8*x)^(1/2)/2 + 1)*((x^4 +

8*x)^(1/2) - x^2)*((x^4 + 8*x)^(1/2)/4 + x^2/4))/(2*(x^4 + 8*x)^(1/2))]

Page 17: semboller

[ (2*exp((x^4 +

8*x)^(1/2)/2 + x^2/2 + 1))/(x^4 + 8*x)^(1/2) - (2*exp(x^2/2 - (x^4 +

8*x)^(1/2)/2 + 1))/(x^4 + 8*x)^(1/2),

(exp(x^2/2 - (x^4 + 8*x)^(1/2)/2 + 1)*((x^4 + 8*x)^(1/2) - x^2))/(2*(x^4 +

8*x)^(1/2)) + (2*exp((x^4 + 8*x)^(1/2)/2 + x^2/2 + 1)*((x^4 + 8*x)^(1/2)/4

+ x^2/4))/(x^4 + 8*x)^(1/2)]

Sembolik fonksiyonlarla interaktif işlem yapmak için bir araç (funtool)

funtool

Page 18: semboller

Published with MATLAB® 7.9