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
Python ile Dosya İşlemleri

Önceki yazılarda yazdığımız Python kodları, program sonlandığı andan itibaren kaybolur. Program yeniden başlatıldığında daha önceden yazdığımız kodlar eğer kaydedilmemiş ise erişilemezdir. Bilgisayarların temel görevi ve bizlerin istediği verilerimizin depolanmasıdır. Bir veriyi kalıcı olarak depolayabilmek için ya sabit disklerde ya da kalıcı belleklerde saklanması gerekir. Verilerimizi disk üzerlerinde saklamanın en iyi yolu, verileri dosya olarak kaydetmektir.

Dosya Oluşturma

Bu bölümde sizlere Python ile dosyaları nasıl oluşturabileceğimizden ve düzenleyebileceğimizden bahsedeceğim. Bunun için bilgisayarımızda bir metin dosyası oluşturabilir ya da bu işlemi kod ile gerçekleştirebiliriz. open() fonksiyonu bilgisayarda oluşturulan bir dosyayı açmak için ya da dosya oluşturmak için kullanılır. open() fonksiyonunun içerisine, eğer bilgisayarınıza yüklü bir Python IDE’si kullanıyorsanız dosyanın bilgisayardaki konumunu yazmanız yeterlidir. Eğer Jupyter gibi tarayıcıda çalışan IDE’ler kullanıyorsanız, dosyayı kullandığınız IDE ortamına yükleyip dosya yolunu open() fonkiyonuna yazmanız yeterlidir. Eğer adını yazdığınız dosya oluşturulmamış ise open() fonksiyonu dosyayı oluşturacaktır. Bu şekilde dosya Python içerisine aktarılmış olacaktır.

INPUT:
open("/content/drive/MyDrive/Colab Notebooks/İstiklal Marşı.txt")

Dosya Okuma

Python’a yüklediğimiz dosyayı bir değişkene atayıp satır satır okumak için readline() komutunu kullanabiliriz.

INPUT:
file = open("/content/drive/MyDrive/Colab Notebooks/İstiklal Marşı.txt")
file.readline().rstrip()

OUTPUT:
  'Korkma, sönmez bu şafaklarda yüzen al sancak;'

Programı her çalıştırdığımızda diğer satırlar ekrana gelmeye devam eder. Eğer herhangi bir satırda, baştan okuma işlemi yapmak istiyorsak seek(0) fonksiyonunu kullanabiliriz. Eğer seek() fonksiyonun içerisine farklı bir değer yazarsak, o değerin karşılık geldiği karakterden sonrasını okuma işlemi yapar. Örnek olarak:

INPUT:
file.seek(2)
file.readline().rstrip()

OUTPUT:
'rkma, sönmez bu şafaklarda yüzen al sancak;'

Dosya Üzerinde For Döngüsü Oluşturma

Dosya üzerinde for döngüsü oluşturup, bütün satırlara erişmek mümkündür.

INPUT:
file.seek(0)
for i in file:
     print(i)


OUTPUT:

Korkma, sönmez bu şafaklarda yüzen al sancak;

Sönmeden yurdumun üstünde tüten en son ocak.

O benim milletimin yıldızıdır, parlayacak;

O benimdir, o benim milletimindir ancak.

Eğer dosya üzerinde yaptığımız işlemler sona erdiyse close() fonksiyonunu kullanıp, dosyayı kapatabiliriz.

INPUT:
file.close()

readlines() fonksiyonunu kullanıp, tüm dosya içeriğini bir listeye dönüştürebiliriz. Örnek olarak:

INPUT:
file = open("/content/drive/MyDrive/Colab Notebooks/İstiklal Marşı.txt")
file_list = file.readlines()
for i in range(0, len(file_list)):
   file_list[i] = file_list[i].rstrip()
file_list  

OUTPUT:

['Korkma, sönmez bu şafaklarda yüzen al sancak;',
 'Sönmeden yurdumun üstünde tüten en son ocak.',
 'O benim milletimin yıldızıdır, parlayacak;',
 'O benimdir, o benim milletimindir ancak.'] 

Örnek

Üyeler adlı bir dosya oluşturalım ve bu dosya içerisine aşağıdaki bilgileri yazalım.

12345-Ali-10-5

6789-Ayşe-20-7

10112-Mustafa-50-15

12134-Gönül-5-8

Kitap satın alma sitesinde üyelerin bilgilerinin bulunduğu bu dosyayı Python’a aktaralım ve listeye dönüştürelim. Ardından Üye bilgilerini sorguladığımız bir program yazalım.

INPUT:
members = open("/content/drive/MyDrive/Colab Notebooks/Üyeler.txt").readlines()
for member in range(len(members)):
    members[member] = members[member].rstrip()
    members[member] = members[member].split("-")
members



OUTPUT:

[['12345', 'Ali', '10', '5'],
 ['6789', 'Ayşe', '20', '7'],
 ['10112', 'Mustafa', '50', '15'],
 ['12134', 'Gönül', '5', '8']]

Böylece dosyadaki üyeleri listeye atıp düzenlemiş olduk. Üye numarası, para ve kitap adedi gibi değerlerin tiplerini for döngüsü ile integer’a dönüştürebiliriz.

INPUT:
for i in members:
  i[0] = int(i[0])
  i[2] = int(i[2])
  i[3] = int(i[3])
members 


OUTPUT:

[[12345, 'Ali', 10, 5],
 [6789, 'Ayşe', 20, 7],
 [10112, 'Mustafa', 50, 15],
 [12134, 'Gönül', 5, 8]]

Şimdi ise gireceğimiz üye numarası ile üyelik bilgilerini sorgulayalım.

INPUT:
MemberNo = input("Lütfen sorgulamak istediğiniz üye numarasını giriniz : ")
if MemberNo.isnumeric():
   for member in members:
       if int(MemberNo) == member[0]:
          print("Üye numarası {0} olan,\nadlı kişinin hesabından {2} Türk lirası bakiye bulunmaktadır.\nŞu zamana kadar {3} adet kitap satın almıştır.".format(member[0],member[1],member[2],member[3]))
          break;
       else:
         print("Üye numarasına ait kişi bulunamadı.")
else:
  print("HATA! SANIRIM YANLIŞ BİR ŞEY OLDU\nÜye numarası sayılardan oluşmalıdır.")


OUTPUT:

Lütfen sorgulamak istediğiniz üye numarasını giriniz : 12345h
HATA! SANIRIM YANLIŞ BİR ŞEY OLDU
Üye numarası sayılardan oluşmalıdır.

Dosya üzerine yazmaya geçmeden evvel şunu hatırlatmakta fayda var; şu ana kadar yaptıklarımız var olan bir dosya üzerinden, yani daha önceden oluşturup veriler girdiğimiz dosya üzerinden gerçekleşmektedir.

Dosya Üzerine Yazma

Dosya oluşturmak ya da var olan bir dosyayı açmak için open() fonkisyonunu kullanıyorduk. open() fonksiyonun içerisine aşağıdaki tabloda yer alan argümanlardan birini girerek dosyanın ne şekilde açılacağına karar verebiliriz.

ArgümanAçıklama
r Salt okuma
w Yazma
aSonuna ekleme
bİkili kip
tSalt metin
+Dosya güncelleme

Eğer var olan bir dosyayı w argümanı ile açarsak, dosyanın içerisindeki tüm içerikler silinir ve boş bir dosya olarak açılmış olur. Açtığımız dosya içerisine write() fonksiyonu ile satır eklemesi yapabilirsiniz. Dosya üzerinde yaptığınız değişiklikleri kaydetmek için flush() fonksiyonu kullanılabilir. Açılan dosya flush() fonksiyonu ile kaydedilmeden kapatılırsa, otomatik kayıt yapılır. Örnek olması için bir dosya oluşturup içerisine bilgiler yazalım.

INPUT:
customers = open("customers.txt","w")
customers_list = [[1245,"Gizem","Borcu yok"],[6789,"Aslı","Borcu Yok"],[6123,"Kerim","Borcu var"]]
for customer in customers_list:
    for i in customer:
        customers.write(str(i)+"-")
    customers.write("\n")    
customers.close()   

customers = open("customers.txt",”r”)
customers.seek(0)
customers_list1 = customers.readlines()
for i in range(0,len(customers_list1)):
   customers_list1[i] = customers_list1[i].rstrip()
customers_list1 


