Matlab’de Matematiksel İşlemler

Bu yazıda sizlere limit, türev, integral ve diferansiyel denklemlerin Matlab’de nasıl çözüldüğünden bahsedeceğim.

Matlab’de Limit

Matematikte çok önemli bir yere sahip olan limit problemlerini Matlab’de çözmek mümkündür. Bunun için limit() komutunu kullanmamız gerekir. Komutun içerisine yazmamız gereken fonksiyon sembolik nesnelerden oluşmalıdır. Eğer sembolik nesne ile ilgili herhangi bir fikriniz yoksa buradan bir önceki yazımızı okumanızı tavsiye ederim. Komutun kullanılışı,

limit(fonksiyon,değişken,değer,left-right)

şeklindedir. Burada eğer fonksiyonumuz x değişkenine bağlı ise değişken yerine x yazılır. x değişkeninin yaklaşmaya çalıştığı değer b ise  değer yerine b yazılmalıdır. Eğer ki b değerine b+(sağdan) ya da b(soldan) yaklaşıyorsak left veya right değerlerinden biri yazılmalıdır.

    \[lim_{x\to b^+}f(x)\]

ifadesinin limitini bulmak için komut satırına limit(f(x),x,b,right) ifadesi yazılmalıdır. Eğer değer yerine herhangi bir şey yazılmaz ise 0 olarak kabul edilir.

Limit x→∞ ise değer yerine inf, x→-∞ ise –inf yazılmalıdır.  Böylece limit bulunmuş olacaktır. Birkaç örnek yapalım.

Örnekler

    \[lim_{x \to \infty}\frac{7^{2x+1}-49.7^{x+3} }{49^{x-1}+77 }    =?\]

INPUT:
 >> syms x;
 >> f = (7^(2*x+1) - 49*(7^(x+3)))/(49^(x-1) + 77);
 >> sonuc = limit(f,x,inf);
 >> sonuc
 OUTPUT:
 sonuc =
  343 

    \[lim_{x \to {0}^{-}}\frac{9x}{|x|} =?   \hspace{3em} lim_{x \to 1}\frac{3x^2-3}{x-1} =? \]

 INPUT:
 >> syms x;
 f1 = (9*x)/abs(x);
 >> sonuc1 = limit(f1,x,0,'left');
 >> sonuc1
 OUTPUT:
 sonuc1 =
 -9 

INPUT:
>> syms x;
>> f2 = (3*(x^2) - 3)/ (x-1);
>> sonuc2 = limit(f2,x,1);
>> sonuc2
OUTPUT:
sonuc2 = 
6

    \[lim_{x \to a}\frac{x^3-a^3}{sin(3x-3a)} =? \hspace{3em} lim_{x \to {1}^{+}}\frac{6x^2+5x+3}{9x} =? \]

INPUT:
syms x a;
f3 = ((x^3) - (a^3))/(sin(3x -3a));
sonuc3 = limit(f3,x,a) ;
sonuc3
OUTPUT:
sonuc3 =
a^2    

INPUT:
>> syms x;
>> f4 = (6*(x^2) + 5*x + 3) / (9*x);
>> sonuc4 = limit(f4,x,1,'right');
>> sonuc4
OUTPUT:
sonuc4 =
14/9 

Matlab’de Türev

Mühendislik ve matematik başta olmak üzere birçok alanda karşımıza çıkan türev problemlerini matlab ile çözmek için diff() komutunu kullanmamız yeterlidir. Türevini hesaplama ihtiyacı duyduğumuz fonksiyonu diff() komutuna yazarken, fonksiyonun değişkenini matlab’de sembolik nesne olarak tanımlamış olmamız gerekir. Komutun kullanışı diff(fonksiyon,derece,değişken) şeklindedir. Fonksiyon ve değişken kısımlarına neler yazılması gerektiği limit() komutundan biliyoruz. Derece yerine ise fonksiyonun kaçıncı mertebeden türevinin olmaması gerektiği yazılmalıdır. Örnek olarak f(x) fonksiyonunun 2.mertebeden türevi hesaplanmak isteniyorsa komut satırına diff(f(x),2,x) yazılması yeterlidir. Matlab sonucu bize çıktı olarak gösterecektir.

