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

Python’da Fonksiyonlar

“def” İle Tanımlanan Fonksiyonlar

Bu yazıda sizlere Python’da fonksiyonlardan bahsedeceğim. Fonksiyonların kullanımları matematikte bildiğimiz fonksiyonlar gibi olup, bir fonksiyon tanımlandıktan sonra içerisine bir girdi yazarız. Ardından fonksiyon bu girdiye göre bize bir çıktı verir.

Örnek olarak f(x) = 2x + 1 fonksiyonunu düşünürsek, x = 5 için fonksiyon çıktı olarak f(5) = 11 değerini bize verir. Python’da da fonksiyonlar, bir girdi alan (zorunlu değil) ve bu girdiyi bazı işlemlerden geçirip sonucunu bize geri döndüren ifadelerdir. Programımız için kod yazarken bazı kodları tekrar tekrar kullanmak zorunda kalabiliriz. Bu tür durumlada aynı kodu tekrar yazmak yerine kodumuzu bir fonksiyon olarak tanımlayıp, o fonksiyonu çağırabiliriz. Bu bize çok büyük bir kolaylık sağlayacaktır. Python’da fonksiyon tanımlamak için fonksiyon ifadesinin başına ‘def’  ifadesi eklenir. Bu ifade ingilizce ‘definition’ olan tanımlama kelimesidir. Örnek bir fonksiyon tanımlayalım.

Örnek 1

INPUT: 

  def f(x):
    print(2x+1)
  
  f(5)


OUTPUT:

     11

Yukarıdaki örnekte fonksiyonun içerisine girilen parametre için 2x+1 işlemini gerçekleştirip çıktıyı ekrana yazdıran bir fonksiyon tanımladık. Tanımladığımız fonksiyonların ekrana sonuç yazdırmasını istiyorsak print() ya da return gibi ifadeleri kullanmamız gerekir. return ifadesi döndürmek anlamına gelir. Örnek kullanımını gösterelim.

Örnek 2

INPUT:

isim = input("Lütfen bir isim giriniz :  ")
def f(deger):
        karsilamaMesaji = "Merhaba" + " " + deger
        return karsilamaMesaji
f(isim)       

OUTPUT:

Lütfen bir isim giriniz :  Adil
'Merhaba Adil'

Yukarıdaki fonksiyon dışarıdan girilen ismi karşılama mesajına ekleyip sonucu bize döndürecektir. Bir başka örnek:

Örnek 3

INPUT:

isim = input("Lütfen bir isim giriniz : ")
def karsilamaMesaji(yeni_deger):
       if yeni_deger.isnumeric():
           sonuc = yeni_deger + " " + "bir nümerik değerdir." 
           return sonuc
       else:
           print(yeni_deger + " " + "bir nümerik değer değildir.")
karsilamaMesaji(isim)

OUTPUT:

Lütfen bir isim giriniz : Erhan
Erhan bir nümerik değer değildir.  

Fonksiyonlarda kullanılan değişkenler yerel değişkenlerdir. Yani fonksiyon bloğu dışında bu değişkenlere erişilemezdir. Örnek olarak:

Örnek 4

INPUT:

def f():
    y = 5
    return y 
print(y)

OUTPUT:

NameError: name 'y' is not defined

Burada yaptığımız örneklerin dışında fonksiyonlar birden fazla parametre almaları mümkündür. Örnek olarak:

Örnek 5

INPUT:

def f(x,y,z):
    a = 2*(x**2) + 5 
    b = 3*(y**3) + 6
    c = z  + 6
    return a,b,c

f(2,5,7)   

OUTPUT:

(13, 381, 13)

Örnek 2’de dışarıda tanımladığımız x = 5 değişkenini fonksiyon içerisine yazdıktan sonra tekrar çağırdığımızda x’in değeri yine 5 olarak ekrana yansımıştı. Dışarıda tanımladığımız değişkenin fonksiyon içerisindeki değişiminin her yerde geçerli olması için değişkeni fonksiyon içerisinde global olarak tanımlamamız gerekir. Örnek olarak:

Örnek 6

INPUT:

x = 5                            
def f(x):                      
    x += 1                           
    return x                          