OUTPUT:

['1245-Gizem-Borcu yok-', 
'6789-Aslı-Borcu Yok-', 
'6123-Kerim-Borcu var-']

Örnekler

Aşağıdaki şekilde bir mat.txt dosyası oluşturalım.

   No      Ad-soyad        mat      fizik      kimya

11      Ayşe Gök         60         50         70

12      Ahmet altun   20         40         50

13      Can Emek        80         60         70

14      Nesrin Ay        90          60         20

a) Yukarıdaki şekilde mat.txt dosyası oluşturulması ve verilerin girilmesini sağlayan bir program yazınız.

INPUT:
#Dosyanın Oluşturulması
open("mat.txt", "w")
#Dosyayı yazmak için açıyoruz ve içerisine veri ekliyoruz.
with open("mat.txt", "a")  as  dosya:
    dosya.write("No      Ad-Soyad       Mat     Fizik   Kimya\n")
    dosya.write("11      Ayşe Gök       60       50      70\n")
    dosya.write("12      Ahmet Altun    20       40      50\n")
    dosya.write("13      Can Emek       80       60      70\n")
    dosya.write("14      Nesrin Ay      90       60      20\n")
dosya.close()  

b) Ekrana sadece Numara ad-soyad ve kimya notunu listeleyen bir program yazınız.

INPUT:
with open("mat.txt")  as  dosya:
  dosya.seek(0) 
  liste = dosya.readlines()
  for x in range(0,5):
      a = liste[x:x+1]  
      print(a[0][0:2],"\t",a[0][8:20],"\t",a[0][39:44])

OUTPUT:

No 	 Ad-Soyad     	 Kimya
11 	 Ayşe Gök     	  70

12 	 Ahmet Altun  	  50

13 	 Can Emek     	  70

14 	 Nesrin Ay    	  20

c) Ekrana her üç dersten 50 nin altında alanları listeleyınız.



INPUT:
with open("mat.txt")  as  dosya:
  dosya.seek(0) 
  liste = dosya.readlines()
  Fizikten_Kalanlar = []
  Matematikten_Kalanlar = []
  Kimyadan_Kalanlar = []
  for x in range(1,5):
      a = liste[x:x+1]
      Mat_Not = int(a[0][23:26]) 
      Kimya_Not = int(a[0][39:44])
      Fizik_Not = int(a[0][30:35])
      if Mat_Not < 50: 
         Matematikten_Kalanlar.append("{} kişisi Matematikten {} alarak bu dersten kalmıştır.".format(a[0][8:20],a[0][23:26].rstrip()))
      if Kimya_Not < 50: 
         Kimyadan_Kalanlar.append("{} kişisi Kimyadan {} alarak bu dersten kalmıştır.".format(a[0][8:20],a[0][39:44].rstrip()))
      if Fizik_Not < 50: 
         Fizikten_Kalanlar.append("{} kişisi Fizikten {} alarak bu dersten kalmıştır.".format(a[0][8:20],a[0][30:35].rstrip()))
  print("Matematikten kalanlar : ",Matematikten_Kalanlar)
  print("Fizikten kalanlar : ",Fizikten_Kalanlar)
  print("Kimyadan_Kalanlar : ",Kimyadan_Kalanlar)


OUTPUT:

Matematikten kalanlar :  ['Ahmet Altun  kişisi Matematikten 20 alarak bu dersten kalmıştır.']
Fizikten kalanlar :  ['Ahmet Altun  kişisi Fizikten   40 alarak bu dersten kalmıştır.']
Kimyadan_Kalanlar :  ['Nesrin Ay    kişisi Kimyadan  20 alarak bu dersten kalmıştır.']

PYTNFEXVD4K26M2510
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
SQL Server İle Veri Tabanı İşlemleri #2

Bu yazıda sizlere SQL’de ilişkili tablolardan, SUM(), AVG(), MIN(), MAX() gibi Aggregate fonksiyonlarından, sütunların takma ad ile çağrılmasından, Between ve Distinct gibi komutlardan bahsedeceğim.

İlişkili Tablolar

İlişkili tabloları daha iyi anlayabilmek için bir personel tablomuzun olduğunu varsayalım. Bu tabloda personellerimizin adı, soyadı, yaşı, maaşı, departmanı, mesleği ve cinsiyeti gibi bilgiler olsun.

USE PersonelBilgileri
CREATE TABLE PersonelTablosu(
   ID INT IDENTITY(1,1) PRIMARY KEY,
   Ad Varchar(30),
   Soyad Varchar(30),
   Cinsiyet Char(1),
   Yas TINYINT,
   Maas DECIMAL(7,2),
   Departman INT,
   Meslek INT
)

Kod Bloğunu Çalıştırdığımızda Oluşan Personel Tablosu

Eğer bu şirketin çalışan sayısı çok fazla ise (örneğin 1000 ya da daha fazla) bu personellerin departmanları ve meslek bilgileri bellekte fazla yer tutmaya başlar. Bu sebeple her personelin departman ve meslek bilgisini yazmak yerine departman bilgilerini ve meslek bilgilerini tutan iki tablo oluşturabiliriz.

USE PersonelBilgileri
CREATE TABLE Departman(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  DepartmanAdi Varchar(30)
)
CREATE TABLE Meslek(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  MeslekDepartmanı INT,
  MeslekAdi Varchar(30)
)

Kod Bloğunu Çalıştırdığımızda Oluşan Departman Tablosu
Kod Bloğunu Çalıştırdığımızda Oluşan Meslek Tablosu

Böylece personelin departmanının adını ve meslek adını yazmak yerine o departman ve meslek bilgisinin ilgili tablolardaki ID’lerini yazabiliriz. Örneğin personelin mesleği Bilgisayar Mühendisliği ise bu bilgiyi yazmak yerine meslekler tablosundan  Bilgisayar mühendisliğinin ID numarasını yazabiliriz. Bu şekilde yaklaşık olarak 19 karakter fazladan bellekte bellekte yer tutmamış olacağız. Yaptığımız bu işlemle meslekler ve departmanlar tablosu ile personel tablosu ilişkili hale gelmiş olur. 3 tip ilişki türü vardır. Bunlar bire-bir ilişki, bire-çok ilişki ve çoka-çok ilişkidir. Bunları bu yazıda detaylı olarak anlatmayacağım. Bizim kullanacağımız genelde bire-çok ilişki türü olacaktır.

Bu tabloların ilişki içerisinde olduğunu SQL’in anlaması için bu ilişkiyi SQL üzerinde tanımlamamız gerekir. Bunun için Object Explorer penceresindeki Database Diagrams klasörüne sağ tıklayıp New Database Diagram’ı seçmemiz gerekir. Karşımıza gelen pencereden hangi tablolar ilişki içerisinde ise seçilmesi gerekir. Burada önemli bir husus daha vardır. Tablolarımızdaki ID sutununu Birincil Anahtar (Primary Key) olarak tanımlamış olmamız gerekir. Primary Key satırların birbirleri ile karışmaması ve ayırt edilebilmesi için kullanılan benzersiz alanlardır. Genellikle ID alanları için kullanılır. Bir sütunu birincil anahtar olarak tanımlamayı tablo yaratırken komut ile belirleyebileceğimiz gibi sonradan da belirleyebiliriz. Örnek olarak:

CREATE TABLE DenemeTablosu(
      ID INT IDENTITY(1,1) PRİMARY KEY,
       ……
)

verilebilir. Bu örnekte ID alanının birincil anahtar olduğunu ve 1’den başlayıp her bir satır için 1’er 1’er artması gerektiğini söyledik.

Eğer tablo üzerinden düzenleme yapabilme iznimiz var ise tablomuzdaki ID sütununa sağ tıklayıp “set primary key” dersek birincil anahtar olarak belirlemiş oluruz.

Bunun dışında Birincil anahtara çok benzeyen benzersiz anahtar (Unique Key) vardır. Birincil anahtardan farklı boş değer(null) alabiliyor olmasıdır.

Birincil anahtar olmayan ve başka bir tablo ile ilişkilendirilebilen alanlara ise Yabancıl Anahtar denir. Örneğin Personel tablosundaki departman ve meslek sütunları yabancıl anahtardır.

İlişkilendirmek istediğimiz tabloları seçtikten sonra hangi tabloların birincil anahtarları hangi tabloların yabancıl sütunu ile ilişkilendirilecekse, birincil anahtar sürüklenip yabancıl anahtarın üzerine bırakılmalıdır.