Örnekler

    \[f(x)=7x^6+ 6x^5 + 10x^4 + 2x^2+ 1  \quad ise  \quad f'(x) = ?\]

INPUT:
>> syms x;
>> f = 7*(x^6) + 6*(x^5) + 10*(x^4) + 2*(x^2) + 1;
>> sonuc = diff(f,1,x);
>> sonuc
OUTPUT:
sonuc = 
42*x^5 + 30*x^4 + 40*x^3 + 4*x 

    \[f(x)=x^2tan(x)+cos^2(4x^2) \quad  ise  \quad f'(x) = ?\]

INPUT:
>>syms x;
>>f = (x^2)tan(x) + (cos(4(x^2)))^2;
>>sonuc = diff(f,1,x);
>>sonuc
OUTPUT:
>>sonuc =
>>2xtan(x) + x^2(tan(x)^2 + 1) - 16xcos(4x^2)sin(4x^2)    

    \[f(x)=e^xsin(5x) \quad  ise  \quad f^3(x) = ?\]

INPUT:
>>syms x;
>>f = exp(x)(sin(5x));
>>sonuc = diff(f,3,x);
>>sonuc
OUTPUT:
>>sonuc =
>>-110cos(5x)exp(x) - 74sin(5x)exp(x)         

    \[f(x)=\frac{1}{2+sin(2x)}\hspace{0.2 cm}ise\hspace{0.2 cm}f^2(x)=?\hspace{0.2 cm}ve\hspace{0.2 cm}x=5\hspace{0.2 cm}noktasındaki\hspace{0.2 cm}2. türevi\hspace{0.2 cm}nedir?\]

INPUT:
>>syms x;
>>f = (1)/(2 + sin(2x)); 
>>turevin_sonucu = diff(f,2,x);
>>sonuc = subs(turevin_sonucu,5);  %x = 5 noktasındaki 2.türevin sonucuna bakıyoruz.  
>>sonuc 
>>OUTPUT: 
>>sonuc =  (4sin(10))/(sin(10) + 2)^2 + (8*cos(10)^2)/(sin(10) + 2)^3       

Matlab’de İntegral

Matlab’de int() komutunu kullanarak herhangi bir integral probleminin çözümünü bulabiliriz. Bu komutun içerisine yazacağımız fonksiyonun değişkeninin yine önceki iki komut gibi sembolik nesne olarak tanımlanmış olması gerekir. int() komutu ile belirli veya belirsiz integraller çözdürülebilir. Eğer belirsiz integral çözmek istiyorsak int(fonksiyon) komutunu kullanmalıyız. Fakat belirli integral çözmek istiyorsak int(fonksiyon,başlangıç değeri,bitiş değeri) komutunu kullanmamız yeterlidir. Bazı durumlarda matlab integrali hesaplayamayabilir. Bu durumda quad() komutunu kullanarak integralin yaklaşık değerini hesaplayabiliriz.

Örnekler

    \[\int (3x^5+2x^2+1)dx\hspace{0.2 cm}integralini\hspace{0.2 cm}hesaplayınız.\]

INPUT:
>> syms x;
>> f = 3*(x^5) + 2*(x^2) + 1;
>> sonuc = int(f);
OUTPUT:
sonuc =
x^6/2 + (2*x^3)/3 + x 

    \[\int (x^2sin(x))dx\hspace{0.1 cm}integralini\hspace{0.1 cm}hesaplayınız.\]

INPUT:
>> syms x;
>> f = (x^2)*sin(x);
>> sonuc = int(f);
>> sonuc
OUTPUT:
sonuc =
2*x*sin(x) - cos(x)*(x^2 - 2) 

    \[\int_{0}^1 \frac{2}{2+3x}dx\hspace{0.1 cm}integralini\hspace{0.1 cm}hesaplayınız.\]

INPUT:
>>syms x;
>>f = (2)/(2 + 3*x);
>>sonuc = int(f,0,1);
>>sonuc
OUTPUT:
>>sonuc =
>>log(50^(1/3)/2)    

    \[\int_{0}^{\pi/2} sin^2(3x)cos(x)dx\hspace{0.1 cm}integralini\hspace{0.1 cm}hesaplayınız.\]

INPUT:
>>syms x;
>>f = ((sin(3x))^2)cos(x);
>>sonuc = int(f,0,pi/2);
>>sonuc
OUTPUT:
>>sonuc =
>>17/35    

Bu tip integral hesaplamalarının dışında iki katlı ya da üç katlı integraller hesaplanabilir.

Çok Katlı İntegraller

    \[\int_{a}^{b}\int_{b}^{a}f(x,y)dxdy\]

biçimindeki iki katlı integrali hesaplamak için int(int(f(x,y),x,c,d),y,a,b) komutunun kullanılması yeterlidir. Burada dikkat edilmesi gereken husus, integral probleminde hangi değişkene göre integral önce hesaplanması gerekiyorsa, int(f(x,y),x,c,d) komutunun değişkeni ve sınırları ona göre belirlenmelidir. Eğer integral problemi ilk y değişkenine göre hesaplanması gerekseydi, içerideki komut int(f(x,y),y,c,d) şeklinde olurdu. Benzer şekilde üç katlı

    \[\int_{a}^{b}\int_{c}^{d}\int_{e}^{f}f(x,y,z)dxdydz\]

integralini hesaplamak için int(int(int(f(x,y,z),x,e,f),y,c,d),z,a,b) komutunu kullanmamız gerekir.

Örnekler

    \[\int_{0}^{3}\int_{0}^{x/4}(x^2+y^2)dydx\hspace{0.1 cm}integralini\hspace{0.1 cm}hesaplayınız.\]

INPUT:
>>syms x y;
>>f = (x^2) + (y^2);
>>sonuc = int(int(f,y,0,x/4),x,0,3);
>>sonuc
OUTPUT:
>>sonuc =    
>>1323/256

    \[\int_{0}^{4}\int_{0}^{5}\int_{0}^{3}(x^2y^2z^2)dxdydz\hspace{0.1 cm}integralini\hspace{0.1 cm}hesaplayınız.\]

INPUT:
>>syms x y z;
>>f = (x^2)(y^2)(z^2);
>>sonuc = int(int(int(f,x,0,3),y,0,5),z,0,4);
>>sonuc
OUTPUT:
>>sonuc =    
>>8000

Bu şekilde matlab’de herhangi bir integral problemini hesaplayabiliriz. Son olarak diferansiyel denklem çözümlerinden bahsedip yazıyı sonlandıracağım.

Matlab’de Diferansiyel Denklemler

Limit, türev, integral gibi matematik, fizik ve mühendislik alanlarında önemli bir yere sahip olan diferansiyel denklemleri matlab üzerinde çözebilmek mümkündür. Bilinmeyen fonksiyonun bir bağımsız değişkene bağlı olduğu adi diferansiyel denklemleri çözmek için Dsolve() komutu kullanılabilir. Komut içerisindeki d/dt ifadesi ‘D’ ile temsil edilir. Dsolve komutunun kullanımı Dsolve(‘Diferansiyel denklem’,başlangıç koşulları) şeklindedir. Diferansiyel denklemin matlab’de temsili aşağıdaki gibidir:

    \[y' = Dy,    y'' = D2y,     y''' = D3y,    y'''' = D4y,  … ,  = Dny\]

Örnekler

    \[y'' - 6y' + 25y = 0\hspace{0.1 cm}diferansiyel\hspace{0.1 cm}denklemini\hspace{0.1 cm}çözünüz.\]

INPUT:
>>syms x y;
>>x=dsolve('D2y-6Dy+25y=0');
>>x
OUTPUT:
>>x =
>>C1cos(4t)exp(3t) + C2sin(4t)exp(3t)    

    \[y'' - y' - 2y = e^{4t}\hspace{0.1 cm}diferansiyel\hspace{0.1 cm}denklemini\hspace{0.1 cm}çözünüz.\]

INPUT:
>>syms x y t;
>>x=dsolve('D2y-Dy-2y=exp(4t)');
>>x
OUTPUT:
>>x =
>>exp(4t)/10 + C1exp(2t) + C2exp(-t)    

    \[y'' - 8y' + 2y + 1= t\hspace{0.1 cm}diferansiyel\hspace{0.1 cm}denklemini\hspace{0.1 cm}\hspace{0.1 cm}y(0) =0\hspace{0.1 cm}ve\hspace{0.1 cm}y'(0) = -1\]

    \[koşulları\hspace{0.1 cm}altında\hspace{0.1 cm}çözünüz\hspace{0.1 cm}ve\hspace{0.1 cm}grafiğini\hspace{0.1 cm}çiziniz.\]

INPUT:
>>syms x y t;
>>x=dsolve('D2y+8Dy+2y+1=t','y(0)=0','Dy(0)=-1'); 
>>x
>>ezplot(x)
OUTPUT:
>>x =
>>t/2 + exp(t(14^(1/2) - 4))((1714^(1/2))/56 + 5/4) + (14^(1/2)exp(-t(14^(1/2) + 4))(5*14^(1/2) - 17))/56 - 5/2    

MTLBI7J25966U28A3H

Matlab’de İki Boyutlu Grafik Çizimi

Bu yazıda sizlere Matlab’de iki boyutlu grafiklerin çizimlerinden bahsedeceğim.

Yaptığımız işlemlerin sonuçlarını hem görebilmek hem de analiz etmek için verileri görselleştirmemiz gerekebilir. Bu gibi durumlarda, Matlab yardımıyla verilerimizi görselleştirebiliriz. Grafik çizimi için ilk olarak plot() komutundan bahsedelim. plot() komutunu kullanabilmek için ilk önce x vektörünü Matlab’de tanımlamış olmamız gerekir. Ardından bu x vektörünün her bir değeri için y değerleri hesaplanmalıdır. Bu işlemlerin ardından x ve y vektörünü plot(x,y) yazarak verileri görselleştirebiliriz. Bu komut yerine iki noktayı doğru olarak birleştiren line() komutunu da kullanabiliriz. Bu komutları kullanarak grafik çizerken grafiğe ait doğrunun özelliklerini belirleyebiliriz. Bu özelliklere kısaca değinelim.

color: Çizginin rengini değiştirmek için kullanılır.

linestyle: Çizginin stilini belirlemek için kullanılan özelliktir.

linewidth: Çizgi kalınlığını belirleyen özelliktir.

Bu özelliklere ek olarak marker adı verilen ve çizginin şeklini belirleyen özellik vardır. Bu özellikler sayesinde grafiğimizi oluşturan çizgiyi aşağıdaki tabloda verilen işaretlerden oluşturabiliriz.

İşaretAçıklama
+Çizgi + işaretinden oluşur.
oÇizgi daire işaretinden oluşur.
*Çizgi yıldız işaretinden oluşur.
.Çizgi nokta işaretinden oluşur.
xÇizgi çarpı işaretinden oluşur.
sÇizgi kare işaretinden oluşur.
dÇizgi elmas işaretinden oluşur.
^Çizgi yukarı gösteren üçgen işaretinden oluşur.
vÇizgi aşağı gösteren üçgen işaretinden oluşur.
>Çizgi sağa doğru üçgen işaretinden oluşur.
<Çizgi sola doğru üçgen işaretinden oluşur.
pÇizgi pentagon yıldız işaretinden oluşur.
hÇizgi hexagon yıldız işaretinden oluşur.
noneİşaretsiz.

Şimdi plot() komutunu ve yukarıdaki özelliklerden bazılarını kullanarak grafik çizdirelim. Örnek olarak 1’den 100’e kadar 0.5 artımla y = x2 + 2x +1 grafiğini çizdirelim.

INPUT:
>>x = 1:0.5:100;
>>y = x.^2 +2.*x + 1;
>>plot(x,y)

OUTPUT:
 Oluşan grafiği matlab üzeriden görebilirsiniz. 

Kodları bu şekilde yazarsak grafiğimiz standart biçimde gözükecektir. Eğer grafiğin özelliklerini değiştirmek istiyorsak, yukarıdaki özellikleri plot() komutunun içerisine yazmamız gerekir. Bu sefer örnek olarak x değerleri 0 ile 10 arasında 1 artımla y = x3 + 5x2 + 6x + 1 fonksiyonu ile verilsin. Grafiğin çizgisinin şekli elmas, kalınlığı 2 ve rengi yeşil olsun. Bu grafiği matlab’de aşağıdaki gibi çizebiliriz.

INPUT:
>>x = 0:1:10;
>>y =2.*x.^3 + 5.*x.^2 + 6.*x + 1;
>>plot(x,y,'dg','linewidth',2)

OUTPUT:
  Oluşan grafiği matlab üzeriden görebilirsiniz.

Bunların haricinde x değerlerine karşılık birden fazla fonksiyon varsa bu fonksiyonları tek bir eksende çizdirebiliriz. Örnek olarak 0<x<10 aralığında x değerleri 0.5 artım ile y1 = 2cosx + 2x ve y2 = sinx +x2 fonksiyonlarının grafiklerini aynı eksende çizdirelim.

INPUT:
>>x = 0 : 0.5 : 10;
>>y1 = 2.*(cos(x)) + 2.*x;
>>y2 = (sin(x)) + x.^2;
>>plot(x,y1,"g+",x,y2,"b*")

OUTPUT:
  Oluşan grafiği matlab üzeriden görebilirsiniz.

Fonksiyonların grafiklerini çizerken x veya y değerlerinden herhangi birinin aralığı çok geniş ise bu değerleri logaritmik artış ile tanımlayabiliriz. Eğer hem x hem de y’nin aralığı geniş ise loglog() komutunu, sadece x’in aralığı çok geniş ise semilogx() komutu, sadece y’nin aralığı x’e göre çok geniş ise semilogy() komutunu kullanarak grafiğimizi çizebiliriz. Bu komutları tek tek örnek ile görelim.

-100<x<100 aralığındaki x değerlerini 0.1 artım ile y = x4 + 3x + 1 fonksiyonunun grafiğini loglog(), semilogx() ve semilogy() komutlarını kullanarak çizdirelim.

INPUT:
>>x = -100:0.1:100; 
>>y = x.^4 + 3.*x + 1;
>>plot(x,y)
>>semilogx(x,y)
>>semilogy(x,y)
>>loglog(x,y)

OUTPUT:
 Oluşan grafiği matlab üzerinden görebilirsiniz. 

Aynı eksen üzerinde iki fonksiyona ait grafikleri üst üste çizdirebilmek için hold fonksiyonunu kullanabiliriz. Böylece iki fonksiyonun grafiklerini karşılaştırabilir ya da analiz edebiliriz. Örnek olarak [0, 4π] aralığında f(x) = tanx ve g(x) = cotx fonksiyonlarının grafiklerini çizdirelim.

INPUT:
>>x = 0: 0.1 : 4*pi; 
>>f = tan(x);
>>g = cot(x);
>>plot(x,f);
>>hold;
>>plot(x,g)

OUTPUT:
Oluşan grafiği matlab üzerinden görebilirsiniz.

Bu şekilde sayısal aralıkları farklı olan iki fonksiyonu aynı eksen üzerinde çizdirdiğimizde bir fonksiyonun değerleri diğer fonksiyonun değerlerinden daha küçük olduğunda tam olarak ayırt edilemeyebilir. Böyle bir durumda plotyy() fonksiyonunu kullanarak fonksiyonların grafiklerini daha ayrıntılı bir şekilde çizdirebiliriz. Örnek olarak [0,6π] aralığında f(x) = 2x2 – 10x + 5 ile g(x) = cos(x/3) fonksiyonlarının grafiklerini aynı eksende çizdirelim.

INPUT:
>>x = 0: 0.1:6*pi;
>>f = 2.*x.^2-10.*x+5; 
>>g = cos(x./3); 
>>plotyy(x,f,x,g)

OUTPUT: 
  Oluşan grafiği matlab üzerinde görebilirsiniz. 

Bu bölümde son olarak polar(t,r) komutundan bahsetmek istiyorum. Bu komut sayesinde kutupsal koordinatları verilen bir fonksiyonun grafiğini çizdirebiliriz. Buradaki t, grafiğe ait noktaya karşılık gelen vektörün Ox ekseniyle yaptığı açıyı, r ise vektörün uzunluğunu ifade eder. Örnek olarak t açısı [0,5π] aralığında iken r = (cos2(t)).sin(t) fonksiyonunun grafiğini çizelim.

INPUT:
>>t = 0: 0.2: 5*pi;
>>r =((cos(t)).^2).*sin(t);
>>polar(t,r)

OUTPUT:
 Oluşan grafiği matlab üzerinden görebilirsiniz.
MTLB2CH9T4Y8H74M05
Matlab’de Polinom Türevi ve Denklem Çözme

Bu yazıda sizlere Matematik’te sıklıkla karşımıza çıkan polinomların, türevlerinin ve denklem çözme problemlerinin Matlab’de nasıl hesaplandığından bahsedeceğim.

Polinom Türevi

Sabit katsayılı n. dereceden bir polinomun genel hali:

an xn + an-1 xn-1 + an-2 xn-2 + … + a1 x + a0 gibidir.

Bu polinomun türevi,

an n xn-1 + an-1 (n-1) xn-2 + an-2 (n-2) xn-3 + … + a1  şeklindedir.

Buna göre bir polinomun türevi alınabilir. Ancak bu türevi Matlab ile hesaplamak mümkündür. Bir polinomun Matlab’de türevini hesaplamak için polyder() fonksiyonu kullanılmalıdır. Bu fonksiyon içerisine polinomun katsayılarından oluşan satır vektörü yazıldığında sonuç olarak polinomun türevinin katsayılarından oluşan satır vektörü elde edilir. Örnek olarak P(x) = 5 x4 + 10 x3 + 3 x2 + x + 5 polinomunun türevini Matlab’de hesaplayalım.

INPUT:

>>p = [5 10 3 1 5]

OUTPUT:

p = 
    5    10     3     1     5

INPUT: 
  
>>polyder(p) 

OUTPUT: 
    ans =       2 >> % türev 20 x3 + 30 x2 + 6 x + 1 olarak elde edilir.
 

P(x) = 4 x2 + 5x + 3 ve P(x) = 5 x2 + 6 x + 5 iki polinomun çarpımının türevini Matlab’de hesaplayalım:

INPUT:

>>p1 = [4 5 0 3]


OUTPUT:

p1 = 
     4     5     0     3

INPUT: 
 >>p2 = [5 6 4] 

OUTPUT 

p2 = 

    5     6     4

INPUT: 
>>carpim = conv(p1,p2) 

OUTPUT: 

carpim =            20    49    46    35    18    12


INPUT: 
>>polyder(carpim)

OUTPUT: 
ans = 100 196 138 70 18 
>> %Polinomun türevi: 100 x4 + 196 x3 + 138 x2 + 70 x + 18

Parçalı Kesre Ayırma

Şimdi residue( ) fonksiyonundan bahsedelim. Bu fonksiyon tam kesir halinde verilen bir polinomu parçalı (basit) kesir şeklinde yazmamızı sağlıyor. A(x) ve B(x) iki polinom ise,

şeklindeki kesir ifadesini residue( ) fonksiyonu ile parçalı kesir halinde yazacağız. Öncelikle pay ve paydadaki polinomların katsayılarından oluşan satır vektörünü Matlab’de tanımlayalım.

b = [b1 b2 b3 b4 … bn]

b = [a1 a2 a3 a4 … an] şeklinde tanımlanır.

residue(b, a) fonksiyonunun kullanımı [r, p, k] = residue(b,a) gibidir. Burada r, n’inci parçalı kesrin payı, p, n’inci parçalı kesrin paydası ve k’da sabit terimdir. Böylece verilen tam kesrin parçalı hali aşağıdaki gibi olur:

Örnek olarak A(x)/B(x) = (x2 -2x+1)/ (x2 – 1) kesrini parçalı kesre ayıralım. Bu işlemi aşağıda görüldüğü gibi yapabiliriz:

INPUT:

>> b = [1 -2 1]

OUTPUT:

b =
    1    -2     1

INPUT: 
   >>a = [1 0 -1] 

OUTPUT: 
   a =     1     0    -1 

INPUT: 
>>[pay,payda,sabit] = residue(b,a) 


OUTPUT: 

 pay =        -2           0 
 
 payda =        -1         1 

 sabit =         1   

>> %Düzenlersek (-2/(x+1)) + (0/(x-1)) + 1 = (x-1)/(x+1) olarak bulunur.

 

 

Polinom ile ilgili daha fazla örnek çözümünü sonraki yazılarımızda paylaşmayı düşünüyorum. Şimdi ise Matlab’de birinci dereceden denklemlerin nasıl çözülebildiğine bakalım. Ancak denklem çözümüne geçmeden önce sizlere birkaç komuttan ve sembolik ifadeden bahsetmek istiyorum. Matlab’de integral, türev, limit ve denklem çözümü işlemleri hesaplarken sembolik nesnelere ihtiyacımız olur. Çünkü bu işlemlerde kullanacağımız fonksiyonlar sembolik nesneler ile çalışır. sym ve syms komutları bir değişkeni sembolik nesne yapmaya yarar. Örnek olarak: >> syms x; yazarsak, x değişkeni artık sembolik nesnedir.

pretty() ve simplify() Komutları

Aynı zamanda yaptığımız işlemlerin sonuçlarının daha anlaşılır ve sade olarak görülmesi için pretty() ve simplify( ) komutlarını kullanabiliriz. pretty( ) komutu, sembolik nesneden oluşan sonucun ekranda daha net olarak görünmesini sağlarken, simplify( ) komutu ise sonucu sadeleştirmek için kullanılır. Bu komutların kullanışlarını denklem çözümünde göstereceğim. Burada son olarak expand( ) ve factor( ) komutlarından bahsedeyim. expand( ) komutu, sembolik nesneden oluşan polinomların kuvvet açılımlarını yapmak içini factor( ) komutu ise kuvvet açılımı yapılmış polinomları eski haline dönüştürmek için kullanılır. Örnek olarak (x+1)9 ifadesinin kuvvet açılımını yapalım.

INPUT:

>>syms x;

>>kuvvet = (x+1)^9

OUTPUT:

kuvvet =
        (x + 1)^9 


INPUT:

>>expand(kuvvet)

OUTPUT:

ans =
      x^9 + 9x^8 + 36x^7 + 84x^6 + 126x^5 + 126x^4 + 84x^3 + 36x^2 + 9x + 1  

 

INPUT:

>>syms x;

>>acilim = x^9 + 9x^8 + 36x^7 + 84x^6 + 126x^5 + 126x^4 + 84x^3 + 36x^2 + 9x + 1

OUTPUT:

acilim =
 
         x^9 + 9x^8 + 36x^7 + 84x^6 + 126x^5 + 126x^4 + 84x^3 + 36x^2 + 9x + 1

INPUT:

>>factor(acilim)

OUTPUT:

ans =
 
      [ x + 1, x + 1, x + 1, x + 1, x + 1, x + 1, x + 1, x + 1, x + 1]

DENKLEM ÇÖZÜMÜ

solve() komutu: Verilen denklem ya da denklemlerin, sembolik nesnelerden yararlanarak köklerini bulan komuttur. Komut solve(BURAYA DENKLEM YAZILIR) şeklinde kullanılır. Öncelikle tek bilinmeyenli denklem örneklerine bakalım. Örnek olarak x2 – 6 x – 3 = sqrt(3 x – 5) denkleminin çözümünü solve komutunu kullanarak bulalım. Bu hesaplama işlemi için aşağıdaki işlemler yapılabilir:

INPUT:

>>syms x;

>>cozum = solve(x^2-6x-3-(3x-5)^(1/2));

>>cozum

OUTPUT:

cozum =
 
        7
>>

 

 

Bir başka örnek için e(x2 + 3 x) – 15 x = 0 denklemini Matlab’de çözelim. Bu ifadeyi Matlab’de aşağıda görüldüğü gibi çözebiliriz:

 

INPUT:

>>syms x;

>>cozum = solve(exp(x^2+3*x)-15);

>>cozum

OUTPUT:

cozum =
       (4log(15) + 9)^(1/2)/2 - 3/2,(4log(15) + 9)^(1/2)/2 - 3/2
>> 
 

İki ya da daha fazla bilinmeyenli denklemlerin çözümlerinde de aynı şekilde solve( ) komutu kullanılabilir. Bunun yanı sıra iki ya da daha fazla bilinmeyenli lineer denklemlerde solve( ) komutu kullanılmadan da çözüm bulmak mümkündür. Örnek olarak:

2x + 4y = 10

3x + 5y = 13 

lineer denklem sisteminin çözümünü bulalım.

Bunun için ilk olarak verilen denklemleri matris biçiminde yazalım. Bunu aşağıdaki gibi yazabiliriz:

[2 4 ; 3 5 ].[x ; y] = [10 ; 13]

Bu ifadede çarpma işlemi yapılırsa yukarıdaki denklem sistemi elde edilir. Eşitliğin iki tarafını soldan [2 4 ; 3 5]-1 ile çarpalım. Böylece,

[x ; y] = [2 4 ; 3 5]-1 . [10 ; 13] eşitliği elde edilir.

Eşitliğin sağ tarafındaki işlem yapıldığında bulmak istediğimiz x ve y değerlerine ulaşırız. Öncelikle Matlab’de eşitliğin sağ tarafında bulunan matrisleri tanımlayalım. Ardından [2 4; 3  5]  matrisinin tersiyle [10 ; 13] sütun vektörünü çarparak x ve y’yi elde edelim. Bu işlemin Matlab çıktısı aşağıdaki gibidir:

INPUT: 

>>A = [2 4;3 5];
>>A_tersi = inv(A)

OUTPUT:

A_tersi =
         -2.5000    2.0000
          1.5000   -1.0000

INPUT:

>>B = [10;13];
>>cozum = A_tersi*B

OUTPUT:

cozum =
              1.0000 2.0000 >>
 

Ancak bu denklem solve( ) komutu ile daha kolay bir şekilde çözülebilir. Aşağıda görüldüğü gibi çözüme ulaşılabiliriz:

INPUT:

>>syms x y;
>>[xc,yc] = solve(2x+4y-10,3x+5y-13)

OUTPUT:

xc =
 
    1

yc =
 
    2
>>
 

Başka bir yazıda Matlab’den bahsetmeye devam edeceğim.  

MTLB8E7953F7I2Q41W

 

Matlab’de Polinom Tanımlama,Toplama,Çarpma ve Bölme İşlemleri

Bu yazıda Matlab’de polinomların nasıl tanımlandığını ve polinomlar üzerindeki işlemlerden bahsedeceğim.

Polinom Tanımlama

Polinom, belirli sayıda bağımsız değişken ve sabit sayıdan oluşan ifadelerdir. Matematik’te karşımıza sıklıkla çıkan polinomların özellikle kökünü bulma, toplama, çarpma, polinom bölmesi, grafik çizdirme gibi işlemlerini Matlab’de gerçekleşleştirebiliriz. Bunları yapabilmek için ilk önce polinomu tanımlamamız gerekir. Farz edelim ki,

P(x) =a x5 + b x4 + c x3 + d x2 + e x + f

gibi bir polinom olsun. Bu polinomu Matlab’de bağımsız değişkenlerin azalan kuvvetlerine göre katsayılarından oluşan satır vektörü ile tanımlayabiliriz. Açıklamak gerekirse, p = [a  b  c  d  e  f] şeklinde tanımlanır. Örnek olarak: P1(x) = a x5 + b x3 +c x2 + f  gibi bir polinom olsun. Fakat bu polinom Matlab’e  p1= [a  b  c  f] diye tanımlarsak, Matlab’ın anlayacağı polinom  a x3 + b x2 +c x + f  polinomu olur. Çünkü Matlab’de azalan kuvvetlerin sırasıyla katsayıları yazılarak polinom tanımlanır. Bu tarz durumlarda olmayan kuvvetlerin katsayısına satır vektöründe 0 (sıfır) yazılmalıdır. Böylece Matlab, o kuvvetin polinom içinde olmadığını anlar. P(x) polinomu doğru bir şekilde tanımlamak için:

   p1= [a   0   b    c   0   f]  yazmalıyız.

Bir polinomu Matlab’e bu şekilde tanımlanır. Şimdi tanımladığımız bir polinomun kökünü nasıl bulacağımıza bakalım. Bunun için roots( ) komutu kullanılmalıdır. Örneğin P(x) =  x2 –  x + 6  polinomuna bakalım. Öncelikle bu polinomu Matlab’a tanımlayalım. p = [1  -1  6] olarak tanımlayabiliz. roots( ) komutu ile bu polinomun kökleri aşağıdaki gibi bulunur.

INPUT:

>> p = [1  -1  6] 

OUTPUT:
    
 p =
     1    -1     6 INPUT: >> roots(p) OUTPUT: ans = 0.5000 + 2.3979i 0.5000 - 2.3979i
 

 

Toplama

P1(x) = 6 x3 + 5 x2 + 10 x + 4 ve P2(x) = 6 x3 + 5 x2 + 10 x + 4 gibi iki polinomu Matlab’de toplamak isteyelim. Bunun için herhangi bir komut kullanmamıza gerek yok. Öncelikle polinomları Matlab’de tanımlayalım. Ardından “ + ” operatörünü kullanarak iki polinomu toplayalım.

INPUT:

>>p1 = [6  5 10 4]

OUTPUT:

p1 =
      6     5    10     4 INPUT: >>p2 = [4 5 6 7] OUTPUT: p2 =     4     5     6     7 INPUT: >> toplama = p1+p2 OUTPUT: toplama =          10    10    16    11 
 

Bu iki polinom toplandığında sonuç olarak P3(x) = 10 x3 + 10 x2 + 16 x + 11 polinomunu elde ederiz. Burada dikkat etmemiz gereken husus ise topladığımız iki ya da daha fazla polinomun boyutlarının eşit olmasıdır.

Çarpma

Matlab’de polinom çarpımı yapmak için conv( ) komutunu kullanabiliriz. conv() komutu katsayılardan oluşan iki satır vektörünü çarparak elde edilen polinomun katsayılarını verir.

Örnek olarak P1(x) = 4 x2 + 2 x + 2 ve P2(x) = 3 x2 + 5 x + 4 polinomlarını Matlab’de çarpalım.

INPUT:

>> p1 = [4 0 2 2]

OUTPUT:

p1 =
     4     0     2     2 INPUT: >> p2 = [3 5 2] OUTPUT: p2 =     3     5     2 INPUT: >> carpma = conv(p1,p2) OUTPUT: carpma = 12 20 14 16 14 4 %Elde edilen polinom %12x5+20x4+14x3+16x2+14x+4
 

 

Bölme

Polinomal bölme yapmak için deconv( ) komutunu kullanabiliriz. Bunun için aşağıdaki komutu kullanılabiliriz:

[bölüm,kalan] = deconv(bölünen,bölen)

Örnek olarak P1(x) = 3 x2 + 4 x + 2 ve P2(x) = 2 x + 1 polinomları olsun. Polinom bölmesi aşağıda görüldüğü gibi yapılabilir:

INPUT:

>> p1 = [3 4 2]

OUTPUT:

p1 =
     3     4     2 INPUT: >> p2 = [2 1] OUTPUT: p2 =     2     1 INPUT: >> [bolum,kalan] = deconv(p1,p2) OUTPUT: bolum =         1.5000    1.2500 kalan =         0         0    0.7500
 

Bir polinomun köklerini hesaplamak için roots( ) komutunu kullanıyorduk. Bunun tersi olarakta kökleri verilen bir polinomun kendisinide bulabiliriz. Bunu yapabilmek için poly( ) komutunu kullanmamız gerekir. Katsayılarını bulmak istediğimiz polinomun köklerini satır vektörü olarak tanımlamalıyız. Bu satır vektörünü poly( ) fonksiyonuna girdiğimizde aradığımız polinomun katsayılarını elde etmiş oluruz. Örnek olarak -1 ve 1 köküne sahip polinomu elde etmeye çalışalım. Bu işlem aşağıdaki gibi olur:

INPUT:

>>kokler = [-1 1]

OUTPUT:

kokler =
         -1     1 INPUT: >>poly(kokler) OUTPUT: ans =      1     0    -1 %bulunan polinom x2 - 1 polinomu olur.
 

Değer Hesaplama

Bir polinomun içerisine bir değer (x=5 gibi) yazarak hesaplamayı biliyoruz. Fakat bu işlemi Matlab’de yapmak için polyval( ) komutunu kullanmamız gerekir. polyval( ) fonksiyonu ile elemanları verilen bir polinomun sonucunu hesaplayabiliriz. Örnek olarak x=2 için P(x) = x3 + 3 x2 + 6 x + 1 polinomunun sonucunu Matlab’de hesaplayalım. Bu hesaplama işlemi için aşağıdaki işlemler yapılabilir:

INPUT:

>> p = [3 6 1]

OUTPUT:

p =
    3     6     1 INPUT: >> polyval(p,2) OUTPUT: ans =      25
 

Bir sonraki yazıda sizlere Matlab’de polinomların türevlerinin hesaplanmasından ve denklem çözümünden bahsedeceğim.

MTLB9965Q9972BE5Z8

 

Matlab’de Matris İşlemleri

Önceki yazıda sizlere Matlab’de vektörün nasıl tanımlandığından ve vektör üzerinde kullanabileceğiniz birkaç komuttan bahsetmiştim. Bu yazıda ise matrisin nasıl tanımlandığından ve matris üzerinde kullanabileceğiniz birkaç komuttan bahsedeceğim.

Matris Tanımlama

Matlab’de matris [a b c; d e f ; g h j] şeklinde tanımlanır. Matrisin satırlarını ayırmak için “(;), Noktalı virgül” kullanılır. Burada örnek olarak 3×3’lük bir matris tanımladım ama siz ihtiyacınız olan boyutta, matrisi yine bu şekilde tanımlayabilirsiniz.

 A = [1 2 3 ; 4 5 6 ; 7 8 9] biçiminde 3×3’lük bir matris tanımlayalım. Matrisin içerisinden herhangi bir elemana A(satır numarası, sütun numarası) şeklinde ulaşılır. Burada ise A matrisinin içerisinden 5 elemanına A(2,2) yazarak ulaşılabilir. Matris içerisindeki birden fazla elemana ulaşmak da mümkündür. Örnek olarak A(2, 2:3) yazarak çıktı olarak 2. satırın 2. ve 3. sütunlarının elemanları olan [5 6] değerlerini elde ederiz.

>> A = [1 2 3; 4 5 6; 7 8 9]

A = 

    1  2  3
    4  5  6
    7  8  9

>> A(2,2)

ans =

     5

>> A(2,2:3)

ans =
 
     5  6
 

Matrislere Sütun ya da Satır Ekleyip-Çıkarma

Tanımlanılan bir matrisi ihtiyaç duyulduğu taktirde sütun ya da satır şeklinde elemanlar ekleyip çıkarabiliriz. A matrisine x sütunu eklenmek isteniyorsa, [A, x] yazılabilir. Eğer ki y satırı eklenmek isteniyorsa [A; y] yazılması yeterlidir. Örnek olsun diye A matrisi tanımlamıştık. Bu A matrisine x = [10; 11; 12] vektörünü eklemek istersek, [A, x] yazarız. Bir başka vektör olan y = [13 14 15] vektörünü eklemek istersek, [A; y] yazarız.

INPUT:
  >>A = [1 2 3; 4 5 6; 7 8 9]  

OUTPUT:
  A =    1  2  3    4  5  6    7  8  9   

INPUT:
  >>x = [10; 11; 12]  

OUTPUT:
  x =    10    11    12  
 
INPUT:
  >>[A, x] 

OUTPUT:
ans =      1   2   3   10      4   5   6   11      7   8   9  12  
 
INPUT:
  >>A = [1 2 3; 4 5 6; 7 8 9] 

OUTPUT:
   A =    1  2  3    4  5  6    7  8  9 

INPUT:
  >>y = [13; 14; 15]

OUTPUT:
   x =    13 14 15 

INPUT:
  >>[A, y] 

OUTPUT:
 ans =      1   2   3      4   5   6      7   8   9 13 14 15  
  

Matrisin içerisinden satır ya da sütun silinmek isteniyorsa, A(satır numarası, : ) =[ ] veya A(:, sütun numarası) = [ ] yazılabilir. Burada dikkat edilmesi gereken detay ise matrisin tek bir elemanın silinememesidir. Bunun sebebi ise boyut uyumsuzluğunun ortaya çıkmasıdır. Ancak burada matrisin bir elemanını değiştirmek mümkündür. Örnek ile göstermek gerekirse, A[3,2] = 5 yazarsak yeni matrisimiz aşağıdaki gibi olur.

INPUT:
  >> A = [1 2 3; 4 5 6; 7 8 9]  

OUTPUT:
   A =    1   2   3    4   5   6    7   8   9  

INPUT: 
  >> A(1, :) =[ ]  %satır silme   

OUTPUT:
   A = 4 5 6  7 8 9

INPUT:
  >> A(:, 1) =[ ] %sütun silme 

OUTPUT:
   A = 5 6 8 9

INPUT:
  >> A(2,2) = 3 %değer değiştirme 

OUTPUT:
   A = 5 6 8 3
 

Matrisi Yeniden Boyutlandırma

Matlab’de matrislerle işlemler gerçekleştirilirken, matrisin boyutu işlemlerimize uygun olmayabilir ya da herhangi bir sorun olmamasına rağmen matrisin boyutunu değiştirip işlem yapmak isteyebilirsiniz. Bu durumda reshape() komutu kullanılır.

Örnek olarak B = [1 2; 2 5 ; 7 6] şeklinde (3×2)’lik bir matris tanımlansın. B matrisini (2×3) boyutuna getirmek için C = reshape(B, [2 , 3]) yazılması yeterlidir.

>> B = [1  2 ;  2  5 ; 7  6]

B =

   1   2
   2   5
   7   6

>> C = reshape (B,[2,3])

C =

   1   7   5
   2   2   6
 

Matrislerde Temel Bazı Kodlar

zeros komutu: zeros(m,n) şeklinde kullanılır. mxn’lik sıfır matrisi oluşturmaya yarar.

>> zeros(3,3)

ans =

     0   0   0
     0   0   0
     0   0   0

ones komutu: ones(m,n) şeklinde kullanılır. mxn’lik birlerden oluşan bir matris verir.

>> ones(3,4)

ans =

     1   1   1   1
     1   1   1   1
     1   1   1   1

eye komutu: eye(m,n) şeklinde kullanılır. mxn’lik birim matris oluşturur.‏‏‏‏‏

>> eye(3,3)

ans =

     1   0   0
     0   1   0
     0   0   1

rand komutu: rand(m,n), mxn’lik elemanları 0-1 arasında olan bir matris oluşturur. Elemanlar rastgele seçilir.

>> rand(4,4)

ans =

     0.8147   0.6324   0.9575   0.9572
     0.9058   0.0975   0.9649   0.4854
     0.1270   0.2785   0.1576   0.8003
     0.9134   0.5469   0.9706   0.1419

diag komutu: diag(A), köşegeni A matrisinin köşelerinden oluşan diagonal bir matris üretir.

>> A = [1 2 3; 4 5 6; 7 8 9]

A =

   1   2   3
   4   5   6
   7   8   9

>> diag(A)

ans =

     1
     5
     9

det komutu: Bir matrisin determinantını hesaplamak için kullanılır.

>> det(A)
%aynı matris için
ans =

     6.6613e-16

rank komutu: Matrisin derecesini(rank) hesaplamak için kullanılır.

>> rank(A)
ans =
     2

find komutu: Sıfır olmayan elemanların indeks numaralarını verir.

>> find(A)

ans =

     1
     2
     3
     4
     5
     6
     7
     8
     9

trace komutu: Matrisin köşe elemanlarının toplamını hesaplar.

>> trace(A)

ans =

     15

Önceki bölümde belirtilen komutlar matrislerde de kullanılabilir. Bu komutların kullanımları yukarıdaki komutların kullanımlarına benzerdir.

Buraya tıklayarak önceki yazı olan Matlab’de dört işlem ve temel fonksiyonlar yazısına gidebilirsiniz.

MTLB9XB739DUJU9147

 

Matlab’de Dört İşlem ve Temel Fonksiyonlar

Önceki yazıda Matlab’de programlamaya giriş yapılmıştı. Bu yazıda ise Matlab içerisinde dört işlem, matematiksel fonksiyonlar ve vektör tanımlama gibi konulardan bahsedeceğim. İyi çalışmalar.

Matlab’de Dört işlem ve Uygulamalar

Her programlama dilinde olduğu gibi Matlab’de de dört işlem yapmak mümkündür. Bunun için işlem yapılacak sayıları ve işlemin operatörünü yazarsak, Matlab işlemin sonucunu hesaplayıp bize çıktı olarak verecektir. Kullanılan matematiksel operatörler :

        (+) = Toplam       (-) =  Çıkarma       (/) =  Bölme        (*) = Çarpma

Burada dikkat edilmesi gereken bir husus da işlem önceliğidir. Matematikte bilinen dört işlem önceliği burada da aynı şekilde geçerlidir. Basitçe örnekleyecek olursak:

Matematiksel Fonksiyonlar

Matlab’de kullanılmak istenen fonksiyonun ismi yazılıp, parantez içerisine parametleri verilerek fonksiyon kullanılabilir.

Trigonometrik Fonksiyonlar

Derece cinsinden Trigonometrik fonksiyonlar aşağıdaki tabloda verildiği gibi kullanılır.

Birkaç trigonometrik fonksiyon örneği:

 

 

Kuvvet Alma Fonksiyonu

Matlab’de bir ifadenin kuvvetini alabilmek için power() komutu kullanılır. Komutun kullanımı power(taban, kuvvet) şeklindedir. power() komutunu kullanmadan  “ ^ ”  sembolünü kullanarak bir ifadenin kuvvetini hesaplanabilir. Örnek olarak:

Üstel Fonksiyonlar

Tabanı euler sayısı olan fonksiyonlar mühendislikte sıklıkla kullanılır. ex fonksiyonunu hesaplamak için, Matlab’de özel bir komut olan exp( ) komutu kullanılır. Örnek olarak :

Karekök Fonksiyonu

Matlab’de karekök hesaplamak için iki yöntem kullanılır. Bunlardan ilki sqrt() fonksiyonunu kullanmaktır. Bu fonksiyon içine yazılacak ifadenin karekökünü hesaplar. İkinci yöntem ise kuvvet almaktır. Burada power() fonksiyonu ya da “ ^ ” sembolü aynı sonucu verecektir.

Örnek olarak:

Logaritmik Fonksiyonlar

Matlab’de hesaplanmak istenen logaritmik ifade e, 2 veya 10 tabanında ise aşağıdaki tabloda yer alan komutları kullanılabilir.

Eğer Matlab’de hesaplanmak istenen logaritmik ifadenin tabanı e, 2 ve 10 ‘dan farklıysa aşağıdaki gibi logaritma hesaplanabilir.

Komutları İç İçe Kullanma

Matlab’de hesaplama yapmak için kullanılan fonksiyonlar iç içe yazılarak kullanılabilir. Bu özellik hesaplamalarda büyük bir kolaylık sağlar. Örnek olarak :

Vektör Tanımlama

Tek boyutlu sayı dizilerine, tek satırdan oluşan ya da tek sütundan oluşan matrislere vektör denir. Matlab’de vektörler kullanılarak işlem yapmak mümkündür. Bunun için ilk önce vektörlerin tanımlanması gerekir.

A = [ 1 5 9 11] şeklinde bir A vektörü tanımlanabilir. Bu bir satır vektörüdür. Çok fazla elemana sahip vektörleri böyle tanımlamak kolay olmaz. Bunun için başka bir vektör tanımlama yöntemi kullanılabilir.

     :     b    :       c

a:  Başlangıç değeri,   b:  Artış,   c: Bitiş değeri

Bu yöntemle başlangıçtan bitişe kadar artış miktarına göre matlab kendisi bir vektör oluşturur. Örnek olarak:

0 : 1 : 10

Böylece çok fazla elemana sahip vektörler kolaylıkla tanımlanabilir.

Temel Komutlar

sort ( ) komutu: Verilen vektörün elemanlarını küçükten büyüğe doğru sıralar.

length ( ) komutu: Verilen vektörün uzunluğunu hesaplar.

linspace ( ) komutu: Girilen iki değer arasında, istenilen üçüncü bir değer kadar, eşit aralıklı bir vektör oluşturur.

sum ( ) komutu: Girilen vektörün elemanlarının toplamını verir.

prod ( ) komutu: Girilen vektörün elemanlarının çarpımını verir.

max ( ) komutu: Girilen vektörün elemanlarının arasından en büyük olanı verir.

min ( ) komutu: max() komutuna benzer olarak girilen vektörün elemanlarının arasında en küçük olanı verir.

mean ( ) komutu:  Girilen vektörün elemanlarının ortalamasını verir.

 

MTLB07677DGLYM3W6N