f(x),x 

OUTPUT:

(6, 5)      

INPUT:

x = 5
def f1():
    global x
    x += 1  
    return x
f1(),x

OUTPUT:

(6, 6)

Burada yaptığımız örneklerin dışında fonksiyonların birden fazla parametre almaları mümkündür. Örnek olarak:

Örnek 7

INPUT:

def f(x,y,z):
    a = 2*(x**2) + 5 
    b = 3*(y**3) + 6
    c = z  + 6
    return a,b,c

f(2,5,7)  


OUTPUT:

  (13, 381, 13) 

Bunun dışında fonksiyon içinde fonksiyon tanımlamak ve bir fonksiyonun içerisinde başka bir fonksiyonun sonucunu kullanmak mümkündür. Örnek olarak:

Örnek 8

INPUT:


def fonksiyon():
     x = int(input("Lütfen bir sayı giriniz: "))
     a = x/2
     b = x/3
     def fonksiyon1():
        c = a+5
        d = b+5
        return c,d
     return print("a = {}, b = {}, c ve d = {} olarak elde edilir".format(a,b,fonksiyon1()))

fonksiyon()


OUTPUT:

Lütfen bir sayı giriniz: 6
a = 3.0, b = 2.0, c ve d = (8.0, 7.0) olarak elde edilir

Örnek 9

INPUT:

def f(a,b,c): 
   toplam = a+b+c 
   return toplam
def g(a,b,c):
    ortalama = f(a,b,c)/3
    return ortalama    

g(3,5,4)


OUTPUT:

     4.0

Buraya kadar yaptığımız örneklerin dışında birkaç örnek daha yapalım ve ardından lambda fonksiyonundan bahsedelim.

Örnek 10

Vize, final notunun girildiği ve sonuç olarak dersten geçme-kalma durumunun döndürüldüğü bir program yazınız.

INPUT:

def DersDurum(VizeNotu, FinalNotu):
    ortalama = (0.4*VizeNotu) + (FinalNotu*0.6)
    if ortalama >= 50:
       return (ortalama, "Geçtiniz")
    else:
       return (ortalama, "Kaldınız") 
DersDurum(45,50)
(48.0, 'Kaldınız')

OUTPUT:

    (48.0, 'Kaldınız')

Örnek 11

Girilen bir sayının çift olup olmadığını tespit eden bir fonksiyon yazınız.

INPUT:

def f(z):
    if z%2 ==0:
       print("Girilen sayı çiftir.")
    else:
       print("Girilen sayı tektir.")   
f(5),f(8)

OUTPUT:

Girilen sayı tektir.
Girilen sayı çiftir.

Lambda Fonksiyonu

Python’da fonksiyon tanımlamanın bir diğer yolu lambda fonksiyonunu kullanmaktır. def ile tanımlanan fonksiyondan farkı ise adsız olarak tek bir satır ile oluşturulabilen fonksiyonlar olmasıdır. Lambda fonksiyonları, birden fazla parametre alabilirken içerisinde yalnızca tek işlem yapabilirler. Bu fonksiyon, fonksiyon parametreleri döndürmek için kullanılabilir. def fonksiyonuna benzer olarak başka fonksiyonlar içerisinde de kullanılması mümkündür. Lambda fonksiyonunun kullanımı aşağıdaki gibidir:

lambda parametre(ler): işlem

Örnek 12

INPUT:

y = lambda x: x+2
print(y(2))

OUTPUT:

       4

Örnek 13

INPUT:

z = lambda a,b: 2*a + 3*b +5
print(z(5,2))


OUTPUT:

       21

Örnek 14

INPUT:


def islem(a,b,c):
     f = lambda x,y,z : 6*x + 7*y + 8*(z**2)
     sonuc = f(a,b,c) + 100
     return sonuc
islem(3,5,7)


OUTPUT:

    545

Bu yazımızda sizlere Python’da fonksiyonların nasıl kullanıldıkların ve fonksiyon çeşitlerinden bahsettik. Python ile ilgili yeni içeriklerimizi okumak için sitemizi takip etmeyi unutmayınız.

PYTNC59YX0N8ZQ3V49