Tablolarımız Arasındaki İlişkilerin Kurulması

Böylece artık yabancıl anahtardaki değer birincil anahtarın olduğu tablodaki bir veriyi temsil eder. Örneğin personel tablosundaki Adil Kaşıkçı adlı personelin mesleğine 6 yazıldığından, meslekler tablosunda ID numarası 6 olan meslek bu personelin mesleği olur. Meslekler tablosunda ID numarası 6 olan meslek şef olduğundan Adil Kaşıkçı adlı personelin mesleği şef olmuş olur. SQL bunu anlar.

Meslek Tablosu

Departman Tablosu

Personel Tablosu (Tabloda yer alan kişiler hayalidir.)

Ancak biz listeleme yaparken personel tablosunu listelediğimizde bu personellerin departman ve meslek sütunları hala sayı olarak görünür. Eğer bu sütunların meslek ve departman adları ile görünmesini istersek birleştirmeleri kullanmamız gerekir. Bu konudan sonraki yazılarda bahsedeceğim. Şu ana kadar en az iki tablonun nasıl ilişkilendirileceğini gördük. Eğer ilişkide düzenleme ya da değişiklik yapacaksak Database Diagrams klasörünün altındaki ilişki diagramımıza sağ tıklayıp “modify” dememiz yeterli olacaktır. Açılan diagramda istediğiniz düzenlemeyi yapabilirsiniz.

Aggregate Fonksiyonları

Aggregate fonksiyonları bir tabloda kullanılabilecek SUM(), AVG(), COUNT(), MIN() ve MAX() gibi fonksiyonlardır. Bu fonksiyonları kullanarak örneğinm personel tablosunda personel sayısı, ortalama maaş, ortalama yaş ve en genç personel gibi değerler bulunabilir. Aggregate fonksiyonları Select komutu ile birlikte kullanılır. Bu komutlar aşağıdaki gibi özetlenebilir:

SUM()

İstenen sütunlardaki tüm veriyi toplamak için kullanılır. Toplaması yapılan sütunun sayısal değerlerden oluşması gerekir. Örnek kullanımı aşağıdaki gibidir:

SELECT SUM(sütun adı) FROM (tablo adi)

Eğer ihtiyaç duyulursa bu komuta şartta bağlanabilir. Örneğin yaşı 25’ten küçük olanların maaşı nedir? Dersek,

INPUT:
SELECT SUM(Maas) FROM PersonelTablosu WHERE Yas<25

OUTPUT:
5300.00 

sorgusunu kullanılabiliriz.

AVG()

İstenilen sütunlardaki ortalamayı hesaplamak için kullanılan komuttur. Örneğin personel tablosunda ortalama yaşı bulmak istersek,

INPUT:
SELECT AVG(Yas) FROM PersonelTablosu

OUTPUT:
 29

sorgusunu kullanılabiliriz.

COUNT()

İstenen sütunlardaki verileri saymak için kullanılan komuttur. Örneğin personel tablosunda kaç tane veri olduğunu öğrenmek istiyorsak,

INPUT:
SELECT COUNT(*) FROM PersonelTablosu

OUTPUT:
  10

sorgusunu kullanabiliriz. Bir başka örnek olarak personel tablosunda maaşı 3000 TL’den büyük olan personellerin sayısını öğrenmek istersek,

INPUT:
SELECT COUNT(*) FROM PersonelTablosu WHERE Maas>3000

OUTPUT:
  8

sorgusunu kullanabiliriz.

MIN()-MAX()

İlgili sütuna ait en küçük ve en büyük değerleri listelemek için kullanılan komutlardır. Örneğin personel tablosundaki en genç ve en yaşlı personellerin yaşlarını listelemek istersek,

INPUT:
SELECT MIN(Yas) FROM PersonelTablosu

OUTPUT:
  22
INPUT:
SELECT MAX(Yas) FROM PersonelTablosu

OUTPUT:
  36

sorgularını kullanabiliriz.

Bir başka örnek olarak şirketimizde  en az maaş alan kişinin ne kadar maaş aldığını listelemek istersek,

INPUT:
SELECT MIN(Maas) FROM PersonelTablosu

OUTPUT:
  2500.00

sorgusunu kullanabiliriz.

Böylece Aggregate fonksiyonlarından bahsetmiş olduk. Şimdi ise listeleme yaparken listelediğimiz herhangi bir sütunu takma ad ile nasıl listeleyebileceğimizden bahsedelim.

ALIAS İFADESİ

Yukarıdaki örneklerde ortalama yaşı listelemek için bir sorgu komutu kullandık. Bu sorgu çalıştıktan sonra sonuç bize görünür ancak sütun adı “No Column Name” olarak görünür.

Eğer burada listelemek istediğimiz sonuç bir sütun adı ile görünsün istersek Alias ifadesini kullanmamız gerekir. Bu ifade sorguda AS olarak yazılır. Bahsettiğim örneği tekrar yazmak istersek,

INPUT:
SELECT AVG(Yas) AS “Ortalama Yaş” FROM PersonelTablosu

sorgusunu yazabiliriz.

NULL DEĞERLER

SQL’de eğer bir satırın herhangi bir sütununa değer girilmemiş ise o sütun NULL olarak görünür. Listemele yaparken NULL değeri bulunan verileri listelemek mümkündür.

DISTINCT KOMUTU

Bir tablodaki herhangi bir sütunda bulunan benzersiz verileri listelemek için kullanılan komuttur. Örneğin personel tablosunda isimleri benzersiz olanları listeleyelim.

INPUT:
SELECT DISTINCT(Ad) FROM PersonelTablosu

OUTPUT:
  Adil
  Ahmet
  Ayşe
  Betül
  Buse
  Didem
  Ferit
  Gizem
  Mehmet
  Ömer Faruk
BETWEEN OPERATÖRÜ

Bir tablodaki herhangi bir sütun için istediğimiz alt ve üst limitler arasındaki değere sahip verileri listelemek için kullanılan komuttur. Örneğin Personel tablosundaki yaş aralığı 30-35 ve maaş aralığı 2800-4000 TL olan verileri listeleyelim.

INPUT:
SELECT * FROM PersonelTablosu WHERE Yas BETWEEN 30 AND 35 AND Maas BETWEEN 2800 AND 4000

Bunların dışında kısaca aritmetik işlemlerden bahsetmek istiyorum. SQL’de aritmetik işlem yapmak herhangi bir programlama dilinde işlem yapmaya benzerdir. Aritmetik işlemler Select komutu ile kullanılabilir. Yapılmak istenen işleme göre matematiksel operatör kullanılarak aritmetik dört işlem gerçekleştirilir. Birkaç örnek gösterip yazımızı sonlandıralım.

INPUT:
SELECT 4+6 AS "TOPLAM"
SELECT 10*6 AS "ÇARPIM"
SELECT 60/2 AS "BÖLME"
SELECT 30-20 AS "ÇIKARMA"
SELECT (((30-5)+10)/7)*5 AS "DÖRT İŞLEM"

SQL27WU355YJ0IC75Y
SQL Server İle Veri Tabanı İşlemleri #1

Bu yazıda sizlere SQL SERVER’dan bahsedeceğim. Genel olarak yazının içeriğinde veri tabanı oluşturma, veri türleri, tablo oluşturma, DML komutları, DDL komutları gibi konulardan bahsedeceğim.

SQL Nedir?

SQL, veri tabanlarını ve tablolarını saklayan ve üzerinde işlem yapmamızı sağlayan veri tabanı yönetim sistemidir. Bu yazıda sorgular Managment Studio’da yazılacaktır. İsterseniz siz de bu programı kullanabilir ya da MySQL, Oracle, Access, vb. gibi veri tabanı yönetim sistemlerini kullanabilirsiniz. Veri tabanı kullanmanın başlıca faydaları aşağıdaki gibi özetlenebilir:

  • Veri tekrarının önüne geçer.
  • Veriye erişimi kolaylaştırır.
  • Veriler üzerinde işlem yapma olanağı sağlar.
  • Veri bütünlüğünü sağlar.
  • İstenen veriyi aramak sorgular ile çok hızlı gerçekleşebilir.

Veri Tabanı Oluşturma

Veri tabanı oluşturmak için hem Nesne gezgini (Object Explorer) kısmını hem de sorguları kullanabiliriz. Nesne gezgini penceresinden Database‘e sağ tıklayıp New Database’e tıklayarak karşımıza gelen pencereden veri tabanı bilgilerini girip istediğimiz veri tabanını oluşturabiliriz. Bunun dışında sorgu komutunu kullanarak da veri tabanı oluşturulabilir.

Tablo Oluşturma

Veri tabanı tablolardan, tablolar ise sütun ve satırdan oluşmaktadır. Verilerimiz veri tabanlarında sütun ve satırlarda saklanır. Tablo oluşturmanın iki yöntemi vardır. Bunlardan ilki Managment Studio ekranında sol kısımda yer alan Nesne gezgini (Object Explorer)penceresinde Databases  > Oluşturduğumuz veri tabanı > Tables (Sağ tık) > New > New table yolunu izlemektedir. Böylece daha önceden oluşturmuş olduğumuz veri  tabanı üzerinde bir tablo oluşturmuş oluruz. New table dedikten sonra karşımıza 3 sütunlu bir pencere açılacaktır. İlk sütun Column Name ismindedir. Buraya sütun ismi girilmelidir. Ardından ikinci sütun veri türü sütunudur. Buraya da oluşturduğumuz sütunun veri tipi girilmelidir. Son olarak bu sütunun boş değer alıp alamayacağını Allow Null kısmı ile belirledikten sonra tablomuzu oluşturmuş oluruz. Bunun dışında yine sorgu komutları ile sütun adlarını ve veri türlerini kullanarak tablo oluşturabiliriz.

Veri Tipleri

Bit

True ya da false şeklinde değer alan mantıksal veri tipidir.

Char (Değer)

Karakter, sembol, sayı ve metin gibi değerler alan veri tipidir. İçerisine yazılan sayı değeri kadar bellekte yer açar. Eğer girilen değerin karakter uzunluğu char içerisine yazılan değerden daha küçükse kalan kısımlara boşluk atanır.

Date

Yıl – ay – gün şeklinde tarih bilgisi tutan veri türüdür.

Datetime

Yıl –  ay – gün saat : dakika : saniye : milisaniye şeklinde tarih bilgisi tutan veri türüdür.

Float

Ondalık değerleri tutan veri türüdür.

Decimal (a,b)

Float’a göre hassas ondalık değerleri tutmak için kullanılan veri türüdür. İçerisine iki değer alır. Bunlardan a, girilen sayının toplam uzunluğu, b ise virgülden sonraki kısmın uzunluğunu ifade eder.

Int

-2.14.4783.648 ile + 2.14.4783.647 arasındaki tam sayı değerlerini tutan veri türüdür.

Money

Parasal türdeki verileri tutmak için kullanılan veri türüdür.

SQL Variant

Girilen değerin veri türünün belli olmadığı durumlarda kullanılan veri türüdür.

Smallint-Tinyint

Daha küçük aralıktaki tam sayı değerlerini tutmak için kullanılan veri türleridir. Smallint -32.768 ile +32.767 aralığındaki değerleri tutarken, Tinyint 0 ile 255 arasındaki sayıları tutmak için kullanılır.

Varchar (değer)

Char türüne benzer olarak karakter, sembol, sayı ve metin gibi değerleri tutmak için kullanılır. Char türündeki farkı içerisine girilen değerin uzunluğu kadar bellekte yer açar.

Uniqueidentifier

Benzersiz 16 byte boyutunda olan oluşturan veri türüdür. Her satırın ID numarası bu veri türünden oluşur.

Bunların dışından eğer veri türünün başında N ifadesi var ise o veri türü Latin alfabesi dışındaki karakterleri tutabilir anlamına gelir. Örneğin Nvarchar( ) gibi

DDL Komutları Nedir?

Data Definition Language (Veri tanımlama dili) kısaca DDL komutları, SQL’de veri tabanı oluşturmaya ve silmeye, tablo oluşturmaya, güncellemeye ve silmeye imkan sağlayan komutlardır. Bunların dışında da DDL komutlarını kullanmak mümkündür. Ancak bu konudan şimdi bahsedilmeyecek.  3 temel DDL komutu vardır. Bunlar aşağıdaki gibi özetlenebilir:

Create Komutu

Veri tabanı  ya da tablo oluşturmak için kullanılan komuttur. Veri tabanı oluşturmak için CREATE DATABASE (veri tabanı adı) şeklinde kullanmak mümkündür.

Tablo oluşturmak için  CREATE TABLE (tablo adı) (sütun1 veri türü, sütun2 veri türü, sütun3 veri türü, …) komutunu kullanmak mümkündür.

Drop Komutu

Veri tabanı, sütün ya da tablo silmek için kullanılan komuttur. Veri tabanı silmek için DROP DATABASE (veri tabanı ismi) komutu kullanılabilir. Tablo silmek için DROP TABLE (tablo ismi) komutu kullanılabilir. Sütun silmek için ise ALTER TABLE (tablo ismi) DROP COLUMN (sütun adı) komutu kullanılabilir. Sütun silme kısmı son DDL komutu olan ALTER komutunun anlatımından sonra daha anlaşılır olacaktır.

Alter Komutu

Bu komut ile tablo üzerinde güncellemeler yapmak mümkündür. Örneğin tablodaki sütunun veri türünü değiştirebiliriz. Bunun dışında da bu komut ile sütun silinebilir ya da eklenebilir. Tablo üzerinde yapılacak işleme göre kullanım şekli değişir. Örneğin sütunun veri türünü değiştirmek için kullanım şekli aşağıdaki gibidir:

ALTER TABLE (tablo ismi) ALTER COLUMN (sütun adı) (yeni veri türü).

Sütun eklemek için ise aşağıdaki komut kullanılabilir:

ALTER TABLE (tablo ismi) ADD COLUMN (sütun adı) (veri türü).

Bu komutları kullanırken şunu belirtmekte fayda var; DDL komutları verilere müdehale etmemize olanak sağlamaz. Bu tür işlemler DML komutlar ile gerçekleştirilir. DDL komutları ile daha çok veri tabanı ve tablolara müdehale etmek mümkündür.

DML Komutları

Data Managment Language (Veri manipülasyon dili) kısaca DML komutları, SQL’de tabloya veri eklemek, tablodaki veriyi silmek ve tablodaki verileri güncellemek için kullanılan komutlardır. Bunun dışında istenen herhangi bir şarta bağlı olarak ya da bağlı olmadan verileri listemek için kullanılabilir. 4 tane DML komutu vardır. Bunlar aşağıdaki gibi özetlenebilir:

SELECT KOMUTU

Herhangi bir şarta bağlı olarak ya da bağlı olmadan verileri seçip listelemek için kullanılan komuttur. Kullanımı aşağıdaki gibi olabilir:

SELECT (sütun adları) FROM (tablo adı).

Bu şekilde kullanılır ise herhangi bir şart olmadan listeleme yapılır. Böylece listelenen sütunlardaki tüm veriler gelir. Eğer SELECT * FROM (tablo adi) şeklinde kullanılırsa tüm sütunlardaki tüm veriler herhangi bir şart olmadan listelenir.

Herhangi bir şarta ya da şartlara göre verileri listelemek istersek, WHERE  komutunu sorguya eklememiz gerekir. Birden fazla şart eklemek istenirse and ve or gibi operatörler kullanılabilir. Örnek kullanımı aşağıdaki gibidir:

SELECT * FROM (tablo adi) WHERE şart1 and şart2.

Bunun dışında SELECT komutu ile beraber kullanılabilecek LİKE, NOT LİKE, IN ve NOT IN  gibi işleçlerde vardır. Bunlar sırasıyla aşağıdaki gibi açıklanabilir.

LIKE İŞLECİ

Listeleme yaparken WHERE komutundan sonra yazılır. İlgili sütunda, yazılan karakter ya da kelimeleri içeren verileri çekmek için kullanılır. Örnek kullanım şekli aşağıdaki gibidir:

SELECT (sütun adları) FROM (tablo adı) WHERE (sütun adı) LİKE (‘%aranmak istenen değer%’).

Aramak istediğimiz karakteri ‘%(aranmak istenen değer)’ arasına yazarsak arama işlemi son harfe göre yapılırken, ‘(aranmak istenen değer)%’ içerisine yazarsak arama işlemini baş harfe göre yapar.

NOT LİKE işleci ise LIKE işlecinin tam tersini gerçekleştirmektedir. Yazdığımız karakter ya da kelimeyi içermeyen verileri karşımıza listeler. Kullanımı LIKE işleci ile aynıdır.

IN İŞLECİ

Listeleme yaparken kullanılan bu işleç WHERE komutundan sonra yazılmaktadır. IN işleci, içerisine yazdığımız parametreleri barından satırların listelenmesini sağlar. Birden fazla or işleci kullanılmasının önüne geçer. Örnek kullanımı aşağıdaki gibidir:

SELECT (sütun adları) FROM (tablo ismi) WHERE (sütun adı) IN(‘değer1’,’değer2’,…).

NOT IN işleci ise IN işlecinin tam tersi olarak içerisine girilen parametreleri barındırmayan satırları listeler. Kullanımı IN komutuna benzerdir.

INSERT KOMUTU

Tablolarımıza yeni veri eklemek için kullanılan komuttur. Kullanımı aşağıdaki gibidir:

INSERT INTO (tablo adi) (sütun1,sütun2,…) VALUES (değer1,değer2,…).

Burada dikkat edilmesi gereken husus; veriler sütunlara sırasıyla yazılır. Yani sütun1’e değer1, sütun2’ye değer2,… şeklinde tabloya veri eklenir.

DELETE KOMUTU

Tablodan veri silmek için kullanılan komuttur. Silme işlemini sütuna göre değil satıra göre yapar. Silme işlemi yaptığımız satırın tüm sütunlarına ait verileri tablodan çıkarır. Şarta bağlı olarak silme yapılmalıdır yoksa tablonun diğer satırlarındaki verilerden silinir. Kullanım şekli  aşağıdaki gibidir:

DELETE FROM (tablo adi) WHERE şart1.

UPDATE KOMUTU

Tablodaki verilerimizi güncellemek için kullanılır. Kullanılırken şarta bağlı olarak kullanılmalıdır yoksa diğer satırlarda bu güncelleme işleminden etkilenir. Kullanımı aşağıdaki gibidir:

UPTADE (tablo adi) SET (sütun1 = değer1, sütun2 = değer2,…) WHERE şart1

Buraya kadar yaptıklarımızda SQL SERVER’de veri tabanı ve tablo oluşturma, veri türleri, DDL komutları ve DML komutları gibi temel konularda bilgi sahibi olduk. Bir sonraki yazıda SQL’de veri tabanı işlemlerini devam edeceğiz.

SQL5VQ3P6Y10ZRQ42A
Python’da Dizeler ve Dize Fonksiyonları

Dize, bir karakter setidir. Bilgisayarlar karakterleri 0’ların ve 1’lerin bir kombinasyonu olarak saklayıp işlerler. Karakterlerin bu şekilde ikili sayılara dönüştürülmesine kodlama denir. ASCII ve Unicode, popüler kodlamalardan bazılarıdır. Klavyeden bir karakter girildiğinde bilgisayarın anladığı o karakterin ASCII (ya da Unicode) tablosundaki 0 ve 1’lerden oluşan kombinasyonudur. Daha önceki yazılarda da bahsedildiği gibi çift tırnak (“ ”) ya da tek tırnak (‘ ’) arasına karakterler yazılarak string (dize) tanımlanabilir. Bu string değişkenin içerisindeki her bir karaktere indeks numarası kullanılarak erişilebileceğini daha önceki yazılarda bahsetmiştim. Örnek olması için bu yazıda da bir değişken tanımlayıp, indeks numarasını yazdığımız bir karaktere erişelim.

Örnekler

INPUT:
  isim = "Mehmet" 
  isim[2]

OUTPUT:
   'h'

Bu yazıda sizlere bahsetmek istediğim bu string ifadeler üzerinde kullanabileceğimiz fonksiyonlardır. Bunlardan ilki len() fonksiyonudur. Bu fonksiyon dizenin uzunluğunu verir.

INPUT:
  sehir = "istanbul"
  len(sehir)

OUTPUT:
  8

in ve not in operatörlerini kullanarak, bir dize içerisindeki herhangi bir karakterin varlığını sorgulayabiliriz. in operatörü, karakter dize içerisindeyse True, değilse False sonucunu döndürür. Tam tersi olarak, not in operatörü, karakter dize içerisinde değilse True sonucunu, içindeyse False sonucunu döndürür.

INPUT:
  ulke = "Türkiye"  
  k in ulke
 
OUTPUT:
  True
INPUT:
  ulke = "Türkiye"  
  y not in ulke

OUTPUT:
  False

Diğer yandan, satır sonu karakterini (\n) kullanarak satırın sonlandığını belirtebilirsiniz. Böylece aynı dize içerisine yazılan ikinci cümle, bir satır aşağı alınarak çıktı olarak gösterilir. Örnek olarak:

INPUT:
  print("Bugün hava yağmurluydu.\nAncak yarın güneşli olabilir.")

OUTPUT:
   Bugün hava yağmurluydu. 
   Ancak yarın güneşli olabilir.

Sekme karakterini (\t) kullanırsak, dize içerisindeki kelimeler arasından belirgin bir boşluk bırakılır. Bu cümlelerin daha düzgün görünmesi için kullanılabilir. Örnek olarak:

INPUT:
  aday_listesi = [["Gökhan","İstanbul",3.42],["Aslı","Balıkesir",1.96], 
  ["Canan","Ankara",2.97],["Gizem","Tokat",1.96]]
  print("Aday","\t","Şehir","\t","\t","Ort.")
  for aday in aday_listesi:
      print(aday[0],"\t",aday[1],"\t",aday[2])

OUTPUT:
  Aday     Şehir       Ort. 
  Gökhan   İstanbul    3.42
  Aslı     Balıkesir   1.96
  Canan    Ankara      2.97
  Gizem    Erzurum     1.96

Cümle içerisinde, bir değişkene ait değeri kullanabilmek için format() fonksiyonunu kullanabiliriz. Bu fonksiyonu kullanmadan da değişkenin değerini cümle içerisine yazdırabiliriz. Ancak bu her veri tipi için farklı bir karakter kullanılmasını gerektirecektir. Burada yazılanları örnek ile gösterelim.

INPUT:
  gün1 = 26
  gün2 = "salı"
  print("Bugün ayın {0}’sı  ve günlerden {1}’dır.".format(gün1,gün2))
  print("---------------------------------------")
  macSaati = "23.00"
  print("Şampiyonlar ligi maçı %s’de başlar."%macSaati)
  print("---------------------------------------")
  piSayisi = 3.14
  print("pi sayını %f alınız."%piSayisi)
  print("---------------------------------------")
  KacTL = 200
  print("Yunus Emre’nin resmi %d TL’nin arka yüzünde vardır."%KacTL)
  print("---------------------------------------")
  print("Bugün kredi faizleri %s%f azaldı."%("%",1.5)) 
  print("---------------------------------------")
OUTPUT:
   Bugün ayın 26’sı ve günlerden salı’dır.
   ---------------------------------------
   Şampiyonlar ligi maçı 23.00’de başlar.
   ---------------------------------------
   pi sayını 3.140000 alınız.
   ---------------------------------------
   Yunus Emre’nin resmi 200 TL’nin arka yüzünde vardır.
   ---------------------------------------
   Bugün kredi faizleri %1.500000 azaldı.
   ---------------------------------------

upper() ve lower Fonksiyonu

Bir dizedeki tüm karakterleri büyük harfe ya da  küçük harfe dönüştürmek için kullanılan fonksiyonlardır. Örnek olarak:

INPUT:
  sehir1 = "Adıyaman"
  sehir1.upper() 

OUTPUT:
  'ADIYAMAN'
INPUT:
  sehir1 = "Adıyaman"
  sehir1.lower() 

OUTPUT:
   'adıyaman'

find() Fonksiyonu

Bir kelimenin cümle içerisinde olup olmadığını kontrol edebilmek için kullanılan fonksiyondur. find() fonskiyonunun avantajı aradığımız kelimelerin hangi konumda başladığını bize söylemesidir. Yukarıda da bahsettiğim gibi in operatörü kullanarak kelimenin ya da karakterin cümle içerisinde olup olmadığını sorgulayabilirdik. Ancak, in operatörü bize aranan kelimenin ya da karakterin konumunu vermez. Örnek olarak:

INPUT:
  sentence = "En sevdiğim gün Cuma’dır."
  sentence.find("Cuma") 

OUTPUT:
  16

Aradığımız kelime ya da karakter cümle içerisinde yok ise -1 değerini sonuç olarak döndürür.

Eğer bir kelimenin herhangi bir alt kelime ya da karakter ile başlayıp başlamadığını ya da bitip bitmediğini sorgulamak istersek startswith()  ve endswith() fonksiyonlarını kullanabiliriz. startswith(), kelimenin aradığımız alt kelime ya da karakter ile başlayıp başlamadığını kontrol ederken, endswith() ise bitip bitmediğini kontrol eder. True ya da False değerlerini döndürür.

INPUT:
  sentence.startswith("Benim") 

OUTPUT:
  False
INPUT:
  sentence.endswith("r.")

OUTPUT:
  True

split() Fonksiyonu

Cümleyi belirli bir karakter ya da kelimeye göre parçalamak için kullanılan fonksiyondur. Cümleyi parçalayıp bir liste olarak bize geri verir. Örnek olarak:

INPUT: 
  sentence = "Gizemli, bir sıfattır"
  sentence.split(" ")

OUTPUT:
  ['Gizemli', 'bir', 'sıfattır'] 

join() Fonksiyonu

split() fonksiyonu ile parçalara ayrılan ya da liste halinde verilen kelimeleri ya da karakterleri bir karakter ya da alt cümle kullanarak birleştirmek için kullanılan fonksiyondur. Örnek olarak:

INPUT:
  sentence1 = "Haritanın fiziki şartları gereği 25derece görünmektedir."
  words = sentence1.split(" ") 
  print("Ayrılmış hali :",words)
  bosluk = " "
  print("Birleştirilmiş hali : ", bosluk.join(words)) 

OUTPUT:
   Ayrılmış hali : ['Haritanın', 'fiziki', 'şartları', 'gereği', '25', 'derece', 'görünmektedir.']
   Birleştirilmiş hali :  Haritanın fiziki şartları gereği 25 derece görünmektedir.      

replace() Fonksiyonu

Cümle içerisindeki bir karakteri ya da kelimeyi istenilen karakter veya kelime ile değiştirmek için kullanılan fonksiyondur. Örnek olarak:

INPUT:
  cumle = "Bu-bir-python-yazısıdır"  
  cumle.replace("-",".")

OUTPUT:
  'Bu.bir.python.yazısıdır' 

strip() Fonksiyonu

Kullanıcı tarafından girilen ya da metin dosyalarından alınan cümlelerin başında veya sonundaki boşlukları atmak için kullanılır. Eğer cümlelerin sadece başındaki boşluklar atılmak isteniyorsa .rstrip() fonksiyonu, eğer sadece cümle sonundaki boşluklar atılmak isteniyorsa .lstrip() fonksiyonu kullanılabilir. Örnek olarak:

INPUT:
  x = "  Bu cümlenin başında ve sonunda boşluklar vardır.  "
  x.strip()

OUTPUT:
  'Bu cümlenin başında ve sonunda boşluklar vardır.'  

isnumeric() Fonksiyonu

Kullanıcı tarafından girilen cümlelerin sayı değerlerinden oluşup oluşmadığını kontrol etmek için kullanılan fonksiyondur. Eğer cümle sayılardan oluşuyorsa True, oluşmuyorsa False değerini döndürür. Örnek olarak:

INPUT:
  sayi = "1102" 
  sayi.isnumeric( )

OUTPUT:
   True
INPUT:
  uyeler = [["12345","Ali","10","5"],["67890","Gizem","20","7"],["10112","Mustafa","50","15"],["12134","Aslı","5","8"]]
  uyeNo = input("Lütfen üye numarasını giriniz : ")
  if uyeNo.isnumeric():
      for deger in uyeler:
          if deger[0] == uyeNo:
             print("Üye numarası {0} olan, {1} adlı kişinin hesabında {2} TL bakiye bulunmaktadır. Şu zamana kadar {3} adet kitap satın
             almıştır.".format(deger[0],deger[1],deger[2],deger[3]))
             break;
      else:
           print("Bu üye numarasına ait kişi bulunmamıştır.")
  else:
       print("Üye Numarası sayılardan oluşmalıdır.") 

OUTPUT:
   Lütfen üye numarasını giriniz : 12345
   Üye numarası 12345 olan, Ali adlı kişinin hesabında 10 TL bakiye bulunmaktadır. Şu zamana kadar 5 adet kitap satın almıştır.                                    

PYTNVK3L0T72C14L2U

Python’da Listeler

Liste Oluşturma

Bir değişkende birçok öğeyi saklamak için kullanılan yapılara liste denir. Listelere ait öğeler [ ] (köşeli parantez) içerisine yazılırlar. Eğer yazılacak öğe string ise ” ” (tırnak işareti) arasına yazılır. Öğeleri birbirinden ayırmak için virgül kullanılır. Basit bir liste aşağıdaki gibi tanımlanabilir:

names = [“Ahmet”, “Mehmet” , “Ali”, “Ayşe”]

Listenin içerisindeki öğelere erişmek mümkündür. Bunun için her bir öğenin indeks numarasının kullanması gerekir. İndeks numarası 0’dan başlayarak öğe sayısı kadar aritmetik olarak devam eder. Listeler tamsayı, dize ve nesne gibi veri türlerinden oluşabilirler. Aynı zamanda listeler sıralı ve değiştirilebilirlerdir.

example_list = [1,2,3,”Adnan”, [1,2,3]]

example_list[2] yazarsak 2 indeks numarasına sahip öğe çıktı olarak gözükür. Bu da 3 öğesidir. Python’da listelerin içerisindeki öğelere negatif indisler kullanılarakta erişilebilir. Örnek olarak example_list[-1] yazılırsa, en son öğe olan [1,2,3] öğesine erişilir.

Listeye Öğe Ekleme

Listeye öğe eklenildiğinde, eklenilen öğe listenin sonuna yazılır. Eğer listeye öğe eklemek istenilirse  .append() fonksiyonu kullanılabilir.

INPUT:

example_list = [1,2,3,"Adnan", [1,2,3]]
example_list.append(4)
example_list

OUTPUT:

[1, 2, 3, 'Adnan', [1, 2, 3], 4]

 

Yukarıdaki kod bloğunda yapılan işlemle listeye 4 elemanı eklendi. Listeler içerisindeki öğelerin değiştirilebileceği söylenmişti. Bu değişikliği yapmak için değiştirilmek istenen öğenin indeks numarasının kullanılması gerekir. Örnek olarak 1 öğesinin yerine 0 yazılsın.

INPUT:

example_list[0] = 0
example_list

OUTPUT:

[0, 2, 3, 'Adnan', [1, 2, 3], 4]

 

Liste Uzunluğunu Bulma

Listenin içerisindeki eleman sayısı listenin uzunluğunu verir. Listenin içerisindeki eleman sayısını bulmak için len() fonksiyonu kullanılır.

INPUT:

len(example_list)

OUTPUT:

6
 

.append() ile eklenilecek öğe listenin sonuna eklenir. Eklenilen öğenin konumunu kendiniz belirlemek istiyorsanız insert() fonksiyonunu kullanabilirsiniz. Bu fonksiyon insert(konum,değer) şeklinde kullanılır.

INPUT:

example_list.insert(0, "pi404")
example_list 

OUTPUT:

['pi404', 0, 2, 3, 'Adnan', [1, 2, 3], 4]

 

Bu iki ekleme fonksiyonun yanı sıra extend() fonksiyonu da listeye öğe eklemek için kullanılabilir. Bu fonksiyonun diğerlerinden farkı ise birden çok öğeyi listeye ekleyebiliyor olmasıdır.

INPUT:

example_list.extend([7,8,9])
example_list

OUTPUT:

['pi404', 0, 2, 3, 'Adnan', [1, 2, 3], 4, 7, 8, 9]

 
 

Listeden Öğe Çıkarma

Burada kadar gösterilenler listeye öğe eklemek için kullanılan fonksiyonlardı. Şimdi ise bir listeden öğe çıkarmak için kullanılan fonksiyonlardan bahsedelim. remove() fonksiyonu içerisine yazılan tek bir öğeyi listeden kaldırır.

INPUT:

example_list.remove(7)
example_list

OUTPUT:

['pi404', 0, 2, 3, 'Adnan', [1, 2, 3], 4, 8, 9]
 

Eğer listeden aynı öğeden birden fazla var ise ve bu öğe üzerinde remove() fonksiyonu kullanılırsa, indeks numarası önce olan öğe silinir. Aynı olan diğer öğeler ise listede durmaya devam eder.

INPUT:

example_list2 = [1,2,3,4,2]
example_list2.remove(2)
example_list2

OUTPUT:

[1, 3, 4, 2]

 

Bu fonksiyona benzer olarak pop() ve del fonksiyonlarıda kullanılabilir. pop() fonksiyonu kaldırılmak istenen öğenin  indeks numarası kullanılmalıdır. Örnek olarak

INPUT:

example_list.pop(2)
del   example_list[3]
example_list

OUTPUT:

['pi404', 0, 3, [1, 2, 3], 4, 8, 9]
 

Listenin içerisindeki tüm öğeleri silmek için clear() metodu kullanılabilir.

INPUT:

example_list2.clear()
example_list2

OUTPUT:

[]
 

Listelerde Kullanılan Başlıca Fonksiyonlar

index() Fonksiyonu

index() fonksiyonu liste içerisindeki bir öğrenin indeks numarasını öğrenmek için kullanılır. Örnek olarak,

INPUT:

example_list.index([1,2,3])

OUTPUT:

3
 
count() Fonksiyonu

Liste içerisindeki bir öğeden kaç adet olduğunu öğrenmek için count() fonksiyonu kullanılabilir.

INPUT:

example_list3 = ["a","a","a","a","a","a","b","c","d"]
example_list3.count("a")

OUTPUT:

6
 
sort() Fonksiyonu

Liste içerisindeki öğeleri küçükten büyüğe doğru sıralamak için sort() fonksiyonu kullanılabilir.

INPUT:

example_list4 = [5,8,14,7,6,9]
example_list4.sort()
example_list4

OUTPUT:

[5, 6, 7, 8, 9, 14]
 

Burada liste içerisindeki öğelerin hepsi ya dizelerden ya da sayılardan oluşmalıdır. Eğer dize ve sayılar birlikte olduğu bir listede sort() fonksiyonu kullanılırsa hata alınır.

INPUT:

example_list5 = ["Ali", 5]
example_list5.sort()
example_list5

OUTPUT:

----------------------------------------------------------------
TypeError         Traceback (most recent call last) 
<ipython-input-39-e362aaef30e4> in <module>()       
1 example_list5 = ["Ali", 5] 
----> 2 example_list5.sort()      
 3 example_list5 

TypeError: '<' not supported between instances of 'int' and 'str'
 
reverse() Fonksiyonu

Listenin içerisindeki öğeleri tersten yazmak için reverse() fonksiyonu kullanılabilir.

INPUT:

example_list3.reverse()
example_list3

OUTPUT:

['d', 'c', 'b', 'a', 'a', 'a', 'a', 'a', 'a']

 
copy() Fonksiyonu

Oluşturulan bir listenin kopyasını oluşturmak için copy() fonksiyonu kullanılır. Örnek olarak

INPUT:

copyList3 = example_list3.copy()
copyList3

OUTPUT:

['d', 'c', 'b', 'a', 'a', 'a', 'a', 'a', 'a']
 

Liste Oluşturmak için Alternatif Yöntemler

Liste oluşturmak için farklı birkaç yöntem daha kullanılabilir. Örneğin list() fonksiyonu kullanılarak, içerisine yazılan öğelerden bir liste oluşturulabilir.

INPUT:

new_list = list(("pencil","eraser","book", 5))
new_list

OUTPUT:

['pencil', 'eraser', 'book', 5]
 

Bu yöntemin dışında range kullanılarakta liste tanımlamak mümkündür. Örnek olarak:

INPUT:

NewList = [2*x+1 for x in range(10)]
NewList

OUTPUT:

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
 

Liste Dilimleme

Bu bölümde son olarak listelerin dilimlenmesinden ve üyelik testinden bahsedelim. Bir listeyi dilimlemek için a[m:n] ifadesi kullanılabilir. Burada m, dilimlenmeye hangi elemandan başlanılmak isteniyorsa, o elemanın indeks numarasını ifade ederken, n ise dilimlenmenin hangi elemanda son bulması isteniyorsa, o elemanın indeks numarasını ifade eder.

INPUT:

example_list6 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
mini_list = example_list6[0:6]
mini_list

OUTPUT:

[0, 1, 2, 3, 4, 5]
 

a[m:n] ifadesini kullanarak liste içindeki elemanlardan yeni bir liste oluşturulabilir. Bu durum bir kümenin, alt kümesi gibi düşünülebilir. Ancak burada dikkat edilmesi gereken husus dilimleme ile oluşturulan yeni listenin içerisinde indeks numarası m olan değer bulunurken, indeks numarası n olan değer bulunmaz. Liste oluşturmanın yanı sıra dilimleme ile listenin birden fazla elemanına ulaşılabilir ve bu elemanlar üzerinde çeşitli işlemler yapabilir.

INPUT:

ListOfEvenNumbers = [ ]  
ListOfOddNumbers = [ ]              
for number in example_list6:      
       if number%2 ==0:
          ListOfEvenNumbers.append(number)
       else:
           ListOfOddNumbers.append(number)  
print("0-15 arasındaki çift sayılar kümesi = {}".format(ListOfEvenNumbers))
print("0-15 arasındaki tek sayılar kümesi = {}".format(ListOfOddNumbers))

OUTPUT:

0-15 arasındaki çift sayılar kümesi = [0, 2, 4, 6, 8, 10, 12, 14] 
0-15 arasındaki tek sayılar kümesi = [1, 3, 5, 7, 9, 11, 13, 15]
 

Eğer a[:] ifadesi kullanılırsa, listenin içerisindeki tüm elemanlar çağrılır. Örnek olarak:

INPUT:

example_list6[:]

OUTPUT:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
 

a[m:n:c] ifadesi liste içerisindeki m ile n arasındaki elemanları c(2 olsaydı,2’şerli atlayarak) atlayarak yeni bir liste olarak geri verir.  Örnek olarak:

INPUT:

example_list6[0:10:2]

OUTPUT:

[0, 2, 4, 6, 8]
 

Ayrıca liste içerisindeki elemanlar tersten yazılmak isteniyorsa, [::-1] ifadesi kullanılabilir. Örnek olarak

INPUT:

example_list6[::-1] 

OUTPUT:

[15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
 

Üyelik Sorgulama

Üyelik sorgulaması ise bir elemanın liste içerisinde olup olmadığını öğrenmek için yapılır. in ve not in operatörlerini kullanarak bu sorgulama gerçekleştirilebilir. in operatörü eğer eleman liste içerisinde ise True, değilse False döndürür. not in operatörü ise eleman liste içinde değilse True, içinde ise False döndürür. Örnek olarak:

INPUT:

5 in example_list6

OUTPUT:

True

INPUT:

16 in example_list6

OUTPUT:

False

INPUT:

20 not in example_list6

OUTPUT:

True

INPUT:

3 not in example_list6

OUPUT:

False
 

Bir sonraki yazıda Python’dan bahsetmeye devam edeceğim.

PYTN2972U5XK85ULZ9

 

Python’da Operatörler, If-Else ve Döngüler

Bu yazıda sizlere karşılaştırma operatörleri, atama operatörleri, mantıksal operatörler ve döngüler gibi konulardan bahsedeceğim.

Karşılaştırma Operatörleri

Karşılaştırma Operatörleri iki değeri karşılaştırmak için kullanılır. Aşağıdaki tabloda karşılaştırma operatörlerini görebilirsiniz.

OperatörlerAdı
==Eşittir
!=Eşit değil
>Büyüktür
<Küçüktür
>=Büyük ya da eşit
<=Küçük ya da eşit

Karşılaştırma işlemleri True ya da False sonuçlarını verir. Yukarıdaki karşılaştırma operatörleri için örnek vermek gerekirse,

INPUT:

4 == 4

OUTPUT:

True

INPUT:

5 == 4

OUTPUT:

False

INPUT:

6 != 1

OUTPUT:

True
INPUT:

4 > 5

OUTPUT:

False

INPUT:

5 >= 2

OUTPUT:

True







-

Atama Operatörleri  

Python’da bir değişkene değer atamak için atama operatörlerini kullanabiliriz. Başlıca atama operatörleri tablodaki gibidir.

OperatörlerÖrnekAçıklama
=x = 8x’e 8’i atar.
+=x += 8x’e 8 ekler.
-=x -= 8x’ten 8 çıkarır.
*=x *= 8x’i 8 ile çarpar.
/=x /= 8x’i 8’e böler.
%=x %= 8x’in 8 ile bölümünden kalanı x’e atar.
//=x //= 8x’in 8’e bölümündeki bölümü, x’e atar.
**=x **= 8x’in 8 üssünü alır ve x’e atar.

Mantıksal Operatörler

OperatörlerAçıklamaKullanımı
andİki ifade doğruysa True döndürür.z>10 and z<20
orİki ifadeden biri doğruysa True döndürür.x>10 or x<11
notMantıksal durumu tersine çevirir. True ise False döndürür.not(x<10 and x<15)

Kimlik Operatörleri

Python’da kimlik operatörleri iki nesnenin bellek konumunu karşılaştırır.

OperatörlerAçıklamaKullanımı
isİki değişken aynı nesneyse True döndürür.x is y
is notİki değişken aynı nesne değilse True döndürür.x is not y

Üyelik Operatörleri

Üyelik operatörleri tuple’lar, string’ler ve listelerde bir nesnenin var olup olmadığını test etmek için kullanılır ve iki tanedir. Bunlar in ve not in’dir. in, belirtilen nesne tuple, string veya listenin içerisindeyse True sonucunu döndürür. not in, ise belirtilen nesnenin tuple, string ve listenin içerisinde değilse True sonucunu döndürür.

INPUT:

List1 = [1,2,3,4,5]

5 in List1

OUTPUT:

True

INPUT:

6 in List1

OUTPUT:

False

INPUT:

6 not in List1

OUTPUT:

True

 

 

 

 

 

 

 

 

 

 

Python’da Döngüler

Python’da çalışırken yineleme içeren işlemler yapabiliriz. Döngülerin amacı, aynı veya benzer kodu birkaç kez tekrarlamak. Bu tekrarlama belirli bir sayı kadar ya da bir koşul sağlanana kadar sürebilir. Python’da iki tane döngü mevcuttur. Bunlar for döngüsü ve while döngüsüdür.

For Döngüsü

For döngüleri, sabit sayıda tekrarlamak istediğimiz bir kod bloğu olduğunda kullanılır. Sırasıyla dizinin her bir elemanı üzerinde (liste, tuple, string, dictionary olabilir) yineleme yaparak her seferinde bloğu çalıştırır. For döngüsü, “range” ve “xrange” işlevlerini kullanarak bir sayı dizisi üzerinde yineleme yapar. range ile xrange arasındaki fark, range belirtilen aralıktaki sayılar ile bir liste döndürmesidir.

INPUT:

for i in range(0,10):
    print(i)

OUTPUT:
0 
1 
2 
3 
4 
5 
6 
7 
8 
9

INPUT:

t = 0
for k in range(100):
    t += k
print(t)


OUTPUT:

4950


INPUT:


people = ["Ahmet","Mehmet","Ali"]
for name1 in people:
  print("Kişi adı = {}".format(name1))


OUTPUT:


Kişi adı = Ahmet 
Kişi adı = Mehmet 
Kişi adı = Ali
INPUT:

for i in "pi404":
     print(i)

OUTPUT:

p 
i 
4 
0 
4

INPUT:

for x in range(3,30,3):  
    print(x) 
#3’den başlayıp 30’a kadar 3’er 3’er 
#artarak değerleri yazar.

OUTPUT:

3 
6 
9 
12 
15 
18 
21 
24 
27

INPUT:

List1 = [1,2,3,4,5]
new_list = []
for employee in List1:
    employee+= 5
    new_list.append(employee) 
new_list 

OUTPUT:

[6, 7, 8, 9, 10]

Break komutu bir for ya da while döngüsünden çıkmak için kullanılırken, continue komutu ise geçerli blogu atlamak için kullanılır.

INPUT:


stuff = ["bardak","kasik","catal","dolab","masa"]
for new_stuff in stuff:
      if new_stuff == "catal":
         print("Döngü bitti")
         break;

         
OUTPUT:

Döngü bitti

 

 

While Döngüsü

Belirli bir koşul gerçekleşene kadar devam eden döngülere while döngüleri denir.

INPUT:

num1 = 3
sumOf = 0
totalSum = 0
while sumOf < 100:
          sumOf = sumOf + num1
          totalSum +=1
print("Toplam = %d" % sumOf)
print("Döngü sayısı = %d" % totalSum)  

OUTPUT:

Toplam = 102 
Döngü sayısı = 34
INPUT:

list1 = [1,2,3,4,5]
i = 0
while list1[i] != 5:
           print("Seçili eleman = ", list1[i])
           i += 1

OUTPUT:


Seçili eleman =  1 
Seçili eleman =  2 
Seçili eleman =  3 
Seçili eleman =  4

For ve while döngülerinde, döngü bitiminde ya da döngü koşulu başarısız olduğunda yapmak istediğimiz bir eylem varsa else komutunu kullanabiliriz. Eğer döngüden break  komutu ile çıkılırsa, else blogu atlanır.

INPUT:

num1 = 10
while num1 > 5:
          num1-= 1
          print(num1)
else:
        print("Sayi 5’ten küçük, döngü sona erdi.")

OUTPUT:

9 
8 
7 
6 
5 
Sayi 5’ten küçük, döngü sona erdi.
 

İç İçe Döngüler

For ve While döngüleri iç içe döngü olarak kullanılabilirler. Ayrıca for döngüsünden oluşan iç içe döngü ve while döngüsünden oluşan  iç içe döngüler de yaratmak mümkündür.

INPUT:

#Çarpım Tablosu
for i in range(1,11):
      k = 1
      print("{} ile çarpım".format(i))
      while k < 11:
                multiply1 = i*k
                print("\n{}x{} = {}".format(i,k, multiply1))
                k = k + 1
      print("--------------------")

OUTPUT:

1 ile çarpım
 
1x1 = 1 , 1x2 = 2 , 1x3 = 3 , 1x4 = 4 , 1x5 = 5 , 1x6 = 6 ,   1x7 = 7 , 1x8 = 8 , 1x9 = 9 , 1x10 = 10 
--------------------
2 ile çarpım 

2x1 = 2 , 2x2 = 4 , 2x3 = 6 , 2x4 = 8 , 2x5 = 10 , 2x6 = 12 , 2x7 = 14 , 2x8 = 16 , 2x9 = 18 , 2x10 = 20 
--------------------

...

-------------------- 
10 ile çarpım 
10x1 = 10 , 10x2 = 20 , 10x3 = 30 , 10x4 = 40 , 10x5 = 50 ,  10x6 = 60 , 10x7 = 70 , 10x8 = 80 , 10x9 = 90 , 10x10 = 100    
--------------------
 

IF-ELSE-ELİF

If-else blokları, programcı tarafından bir bool koşulunun doğru ya da yanlış olmasına göre belirtilen eylemleri gerçekleştirmeye yarayan özelliktir. Kullanımı ise aşağıdaki gibidir:

if (koşul):

       Koşul sağlanırsa çalışacak kodlar

elif (koşul):

       Yukarıdaki koşul sağlanmaz ve  bu koşul sağlanırsa çalışacak kodlar

else:

      Koşullar sağlanmazsa çalışacak kodlar 

 

INPUT:

x = int(input("Lütfen bir değer giriniz : "))
if x > 5:
   print("Girdiğiniz sayı 5’ten büyük")
elif x < 5:
   print("Girdiğiniz sayı 5’ten küçük") 
else:
   print("Girilen sayı 5’tir.")


OUTPUT:

Lütfen bir değer giriniz : 3 
Girdiğiniz sayı 5’ten küçük

INPUT:

num1 = int(input("Lütfen bir sayı giriniz : "))
if num1 %2 == 1:
   print("Girdiğiniz sayı tek sayıdır.")
else:
   print("Girdiğiniz sayi çift sayıdır.")

OUTPUT:

Lütfen bir sayı giriniz : 22 
Girdiğiniz sayi çift sayıdır.

Bir sonraki yazıda Python’dan bahsetmeye devam edeceğim.

PYTNT911Y115N6IC8U

 

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