Python ile Temel Programlamaya Giriş

Bir önceki yazıda Python nedir ve hangi alanlarla kullanılır gibi pek çok konudan bahsetmiştim. Bu yazıda ise Python ile temel programlamaya giriş yapacağım. Python ile kod yazarken bir IDE’ye ihtiyaç duyulur. Bir IDE(Integrated Development Environment, Tümleşik Geliştirme Ortamı), yazılım geliştirme için bilgisayar programcılarına kapsamlı olanaklar sağlayan bir yazılım uygulamasıdır. Atom, Pycharm, IDLE, Jupyter, Spyder gibi IDE’leri kullanabilirsiniz. Bu yazıda sizlere örnek olarak göstereceğim kodlar Jupyter tabanlı Google Colab’ta hazırlanmıştır. Google Colab, Python kodlarını yazmaya yarayan, kurulum gerektirmeyen, ücretsiz, birçok kütüphaneyi içerisinde barındıran ve olmayan kütüphaneleri yüklemeye izin veren; web tarayıcıda çalışan ve bilgisayarınızdan GPU ve RAM kullanmayan bir geliştirme ortamıdır.

Google Colab ile ücretsiz olarak Tesla K80 GPU üzerinde uygulamalar geliştirebilirsiniz.  Çalışmalarınız Google Drive’e kaydedebilir ya da Google Drive’ınıza yüklediğiniz bir çalışmayı Google Colab’ta inceleyebilir ve düzenleyebilirsiniz. Google Colab hakkında daha fazla bilgi almak istiyorsanız buraya tıklayarak resmi sayfaya gidebilirsiniz.

Programlama Hataları

Her programlama dilinde olduğu gibi Python’da da çalışırken hata yapmamak mümkün değildir. Bir uygulama geliştirirken yazılan kodlardaki hataları bulmak ve çözmek geliştirme sürecinde en fazla zaman harcanan bölümü olabilir. Yazacağınız en küçük programda bile onlarca farklı hata çıkma ihtimali vardır. Kod yazarken karşımıza çıkabilecek hataların ne tür bir hata olduğunu bilmek hatayı daha kolay çözmemizi sağlayacaktır.

Yazım Hataları

Syntax (söz dizimi), üzerinde çalıştığımız programlama dilinin kendine has program yapısını ve bu yapının kurulmasında kullanılan kuralları ifade eder. Her programlama dilinin yazımı farklıdır. Python derleyicisi yazdığımız kodlarda bir syntax hatası fark ederse programı durdurur ve nerede syntax hatası olduğunu gösterir. Böylece bizler nerede ve ne tür bir hata yaptığımızı görmüş oluruz. Örnek olarak ad = “Mehmet yazarsak Python derleyicisi bize burada bir hata olduğunu söyleyecektir.

ad = "Mehmet

     File "<ipython-input-1-e098e0017e34>", line 1
          ad ="Mehmet
                     ^
SyntaxError: EOL while scanning string literal

Çünkü string bir değişken tanımlanmaya çalışılmış ancak doğru bir şekilde yazılmamıştır. String ifadeler (” “) arasına yazılarak tanımlanır. Doğrusu ad = “Mehmet” şeklinde olmalıdır.

Çalışma Zamanı Hataları

Bu tür hatalar kodların hatalı yazılmasından ziyade beklenilmeyen durumlarda ortaya çıkabilen hatalardır. Örnek olarak, çalışma yaptığımız bir dosya üzerinde düzenleme iznimiz yoksa ya da veritabanında çalışacak kodlar yazmışsak ve veritabanı ile bağlantı kurmamışsak program hata verecektir.

Anlamsal Hatalar

Python’da kod yazarken, yazdığımız kodlar hatasız bir şekilde çalışır ancak istediğimiz sonuçları vermez ve farklı sonuçlar verirse anlamsal hata ortaya çıkmış demektir. Bu tür hatalar farkedilmesi zor hatalardır. Örnek olarak 13 sonucunu elde edeceğiniz 6 + 20/2 işlemini Python kullanarak çözdünüz. Ancak program size 16 sonucunu verdi.  Burada program size bir hata çıktısı vermeyecektir. Çünkü bu durumda işlem önceliği hatası yapılmıştır. Program ilk olarak 20/2 işlemini gerçekleştirir, ardından bu sonuca 6 ekleyerek sonucu elde edip size gösterir. Düşündüğümüz sonucu elde etmek için ise (6+20)/2 şeklinde yazmamız gerekirdi.

Python’da Değişkenler Ve Veri Tipleri

Değişken (variable), girdiğimiz ya da atadığımız bazı değerlerin geçiçi olarak hafızada saklanması için oluşturulan alanlara denir. Bir değişkene herhangi bir değer atamak için “ = ” ifadesi kullanılır. Örnek olarak:

meslek = "Çiftçi"
dogum_yili = 1995
ondalik_sayi = 0.5

Eğer Python’da değişkene değer ataması yapılmazsa hata alınır. Yukarıda tanımlanılan üç değişkenin tipi sırasıyla string, integer ve float’tır. Burada yazılan değişkenleri kod bloğuna yazdığımızda herhangi bir çıktı göremeyiz çünkü herhangi bir komut vermedik. Ekranda çıktı görmek için print() fonksiyonunu kullanmalıyız. Böylece değişkenlerin değerlerini çıktı olarak görebiliriz. Eğer tanımladığımız bir değişkenin tipini görmek istersek type() fonksiyonunu kullanmalıyız.

type(meslek)
str

type(dogum_yili)
int

type(ondalik_sayi)
float

Tanımlanılan değişkenler harf ile başlayabilir, içerisinde sayı ve alt çizgi barındırabilir, büyük-küçük harf barındırabilirken herhangi bir sayıyla başlayamaz ve içerisinde alt çizgi hariç özel karakterler barındıramazlar. Değişken tanımlarken dikkat etmemiz gereken bir diğer hususta değişkenlere ileride hatırlanabilecek anlamlar verilerek tanımlamaktır. Örnek olarak 5 kişinin not ortalamasını hesaplayacak bir program yazmak istiyoruz. Burada ortalamayı hesaplayacak olan işlemi, alakalı bir değişkenin değeri olarak atamamızda fayda vardır.

kisi1 = 10
kisi2 = 50
kisi3 = 70
kisi4 = 85
kisi5 = 60
notlarin_toplami = kisi1 + kisi2 + kisi3 + kisi4 + kisi5
not_ortalamasi = otlarin_toplami/5
print("Notların Toplamı: ", notlarin_toplami)
print("Not Ortalaması: ", not_ortalamasi)

OUTPUT------------------
Notların Toplamı: 275
Not Ortalaması: 55.0

Python’da anahtar kelime olarak belirlenmiş kelimeleri değişken adı olarak kullanamazsınız. Bunlara örnek olarak print, if-else, class, False, none, break, import, while, for gibi kelimeler verilebilir.

Veri Tipleri

Python’da bulunan başlıca veri tipleri aşağıdaki gibidir:

  • String veri tipi (Metinsel veri tipi)
  • Integer veri tipi (Sayısal veri tipi)
  • Long veri tipi   (Sayısal veri tipi)
  • Float veri tipi (Sayısal veri tipi)
  • Complex veri tipi (Sayısal veri tipi)
  • List veri tipi
  • Tuple veri tipi
  • Dictionary veri tipi

Yukarıda sıralanan veri tiplerinden bir sonraki yazıda detaylı olarak bahsedeceğim.

 

PYTN0FBN4Y72459ALA

 

Pi Sayısı Nedir? Tarihi ve Önemi

Bu yazıda sitemize de adını veren, Matematiğin en önemli sabitlerinden birisi kabul edilen Pi sayısından bahsedeceğim.

Pi sayısı nedir?

Pi sayısı herhangi bir dairenin çevresinin, çapına olan oranıdır. Çemberin boyutu fark etmeksizin bu oran her zaman pi’ye eşittir. 1647’ye kadar evrensel bir adı veya sembolü yoktu Matematikçiler 1700’lü yıllarda Yunanca “çevre” anlamına gelen περιμέτρου (perimetros) kelimesinin ilk harfi olan π’yi sembol olarak  kullanmaya başlamışlardır. William Jones tarafından 1706 yılında tanıtılan sembol, 1737’de İsviçreli matematikçi Leonhard Euler’in sembolü benimsemesinin ardından kullanımı popülerleşti.

William Jones (1675-1749)

Leonhard Euler (1707-1783)

Pi sayısı nasıl hesaplanır?

1767’de İsviçreli matematikçi Johann Heinrich Lambert pi’nin irrasyonel olduğunu kanıtladı ve 1882’de ise Ferdinand von Lindemann pi’nin sonsuz olduğunu kanıtladı. Bu bulgu önemlidir, çünkü bu noktaya kadar “çemberin karesini almak” olarak bilinen eşit alanlı bir kare ve bir daire oluşturulabileceğine inanılıyordu. Pi’nin sonsuz olduğunu kanıtlamak bunun mümkün olmadığını gösterdi. Pi irrasyonel olduğundan diğer tüm irrasyonel sayılar gibi bir kesir (basit veya kaba kesir olarak da bilinir) olarak gösterilemez.  π sonsuz olduğu için cebirsel değildir. Bu da bize π’nin ikinci derecen bir irrasyonel olamayacağını gösterir. İkinci dereceden bir irrasyonel olamaması π’nin periyodik bir sürekli kesire de  sahip olmadığını ifade eder. Ancak, pi dahil her irrasyonel sayı, sürekli kesir adı verilen sonsuz bir iç içe geçmiş kesirler dizisi ile temsil edilebilir:

Kesrin herhangi bir noktada kesilmesi, π için rasyonel bir yaklaşıklık verir; bunların ilk dördü 3, 22/7, 333/106 ve 355/113’tür. Bu şekilde üretilen her yaklaşım, en iyi rasyonel yaklaşımdır; yani, her biri aynı veya daha küçük paydaya sahip diğer herhangi bir kesirden π’ye daha yakındır.

Pi Sayısının Tarihi

Erken Dönem Tarihi

Pi’nin tarihi, MÖ 2000 yılına kadar uzanır. Bu dönemlerde Babilliler ve Mısırlılar π’yi kullanmışlardır. Babilliler (yaklaşık MÖ 2000) pi’yi yaklaşık olarak 3,125 kullandılar; bu değer, bir daire içine yazılmış bir altıgenin çevresini hesaplayarak, dairenin çevresine oranının 24/25 olduğunu varsayarak elde ettikleri bir değerdi. Rhind Papirüsü (yaklaşık MÖ 1650) bize eski Mısırlıların 256/81 veya yaklaşık 3.16045 değerini kullandıklarını gösteriyor. Hem Babilliler hem de Mısırlılar pi değerine ilişkin kaba sayısal tahminlere sahipti ve daha sonra Antik Yunanistan’daki matematikçiler, özellikle Arşimet, pi’yi hesaplamak için algoritmik bir yaklaşım kullanan ilk kişi oldu. Arşimet, bir çemberin içine bir çokgen ve çemberin dışına ikinci bir çokgen çizdi. Sonra sürekli olarak çokgen ekleyerek çemberin şekline gittikçe yaklaştı. Böylece 96 kenarlı çokgenlere ulaşarak 223/71 <π <22/7 veya yaklaşık 3.1418 gibi ortalama bir değer elde etti. Arşimet ayrıca bir dairenin alanının, yarıçapının karesine oranının aynı sabit olduğunu ve bir dairenin alanının, tabanı bu dairenin çevresine ve yüksekliği ise yarıçapına eşit bir üçgenin alanına eşit olduğunu kanıtlamıştır. Benzer bir yaklaşım, Çinli matematikçi ve gök bilimci olan Zu Chongzhi (429-501) tarafından da kullanıldı. Bir çemberin çevresinin çapına oranının değerini 355/113 olarak hesapladı.

Arşimet’in kullandığı yöntem
Arşimet’in kullandığı yöntem
Görsel Kaynak: piday

MS 5.yüzyılda geometrik teknikleri kullanarak Hintli matematikçiler π sayısında beş haneye yaklaşırken, Çinli matematikçiler yedi basamaklı bir yaklaşım yaptı. MS 265 civarında, Wei Hanedanı matematikçisi Liu Hui, poligon tabanlı yinelemeli bir algoritma yarattı ve bunu 3.072 kenarlı bir çokgenle kullanarak 3.1416 değerini elde etti. Liu daha sonra hesaplamanın daha hızlı bir yöntemini icat etti ve ardışık çokgenlerin alanlarındaki farklılıkların 4 faktörlü bir geometrik seri oluşturmasından yararlanarak 96 kenarlı bir çokgenle 3.14 değerini elde etti. Hintli gök bilimci Aryabhata, Āryabhaṭīya’sında (MS 499) 3,1416 değerini kullandı. Fibonacci 1220’de, Arşimet’ten bağımsız bir poligonal yöntem kullanarak 3.1418’i hesapladı.

15. yüzyıl

Fars gök bilimci Jamshad al-Kāshī,  1424 yılında pi’nin yaklaşık 16 ondalık basamağına eşdeğer olan 9 altmışlık basamak üretti. Bu basamak değeri yaklaşık 180 yıldır dünya rekoru olmuştur. Madhava, 1400 civarında π’nin 11 hanesini tahmin etmek için sonsuz seriler kullandı, ancak bu değer, çokgen bir algoritma kullanarak Pers matematikçi Jamsh Jamd al-Kāshī tarafından yaklaşık 1430’da iyileştirildi.

16. ve 17. yüzyıl

Fransız matematikçi François Viète 1579’da 9 basamak elde etti. Flaman matematikçi Adriaan van Roomen ise 1593’te 15 ondalık basamağa ulaştı. 1596’da Hollandalı matematikçi Ludolph van Ceulen 20 haneye ulaştı, bu rekor daha sonra 35 haneye yükseldi. 1630’da Avusturyalı gökbilimci Christoph Grienberger, 1040 kenarlı çokgenleri kullanarak 38 basamaklı pi hesapladı.

On sekizinci yüzyıla gelindiğinde Fransız matematikçi Georges Buffon π’yi olasılığa dayalı hesaplamanın yolunu buldu (Buffon’un iğne problemi veya Buffon’s needle problem). Isaac Newton, 16 ondalık basamağı hızlı bir şekilde hesaplamak için binom teoremini kullanmış, 20. yüzyılın başlarında, Hintli matematikçi Srinivasa Ramanujan, daha sonra bilgisayar algoritmalarına dahil edilen pi hesaplamanın olağanüstü verimli yollarını geliştirmiştir.

π’nin hesaplanmasında, 16. ve 17. yüzyıllarda sonsuz seri tekniklerinin geliştirilmesi ile devrim yaratıldı. Sonsuz seriler, matematikçilerin π’nin hesaplamasını Arşimet ve geometrik teknikler kullanan diğerlerinden çok daha yüksek hassasiyetle yapmalarına olanak sağladı. π’yi hesaplamak için kullanılabilecek sonsuz bir dizinin ilk yazılı açıklaması Hintli gök bilimci Nilakantha Somayaji tarafından MS 1500 civarında Tantrasamgraha’da Sanskritçe dizesinde ortaya konmuştur. Bu açıklama seri kanıt olmadan sunulmasına rağmen kanıtlar ancak MS 1530 civarında daha sonraki bir Hint eserinde sunuldu. Nilakantha ise, bu seriyi daha önceki Hintli matematikçi Madhava’ya atfeder. Günümüzde Madhava serisi veya Gregory-Leibniz serisi olarak anılan sinüs, tanjant ve kosinüs serileri de dahil olmak üzere birkaç sonsuz dizi tanımlanmıştır.

Pi’nin Hesaplanması
Görsel Kaynak : piday
Yakın tarih ve günümüz

20. yüzyılın başlarına gelindiğinde π’nin yaklaşık 500 basamağı biliniyordu. Modern teknolojik gelişmelerle, π’nin 31 trilyon basamağı hesaplandı. Bununla birlikte, gözlemlenebilir evrenimizdeki tüm hesaplamaları neredeyse hiç hata olmadan yapabilmek için yalnızca π’nin ilk 39 basamağına ihtiyacımız vardır.

İlki 1988 yılında Larry Shaw tarafından organize edilen Pi Günü, her yıl 14 Mart’ta kutlanmaktadır.

Hepimizin Pi Günü kutlu olsun! 🙂

Pi’nin Kullanım Alanları

Pi, yayların uzunluklarını veya diğer eğrileri, elips alanlarını ve diğer eğimli yüzeyleri ve birçok katı hacmini içeren çeşitli matematik problemlerinde ortaya çıkar. Ayrıca, açısal hız, sarkaçların hareketi, sicimlerin titreşimi ve alternatif elektrik akımları gibi periyodik olayları tanımlamak için çeşitli fizik ve mühendislik formüllerinde kullanılır.

MATE577212SS3ZFP64

Simpleks Yöntem

Simpleks yöntem çok değişkenli karar değişkenleri ve kısıtlayıcılardan oluşan doğrusal programlama problemlerinde optimum çözümü bulmak için 1947 yılında George Dantizg tarafından geliştirilmiştir. Bir doğrusal programlama problemini simpleks yöntem ile çözmek için standart formda ifade etmemiz gerekir. Bu sebeple ilk önce standart biçimden bahsedelim.

Standart Biçim

Zenk/enb = c1 . x1 + c2 . x2 + … + cn . xn

a11 . x1 + a12 . x2 + a13 . x3 + … + a1n . xn = b1

a21 . x1 + a22 . x2 + a23 . x3 + … + a2n . xn = b2

a31 . x1 + a32 . x2 + a33 . x3 + … + a3n . xn = b3

…..

am1 . x1 + am2 . x2 + am3 . x3 + … + amn . xn = bn

x1, x2, x3, … xn ≥ 0

olarak ifade edilen doğrusal programlama modeli aşağıdaki koşulları sağlarsa standart biçimdedir.

  • Amaç fonksiyonu en büyükleme ya da en küçükleme olabilir.
  • Kısıtlayıcı fonksiyonların sağ taraf sabitleri negatif olmamalıdır.
  • Tüm kısıtlayıcı fonksiyonlar eşitlik halinde olmalıdır.
  • Tüm karar değişkenleri negatif olmamalıdır.

Elimizdeki doğrusal programlama modelinde bazı dönüştürmeler yapmaya ihtiyaç duyabiliriz. Bir doğrusal programlama modeli üzerinde dönüşümlere kısaca göz atalım.

  • Bir doğrusal programlama modelinin amaç fonksiyonunun anlamını değiştirmek için fonksiyonu (-1) ile çarpabiliriz. Bu durumda en büyükleme olan amaç fonksiyonu en küçükleme olacaktır.

Zenb = 2x1 + x2 + x3

Zenk = -2x1 – x2 – x3

  • Bir doğrusal programlama modelinin kısıtlarındaki eşitsizliklerin yönünü değiştirmek için kısıtı (-1) ile çarpabiliriz.

3x1 + 4x2 ≥ 6

-3x1 – 4x2 ≤ -6

  • Eşitsizlik durumundaki bir kısıtı eşitliğe çevirmemiz gerekebilir. Bu çevirme işlemi kısıtın yönüne göre değişmektedir. Eğer a1 . x1 + a2 . x2 + a3 . x3 ≥ b1 gibi bir kısıtı eşitlik haline dönüştürmek istiyorsak, eşitsizliğin sol tarafından negatif olmayan bir değişken çıkarmamız gerekir. Bu değişkene, artık değişken denir. Eğer a1 . x1 + a2 . x2 + a3 . x3 ≤ b1 gibi bir kısıtı eşitlik haline dönüştürmemiz gerekiyorsa, eşitsizliğin sol tarafına negatif olmayan bir aylak değişken eklememiz gerekir. Böylece elimizdeki bir doğrusal programlama modelini standart biçime dönüştürerek simpleks yöntem ile çözebiliriz. Son olarak kısıtlayıcı değişkenler eşitlik durumunda ise, eşitliğin sol tarafına “A” ile gösterilen bir yapay değişken eklenmelidir. Simpleks yöntemi daha iyi anlayabilmek için örnek üzerinde inceleyelim.

Örnek

Zenb = 2x1 + 3x2

6x1 + 4x2 ≤ 20

3x1 + x2 ≤ 30

x1 + x2 ≤ 40

x1, x2 ≥ 0

Simpleks yöntem ile çözünüz.

İlk adım olarak doğrusal problemi standart biçime çevirelim.

Standart Biçim

6x1 + 4x2 + x3 = 20

3x1 + 2x2 + x4 = 30

x1 + x2 + x5 = 40

x1, x2, x3, x4, x5 ≥ 0

Burada x3, x4 ve x5 aylak değişkendir. Aylak değişkenler amaç fonksiyonuna eklenirken katsayısı 0 (sıfır) olarak eklenir. Bu durumda amaç fonksiyonumuz aşağıdaki gibi olur.

Zenb = 2x1 + 3x2 + 0 x3 + 0 x4 + 0 x5

Şimdi ise bu problemi çözebilmek için tablo yapmamız gerekir. Bu tablonun üst kısmında değişkenler, sol kısmında temel değişken vektörü altında aylak ve yapay değişkenler yer almalıdır. Ancak burada artık değişkenler (varsa) yer alamazlar. Çünkü temel çözüm uygun olmaz.

AFKTDVx1x2x3x4x5ÇV
0x3      
0x4      
0x5      
Zj      
Zj – Cj      
Simpleks Başlangıç Tablosu Değerler Yazılmamış Hali

AFK = Temeldeki değişkenlerin (TDV altında) amaç fonksiyonundaki katsayıları

TDV = Temel değişken vektörü

ÇV = Çözüm vektörü

Kısıtları tabloya yerleştirirken sıralamaya dikkat etmemiz gerekir. İlk kısıtımızda x3 aylak değişkeni olduğu için, ilk sıraya x3 aylak değişkenini yazıp, x3 aylak değişkeninin bulunduğu satıra ise kısıtın katsayılarını sırasıyla yerleştirmemiz gerekir. Bu işlemi diğer kısıtlar içinde yapmamız gereklidir. Ardından temeldeki değişkenlerin amaç fonksiyonundaki katsayılarını yanlarına (AFK) yazmamız bizim için faydalı olacaktır. Çünkü Zj satırını elde etmek için bu katsayıları kullanacağız. Her bir Zj değeri o sütundaki elemanlar ile temeldeki değişkenlerin amaç fonksiyonlarındaki katsayıları çarpılıp toplanmasıyla elde edilir. Böylece

Z1 = 0.6 + 0.3 +0.1 = 0

Z2 = 0.4 + 0.1 +0.1 = 0

Z3 = 0.1 + 0.0 +0.0 = 0

Z4 = 0.0 + 0.1 +0.0 = 0

Z5 = 0.0 + 0.0 +0.1 = 0

Ç.V = 0.20 + 0.3 0+0.40 = 0 olarak elde edilir.

Sırada ise Zj – Cj satırını elde etmek var. Bu satırı elde etmek için her bir Zj değerinden karşılık gelen değişkenin amaç fonksiyonu katsayısının çıkarılması gerekir. Bu durumda

Z1 – C1 = 0 – 2 = -2   ——>C1 , x1 ‘in katsayısı

Z2 – C2 = 0 – 3 = -3  ——>C2 , x2 ‘nin katsayısı

Z3 – C3 = 0 – 0 = 0   ——>C3 , x3 ‘ün katsayısı

Z4 – C4 = 0 – 0 = 0   ——>C4 , x4 ‘ün katsayısı

Z5 – C5 = 0 – 0 = 0   ——>C5 , x5 ‘in katsayısı

Bu değerler tabloda ilgili yerlere yazılmalıdır.

Simpleks Başlangıç Çözüm Tablosu

AFKTDVx1x2x3x4x5ÇV
0x36410020
0x43101030
0x51100140
Zj000000
Zj – Cj-2-3000 

Buraya kadar yaptıklarımızla tabloyu doldurduk. Buradan sonra yapmamız gereken anahtar sütun, anahtar satır ve anahtar sayı değerlerini bulmaktır. Anahtar sütun, temele girecek olan değişkeni belirler. Anahtar satır, temelden çıkacak olan değişkeni belirler. Anahtar sayı ise temele yeni giren değişkenin tablodaki değerlerini belirlemek için kullanılır. Anahtar sütun, amaç fonksiyonuna göre iki şekilde belirlenir. Eğer amaç fonksiyonu en büyükleme ise,  Zj – Cj satırındaki mutlak değerce en büyük olan negatif sayının bulunduğu sütun anahtar sütundur.  Amaç fonksiyonu en küçükleme ise, Zj – Cj satırındaki en büyük sayının bulunduğu sütun anahtar sütun olur. Bu şekilde anahtar sütunu belirleyip hangi değişkenin temele gireceğini bulabiliriz. Bir değişken temele girerken, temeldeki hangi değişkenin çıkacağına karar vermek için anahtar satırı bulmamız gerekir. Anahtar satırı bulmak için çözüm vektörü kısmındaki değerleri karşılık gelen anahtar sütun elemanlarına bölerek oran sütununu elde etmemiz gerekir. Oran sütununda hangi değer daha küçük ise o değerin bulunduğu satır, anahtar satır olarak adlandırılır ve temelden çıkarılır. Anahtar sayı ise anahtar sütun ile anahtar satırın kesiştiği değerdir. Şimdi bizim tablomuzdaki değerlere göre anahtar sütun, anahtar satır ve anahtar sayıyı bulalım.

Anahtar Sütun

 X1X2X3X4X5
Zj – Cj-2-3000

Buradan da görüldüğü gibi mutlak değerce en büyük olan negatif sayının bulunduğu sütun x2 sütunudur. Böylece x2 sütunu anahtar sütundur ve temele girmelidir.

Anahtar Satır

 Anahtar sütun(X2)Çözüm Vektörü(ÇV)Oran
x3455/4
x413030
x514040

Böylece x3 ‘ün temelden çıkarılması gerekir. Anahtar sütun(x2) ve anahtar satır’ın(x3) kesiştiği değerin 4 olduğu görülür. Böylece anahtar sayı 4’tür. Bu değerleri elde ettikten sonra simpleks birinci çözüm tablosunu oluşturarak çözüme devam edelim. Burada x2 satırının yeni değerleri x3  satırının değerlerinin anahtar sayıya bölünmesiyle elde edilir.

Simpleks Birinci Çözüm Tablosu

AFKTDVx1x2x3x4x5ÇV
3x23/211/4005
0x43/20-1/41025
0x5-1/20-1/40135
Zj9/233/40015
Zj – Cj5/203/400

Burada tablonun son halini yazdık ama tablonun içerisindeki değerler yeniden hesaplanmalıdır. Bu değerlerin hesaplanmasına geçilmeden önce şunu belirtmemiz gerekir temeldeki değişkenler tabloda birim matris oluştururlar. Biz tablonun yeni değerlerini bulurken bu değişkenlerin oluşturacağı birim matrisi korumamız gerekir. Simpleks başlangıç çözüm tablosuna baktığımızda temeldeki x3, x4 ve x5 değişkenlerinin tabloda birim matris oluşturduğu görülür. Simpleks birinci çözüm tablosunda ise x2, x4 ve x5 birim matris oluşturmalıdır. Temeldeki değişkenlerin bulundukları satırların değerleri bulunurken bu birim matris gözedilerek bulunacaktır. x2 satırının değerlerinin nasıl bulunduğu söylemiştik. Şimdi x4 ve x5 satırlarındaki değerleri bulalım. İlk önce x4 satırının değerlerini hesaplayalım. Bunun için x4 satırının simpleks başlangıç çözümündeki yani eski değerleri ve yeni x2 ’nin değerlerini kullanacağız. Bu değerleri kullanarak ve birim matrisi koruyarak x4 ’ün yeni değerlerini bulacağız.

 x1x2x3x4x5ÇV
Eski x43101030
Yeni x23/211/4005
Yeni x43/20-1/41025

Burada birim matrisin korunması için yeni x4 ’ün x2  sütunundaki değeri 0, x4 satırındaki değeri 1  ve x5 sütunundaki değeri 0 olmalıdır. Bunun için yeni x2 satırı (-1) ile çarpılıp toplanmalıdır. Bulunan yeni x4 satırının değerleri tabloya yazılır.

Şimdi x5 satırının değerlerini bulalım. Bunun için ise simpleks başlangıç çözüm tablosundaki yani eski x5 değerlerini ve yeni x2 değerlerini kullanacağız.

 x1x2x3x4x5ÇV
Eski x51100140
Yeni x23/211/4005
Yeni x5-1/20-1/40135

Yeni x5 değerleri bulunurken birim matrisi korumak için yeni x5‘in x2 sütunundaki değeri 0, x4 sütunundaki değeri 0 ve x5 sütunundaki değeri 1 olmalıdır. Bu sebeple yeni x2 satırı (-1) ile çarpılıp toplanmalıdır. Böylece yeni x5 satırının değerleri hesaplanmış olur. Bu değerlerde tabloya eklendiğinde hesaplamamız gereken Zj ve Zj – Cj satırı kalır. Zj satırındaki değerleri temeldeki değişkenlerin amaç fonksiyonu katsayıları ile tablodaki değerlerin çarpılıp toplanmasıyla elde ediliyordu. O zaman Zj satırındaki değerler aşağıdaki gibi hesaplanır.

Z1 = 3.(3/2)  +  0.(3/2)  +  0.(-1/2) = 9/2

Z2 = 3.1  +  0.0  +  0.0 = 3

Z3 = 3.(1/4)  +  0.(-1/4)  +  0.(-1/4) = 3/4

Z4 = 3.0 +  0.1 +  0.0 = 0

Z5 = 3.0  +  0.0  +  0.1 = 0

Ç.V = 3.5 +  0. 25+  0.35 = 15

Bu değerler tabloya yazılmalıdır. Ardından her bir Zj değeri bulunduğu sütundaki değişkenin amaç fonksiyonundaki katsayısı olan Cj ’den çıkarılarak Zj – Cj  değerleri hesaplanır.

Z1 – C1 = (9/2)– 2 = 5/2   ——>C1 , x1 ‘in katsayısı

Z2 – C2 = 3 – 3 = -0  ——>C2 , x2 ‘nin katsayısı

Z3 – C3 = 3/4 – 0 = 3/4   ——>C3 , x3 ‘ün katsayısı

Z4 – C4 = 0 – 0 = 0   ——>C4 , x4 ‘ün katsayısı

Z5 – C5 = 0 – 0 = 0   ——>C5 , x5 ‘in katsayısı

Amaç fonksiyonumuz en büyükleme olduğu için Zj – Cj satırındaki tüm değerlerin sıfır veya pozitif olması gerekir. Eğer amaç fonksiyonumuz en küçükleme olsaydı Zj – Cj satırındaki tüm değerlerin negatif veya sıfır olması gerekecekti. Yukarıdada görüldüğü gibi Zj – Cj satırındaki tüm değerler sıfır veya pozitif olduğundan en iyi çözüme ulaşmış oluruz. Böylece

Zenb = 15 , x2 = 5 , x3 = 0 , x4 = 25 , x1 = 0 , x5 = 35 olarak elde edilir.

Eğer bizim problemimizde Zj – Cj

satırındaki herhangi bir değer negatif olsaydı çözüm en iyi olmayacaktı. Bu durumda ise tekrar anahtar sütun, anahtar satır ve anahtar sayi değerlerini bulacaktık. Ardından tabloyu tekrar oluşturup buradaki gibi değerleri yeniden hesaplayıp çözümün en iyi olup olmadığını kontrol etmemiz gerekirdi. Çözüm en iyi olana kadar bu işlemleri yapmaya devam edecektik.

MATE7427Q2K8SX9066
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
Algoritma Nedir? Program Nedir? – Programlamaya Giriş

Bu yazıda algoritma ve program nedir, akış şemaları nedir bundan bahsederek programlaya giriş yapacağım.

Algoritma Nedir?

Algoritma, yapılmak ve yaptırılmak istenen bir işlemin, adım adım sıralanarak işlem basamaklarına bölünmesidir. Algoritmaların belirli şartları sağlamaları gerekmektedir:

concepts of programming languages - Guide For New Programmers
  • Her algoritmada mutlaka bir girdi bulunmalıdır.  
  • Girdiye karşılık olarak algoritma sonucunda mutlaka bir çıktı elde edilmelidir.
  • Algoritma her basamağında açıklık ilkesine uymalı ve okuyana net bir karar verdirmelidir.
  • Çıktıya ulaştıran algoritma belirli bir basamak sayısına sahiptir.

Algoritma, kısaca bizim bilgisayara yaptıracağımız işlerin sıralı olarak nasıl yapılacağını listeleme biçimidir.

Örnek olarak, kenar uzunlukları kullanıcı tarafından girilen bir dikdörtgen prizmanın hacmini hesaplamak istediğimizi varsayalım.

Bunun için yazmamız gereken algoritma, her adımı numaralandıracak olursak:

Adım0: Başla

Adım1: Kısa kenar, uzun kenar, yükseklik ve hacim değerlerini tanımla

Adım2: Kısa kenarın uzunluğunu oku

Adım3: Uzun kenarın uzunluğunu oku

Adım4: Yükseklik uzunluğunu oku

Adım5: Sayıları çarp ve hacim değerine ata

Adım6: Hacim değerini görüntüle

Adım7: Dur

şeklinde olacaktır.

Görüldüğü üzere her adımda yazacağımız programın ne yapması gerektiğini belirleyerek hem yazan kişi için hem de programın işlemleri doğru olarak yerine getirebilmesi için belirli bir mantıksal olay örgüsü kurmuş olduk.

Peki bahsettiğimiz program nedir, programların mantığı nasıl çalışır önce onu bir inceleyelim.

Program nedir?

Bir problemin, çeşitli makine dilleri kullanılarak bilgisayar ve bilgisayar mantığında çalışan cihazlara, onların anlayabileceği şekilde işlenmesine programlama, bunun sonucunda oluşan belirli bir çalışma algoritmalarına sahip kodlara (yazılımlara) ise program denir. Bir veya birden fazla algoritma dizilerinin birleşimi bir programı oluşturur. Bu programlar, programlama dili olarak adlandırılan, makinelerin çalışma mantığına uygun olarak oluşturulan iletişim dilleri ile yazılır. Programlama dillerine ve programlama dillerinin tarihine daha sonra detaylı olarak değineceğim.

Örnek olarak yukarıda bahsettiğimiz algoritma örneğini programa dönüştürecek olsaydık.

C++ programlama dili kullanarak:

#include<iostream>
using namespace std; 
int main(){
int kisaKenar, uzunKenar, yukseklik, hacim;
cin >> kisaKenar;
cin >> uzunKenar;
cin >> yukseklik;
hacim=kisaKenar*uzunKenar*yukseklik;
cout <<hacim<<endl;
}

şeklinde olacaktır.

Aynı algoritmayı Java dilini kullanarak programa dönüştürecek olursak:

import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double kisaKenar = input.nextDouble();
double uzunKenar = input.nextDouble();
double yukseklik = input.nextDouble();
double hacim = kisaKenar*uzunKenar*yukseklik;
System.out.println("Hacim: "+hacim);
     }
}

şeklinde olacaktır. Görüldüğü üzere 2 farklı programlama dili ile aynı algoritmayı kullanarak hacim hesabı yapmak mümkündür.

Akış Diyagramları Nedir?

Algoritmaların daha iyi anlaşılabilmesi için belirli şekillerle çizilmelerine akış diyagramı denir.

Akış diyagramları oluşturulmadan önce:

  • Algoritmanın adımları belirlenmeli,
  • Her adım için kullanılacak şekiller belirlenmeli.   

Yukarıda vermiş olduğumuz algoritma için akış şeması yazacak olursak:

şeklinde olacaktır.

Bu yazıda algoritma ve programlaya giriş yaptık, akış diyagramları ve algoritma ile ilgili örneklere ise buradan ulaşabilirsiniz.

ALGO1W69O39TC88429

 

Raslantı (Rassal) Değişkenler

Bu yazıda sizlere Olasılık konusu olan Rastlantı Değişkenleri’nden bahsedeceğim. Genel olarak yazıda kesikli rastlantı değişkeni, kesikli olasılık fonksiyonu ile örneklerini inceleyeceksiniz. İyi çalışmalar.

Rastlantı(Rassal) Değişkenler

Örneklem uzayının her noktasına ya da her rastgele olayına rastgele bir gerçel sayı bağlayan fonksiyona rastlantı değişkeni denir. Rastlantı değişkeninin diğer değişkenlerden farkı ise rastlantı değişkeninin olası değerlerini belli bir olasılıkla almasıdır. Bir başka deyişle örneklem uzayının yeniden belirlenmesi için uygulanan reel değerli fonksiyondur.

Rastlantı değişkenleri X, Y, …, aldıkları değerler ise x, y, …, ile gösterilir. X rastlantı değişkenlerinin aldığı x değerlerinin kümesi ise Rx ile gösterilir. Rx’e,  x’in tanım bölgesi denir.

ÖRNEK

İki madeni para birlikte havaya atılıyor. X rastlantı değişkeni yazı sayısını göstersin. X’in aldığı değerleri ve bu değerlerin olasılıklarını bulunuz.

Cevap:

İki para birlikte havaya atılıyorsa olası çıktılar kümesi olan örneklem uzayı aşağıdaki şekilde olur:

          S = { YY, YT, TY, TT }

Rastlantı değişkenleri yazı sayısını gösterdiğine göre, iki parayı havaya attığımızda hiç yazı gelmeyebilir. Bu durumda X = 0 olur. Sadece bir tane yazı gelebilir. Bu durumda da X = 1 olur. Son olarakta havaya attığımız iki parada yazı gelebilir. Bu durum için ise X = 2 olur. Rastlantı değişkenleri bulunduğuna göre bu değerlerin olasılıkları hesaplanmalıdır.

P(X = 0) = P(TT) = 1/4  , P(X = 1) = P(TY,YT ) = 2/4 = 1/2  , P(X = 2) = P(YY) = 1/4 olarak elde edilir.

Rastlantı değişkenleri sürekli ve kesikli rastlantı değişkenleri olmak üzere iki ayrılır. Bu yazıda kesikli rastlantı değişkenlerinden bahsedeceğim.

Rastlantı değişkenleri sürekli ve kesikli rastlantı değişkenleri olmak üzere iki ayrılır. Bu yazıda kesikli rastlantı değişkenlerinden bahsedeceğim.

KESİKLİ RASTLANTI DEĞİŞKENLERİ

X bir rastlantı değişkeni olsun. X’in tüm olası değerlerinin kümesi olan Rx, sonlu ya da sayılabilir sonsuzlukta ise X’e kesikli rastlantı değişkeni denir. Örnek olarak bir ailedeki çocuk sayısı, sınıftaki öğrenci sayısı, torbadaki top sayısı gibi değişkenler kesikli rastlantı değişkenleridir.

Kesikli Olasılık Fonksiyon Tanımı

X bir rastlantı değişkeni olsun. X rastlantı değişkeni her xi değeri  bir  p(xi) olasılığı ile alıyorsa ve p(xi) olasılık fonksiyonu ise,

1 . p(xi) = 0 ,    x ∉ Rx

2. 0 ≤  p(xi) ≤ 1 ,  x ∈ Rx

3. ∑1 p(xi) = 1 koşullarını sağlaması gerekir.

X rastlantı değişkeni için bir olasılık fonksiyonu tanımlanmamışsa,

 

 

değerleri hesaplanabilir.

 

P(X ≤ a) değeri biliniyorsa, P(X > a) değeri, P(X > a) = 1 – P(X ≤ a) ile bulunabilir.

Örnek 1

Cevap

Yukarıda kesikli olasılık fonksiyonunun koşullarından bahsedilmişti. Buna göre verilen fonksiyonun koşulları sağlayıp sağlamadığını kontrol edelim.

1.koşul  x ∉ Rx için p(xi) = 0 olduğu soruda verilmiş, dolayısıyla bu koşul sağlanır.

2.koşul   x ∈ Rx  için x değerleri artarken p(x)’in küçüldüğü görülür. p(x) negatif değer alamadığından , p(x)’in değer aralığı 0 < x < 1 ‘dir. Böylece koşul sağlanmış oldu.

Bu sonuca göre 3.koşul sağlanmamaktadır. Böylece verilen p(x) fonksiyonu kesikli olasılık fonksiyonu değildir.

Örnek 2

Bir balıkçının bir günde tuttuğu ortalama balık miktarını gösteren X rastlantı değişkeninin olasılık fonksiyonu,

biçiminde olsun. Bu olasılık dağılım fonksiyonunu kullanarak,

a) Tam 8 balık tutma,

b) 8’den az balık tutma olasılıklarını bulunuz.

Cevap:

Bir sonraki yazıda rastlantı değişkenlerinin beklenen değeri, varyansı gibi konulardan bahsedildi. Dilerseniz buradan ilgili konuya gidebilirsiniz.

MATEAB2QJ5E6B457I4
Teknik Çizim ve CAD Nedir? Nelere Dikkat Etmek Gerekir?

Bu yazıda teknik çizim ve CAD nedir, teknik çizimde nelere dikkat etmek gerekir gibi konulara değineceğim.

Teknik Çizim nedir?

Konusu itibariyle bir şeyin nasıl yapıldığını veya yapılması gerektiğini, bir ürünün üretiminde uygulanması veya anlaşılması gereken çeşitli ölçütleri barındıran çizimlerdir. Söz konusu ürünün 2. veya 3. şahıslar tarafından anlaşılabilmesi ya da çizen kişinin, aynı ürünün teknik özelliklerini daha sonra tekrar kullanılabilir tutabilmesi için bu çizimler önem teşkil eder. Oldukça uzun bir kullanım geçmişine sahip olan teknik çizimlerin tarihçesine daha sonra detaylıca değineceğim. Mühendislikte ve mimaride oldukça sık kullanılan teknik çizimler çizim masası, T cetveli, gönye, açı ölçer gibi aletler kullanılarak oluşturulsa da günümüzde bilgisayar destekli tasarım(CAD) programları aracılığıyla daha yaygın olarak çizilmektedir.

Bilgisayar Destekli Tasarım(CAD) Nedir?

Yıllar içerisinde çizimlerin, zamandan ve maliyetten tasarruf ederek, nasıl daha kolay ve pratik olarak yapılabileceği sorusu üzerine tasarlanan bilgisayar destekli tasarım programları sayesinde teknik çizimler dijital olarak kullanılabilir hale gelmiştir. 2 boyuttan 3 boyuta, 3 boyuttan 2 boyuta çizim dönüştürmelerin, tasarım değişikliklerinin kolayca yapılabildiği CAD programları, hızlı performanslarının yanı sıra tasarımcıya farklı görünüş seçenekleri, parça ve montaj çizimleri ile çeşitli simülasyonları uygulama fırsatı sunar. Ayrıca çizimi yapılan tasarımın tutarlı olup olmadığını, bir montaj içerisinde düzgün çalışıp çalışmayacağını inceleme imkânı sağlar.

Mühendislikte Kullanılan Başlıca CAD programları nelerdir?

AutoCAD, yeni başlayanlar için kolay öğrenilebilir, orta seviye bir CAD programıdır. 2 boyutlu ve 3 boyutlu çizim imkânı sağlar. Büyük çaplı ve kompleks 3 boyutlu tasarımlar için daha iyi sonuçlar verebilen programlar tercih edilebilir. Ücretlendirme sistemi abonelik yöntemiyle çalışır.

SketchUp, basit bir arayüze sahip olan bir tasarım programıdır. Kişiselleştirilebilir araç çubuklarıyla tasarımcıya kolay kullanım imkânı sunar. Görsel kaplamalar ve kararlı renderlar elde etmenizi sağlar. Maliyet bakımından pahalı denilebilecek bir programdır.

SolidWorks, gelişmiş tasarım ve simülasyon kurma olanaklarına sahip bir tasarım programıdır. Oldukça yaygın olarak kullanılmaktadır. Oluşabilecek hataları belirterek tasarımda iyileştirme yapabilmek için rehber özelliktedir. Maliyet bakımından pahalı denilebilir.

Catia, hâlihazırda kullanılan en pahalı tasarım programıdır. Oldukça kompleks tasarımlar yapma imkânı sağlar. Oldukça kararlı çözümlemeler sunar.

FreeCAD, ücretsiz ve açık kaynak kodlu bir tasarım programıdır. Sonlu elemanlar yöntemi ile mühendislikten mimariye çeşitli tasarım ve analizler için kullanılır. Python dili kullanılarak oluşturulan programa kullanıcıların katkı sağlaması da mümkündür. Arayüzü Catia ve SolidWorks ile benzerlik gösterir.

Creo Elements, üretilecek ürünlerin eksiksiz bir 3D dijital modelini oluşturmak için kullanılan bir tasarım programıdır. Modeller, sonlu eleman analizi, hızlı prototip oluşturma, takım tasarımı ve CNC imalatında da kullanılabilen 2D ve 3D katı model verilerinden oluşur. Karmaşık geometrilerin derinlemesine kontrol edilebilmesini sağlar.

Siemens NX, en gelişmiş tasarım programlarından birisi olan NX oldukça yüksek bir kullanım maliyetine sahiptir. Kullanım kolaylığı ve gelişmiş parametrik motoru ile güçlü bir tasarım elde edilmesini sağlar. İçerisinde sonlu elemanlar metodunu barındıran kendi analiz programlarına sahiptir.

Teknik Çizimde nelere dikkat etmek gerekir?

Teknik çizimlerin işlevlerini uygun olarak yerine getirebilmeleri için birtakım niteliklere sahip olması beklenir.

  • Kullanılacak teknik çizim kağıt baskı standartlarına uygun olarak yerleştirilmeli.
  • Ölçütlendirmelerde, aynı ölçü birden fazla kez verilmemeli.
  • Bütün ölçülerde tolerans tanımlamaları mümkünse yer almalıdır.
  • Ölçülendirmeler mümkün olduğunca çizimin içerisinde tutulmamalı.
  • En uygun görünüş açıları veya standart olan(ön görünüş-üst görünüş-yan görünüş- çapraz tam görünüş) şeklinde tercih edilmelidir.
  • Teknik notasyonların kullanımına dikkat edilmeli ve evrensel standartlar gözetilerek uygun ölçü birimleri tercih edilmelidir.
Teknik Resim Sayfa Boyutları
Sayfa Konumlandırma

Teknik çizim ve CAD programlarına detaylı olarak daha sonra değineceğim.

TSRMZ89966GMJBE325

 

Matlab Nedir? Matlab’de Temel Programlama

Bu yazıda sizlere günümüzde yaygın bir şekilde kullanılan Matlab programlama dilinden bahsedeceğim. Genel olarak Matlab nedir, kullanım yerleri nelerdir, Matlab çalışma ortamına ait bazı komutlar ve belli başlı komut işaretlerinden bahsedeceğim. Keyifli okumalar.

Matlab nedir?

MATLAB(Matrix Laboratory), 1985 yılında C.B Moler tarafından matematik ve matris esaslı matematik işlemleri için kullanılmak üzere geliştirilmiş programlama dilidir. Matlab temel olarak C dilinde yazılmıştır.

Cleve Barry Moler, Matematikçi, MathWorks kurucusu

Temel bilimler ve mühendislik alanlarında; sayısal hesaplama, veri çözümleri ve grafik işlemlerinde kullanılır.

Matlab’in fonksiyon kütüphanesi sayesinde diğer programlama dillerine göre daha az komutla işlem yapmak mümkündür. Matlab, M-dosyaları adı verilen çok sayıda fonksiyon dosyalarından oluşur. M-dosyaları, ASCII formatında olup, Matlab programlama dili kodlarından oluşmaktadır.

Matlab, matematik ve mühendislik uygulama alanlarında oldukça yaygın bir şekilde kullanılır.

Matlab’in kullanıldığı başlıca alanlar:

  • Matematiksel hesaplama işlemleri
  • Veri Analizi
  • Algoritma Geliştirme
  • Makine Öğrenmesi
  • Derin Öğrenme
  • Simülasyon
  • 2 Boyutlu ve 3 Boyutlu Grafik Çizme
  • İstatistiksel Hesaplamalar

Çalışma ortamına ait bazı komutlar

Demo Komutu: Matlab’in versiyon yeniliklerini öğrenmek için Demo komutu kullanılabilir.

Quit ve exit komutları: Matlab ortamından çıkmak için kullanılan komutlardır.

Save ve load komutları: Matlab’deki çalışmalarınızı kaydetmek ve yüklemek için kullanılan komutlarıdır.

clc komutu: Komut ekranını temizlemek için kullanılır.

clear ve pack komutları: Matlab’de çalışırken tanımlanan değişkenler ve fonksiyonlar normal olarak bellekte yer tutarlar. Tanımlanan değişken sayısı arttıkça bellekte daha fazla yer tutulur.Bu durumda küçük bilgisayar sistemlerinde bellek sorunu(Out Of Memory) ortaya çıkabilir. Çalışmanız devam ederken tanımlanan değişken ve fonksiyonlar silinmek isteniyorsa clear komutunu kullanılmalıdır. Bu komut kullanıldıktan sonra önceden tanımlanan değişkenler ve fonksiyonlar yeniden tanımlanmazsa kullanılamazlar.

Çalışmanızı sürdürürken tanımlanan değişkenleri farklı yerlerde kullanmaya devam ediyorsanız ve aynı zamanda bu değişkenlerin bellekte çok yer kaplamasını istemiyorsanız Pack komutu kullanılmalıdır. Pack komutu bilgileri gereken en küçük alana sıkıştırarak bellekte yer açar.

İcranın sona erdirilmesi: Özellikle sonsuz döngü yaratıldığında, döngünün sonlandırılması ya da yapılan herhangi bir işlemin kesilmesi için Ctrl+C tuşları kullanılabilir.

Casesen off, casesen komutları: Matlab’de büyük ve küçük harf duyarlılığı vardır. Örneğin “Date” ve “date” değişkenleri farklı değişkenlerdir. Harf duyarlılığını ortadan kaldırmak için casesen off , aktif etmek için casesen komutları kullanılabilir.

Who, whos, what komutları: who komutu kullanıcı tarafından tanımlanan değişkenlerin listesini verir. whos komutu ise değişkenlerin boyutlarını ve sıfırdan farklı olan sanal kısımlarının olup olmadığını gösterir. what komutu ise mevcut M-dosyalarının listesini verir.

Help komutu: Matlab’de çalışırken bazı konularda yardıma ihtiyaç duyulabilir. Bu durumlarda help yardımistenenkonu komutu kullanılarak yardım alabilirsiniz. Burada yardımistenenkonu yerine sorunun adı gelmelidir.

Matlab’de kullanılan belli başlı komut işaretleri

Köşeli parantez [ ]: Matlab’da matris ve vektör tanımlamak için kullanılır. Örnek olarak:

INPUT:

>> %MATRİS TANIMLAMA

>> B = [7 8 9; 11 12 13; 14 15 16]

OUTPUT:

B =    
     7    8    9    
     11   12   13    
     14   15   16

INPUT:

>> %VEKTÖR TANIMLAMA

>> A = [1 2 3 4 5]

OUTPUT:

A =
    1   2   3   4   5

 

Virgül (,):  Matris indislerini ve fonksiyon argümanlarını ayırmak için kullanılır.

Noktalı Virgül (;): Yazılan kodların sonuçlarının ekranda görüntülenmesini engeller. Ayrıca matrislerde satırları sona erdirmek için de kullanılır.

INPUT:

>> A = [3 5 7 9]

OUTPUT:

A =
    3   5   7   9

>> B = [3 5 7 9];
>>

Yüzde işareti (%): Yüzde işareti yorum satırı için kullanılır. Örnek olarak:

INPUT:

>> %Matlab'de yorum satırı.

OUTPUT:

>>

Tırnak işareti (‘): Tırnak işareti matrislerin transpozesini, (.’) işareti ise eşlenik olmayan transpozesini bulmayı sağlar.

INPUT:

>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12]  %A matrisini tanımlayalım

OUTPUT:

A = 
    1   2   3   4
    5   6   7   8
    9   10  11  12

INPUT:

>> A' %A matrisinin transpozesini bulalım.

OUTPUT:

  1    5    9
  2    6    10
  3    7    11
  4    8    12  

Toplama ve Çıkarma (+,-): En az iki matrisi toplamak ya da çıkarmak için kullanılır. İşlemlerin gerçekleştirilebilmesi için matrislerin aynı boyutta olması  ya da matrislerden en az birinin skaler nitelikte olması gerekir.

Hatasız Çıktı

INPUT:

>> X = [1 2 3;4 5 6; 7 8 9]   %X matrisini tanımlayalım.

OUTPUT:

X = 
    1   2   3
    4   5   6
    7   8   9

INPUT:

>> Y = [10 11 12;13 14 15;16 17 18] %Y matrisini tanımlayalım.

OUTPUT:

Y = 
    10   11   12
    13   14   15
    16   17   18

INPUT:

>> X + Y %X ve Y matrislerini toplayıp, sonucunu verecek.

OUTPUT:

       11   13   15
       17   19   21
       23   25   27

INPUT:

>> X - Y %X matrisinden Y matrisini çıkarıp, sonucunu verecek. 

OUTPUT: 
     
       -9   -9   -9 
       -9   -9   -9 
       -9   -9   -9 

Hatalı Çıktı

INPUT:

>> X = [1 2 3;4 5 6]

OUTPUT:

       1    2    3
       4    5    6

INPUT:

>> Y = [7 9;10 11]

OUTPUT:

Y =

    7     9
    10   11 

INPUT:

>> X + Y %Matrislerin boyu aynı olmadığından hata alacağız.

OUTPUT:

Matrix dimensions must agree.

 

Çarpma (*): X*Y , X ve Y matrislerinin çarpımında kullanılır. X  ve Y’den en az biri skaler değilse, X’in sütun sayısı Y’nin satır sayısına eşit olmalıdır.

INPUT:

>> X = [5 7 3;6 8 5;12 2 9]

OUTPUT:

       5     7    3
       6     8    5
       12    2    9

INPUT:

>> Y = [2 5;8 6;4 7]

OUTPUT:

Y =
   
    2   5
    8   6 
    4   7 

INPUT:

>> X * Y

OUTPUT:

       78     88 
       96    113
       76    135

INPUT:

>> %X'in sütun sayısı ile Y'nin satır sayısı aynı. 

inv() komutu: Bir matrisin tersini bulmak için kullanılır.

INPUT:

>> A = [10 15 20;5 8 9;1 3 4]

OUTPUT:

A = 
    10   15   20 
     5    8    9
     1    3    4

INPUT:

>> inv(A) %A matrisinin tersi bulunur.

OUTPUT:

       0.2000      0    -1.0000
      -0.4400   0.8000   0.4000
       0.2800  -0.6000   0.2000

Bölme (/), (\): Sağdan ve soldan bölme olarak ikiye ayrılır. X\Y, Y matrisinin X matrisine bölümüdür. Bu da inv(X)*Y ile aynıdır. X/Y ise X matrisinin  Y matrisine bölümünü ifade eder. Bu da inv(Y)*X ile aynıdır.

INPUT:

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

OUTPUT:

A = 
    1    5    7
    4    3    2
    9    10   6

INPUT:

>> B = [7 8 11;3 17 21;19 23 29]

OUTPUT:

B = 
    7    8    11
    3   17    21
   19   23    29

INPUT:

>> inv(B)*A %Böylece A/B hesaplanır.

OUTPUT:

       0.3377    0.3377    0.0088
       3.2368   -1.7632   -6.5263
      -2.4781    1.5219    5.3772
  

Kuvvet alma (^): Matrislerde kuvvet almak için kullanılır. C=A^B ifadesinde, B eğer skaler ise tekrarlı çarpma yolu ile sonuç hesaplanır. Eğer A skaler ve B matris ise hesaplama işlemi özdeğerler ve özvektörler kullanılarak hesaplanır. A ve B matris ise hata olur.

INPUT:

>> B = [7 8 11;3 17 21;19 23 29]

OUTPUT:

B = 
    7    8    11
    3   17    21
   19   23    29

INPUT:

>> B^2 %B matrisinin 2.kuvvetini hesaplayacağız.

OUTPUT:

       282    445    564
       471    796    999
       753   1210   1533

Son olarak,

< ’ ,  ’<= ’  : küçük, küçük eşit işlemcisi,

‘ > ’ ,  ‘ > = ’  : büyük, büyük eşit işlemcisi,

‘ = ’  : Atama işlemcisi,

‘ == ’  : Mantıksal eşittir işlemcisi,

& ‘ : Mantıksal “ ve” işlemcisi,

‘ | ’ :  Mantıksal “veya ” işlemcisi olarak kullanılır.

 

Matlab’de kullanılan komutlar ve temel fonksiyonlar ile ilgili olan yazıma buradan ulaşabilirsiniz.

MTLBO7JP18125YD368

 

Python Nedir? Kullanım Alanları ve Avantajları Nelerdir?

Bu yazıda sizlere günümüzde bir çok alanda kullanılan ve popüler bir dil olan Python’dan bahsedeceğim. Genel olarak Python nedir, hangi alanlarda kullanılır, kütüphaneleri nelerdir, öğrenme zorluğu nedir? gibi sorulara yanıt bulabilirsiniz. Keyifli okumalar.

Guido van Rossum – Oscon Konferansı, 2006

Python Nedir?

Python 1990 yılında çıkış yapan ve Guido van Rossum tarafından geliştirilen nesne yönelimli, yorumlamalı ve etkileşimli yüksek seviyeli bir dildir.

Python, ismini Guido van Rossum’un çok sevdiği MonthyPython isimli bir komedi grubunun Monty Python’s Flying Circus gösterisinden alır.

Programlama dilleri, insanlar ve makineler arasında bir köprüdür. Bir programlama dilinin makine mantığına yakın olması insanlar tarafından daha zor anlaşılması anlamına gelir. Bu tarz programlama dillerine düşük seviyeli programla dili denir. Assembly dili buna bir örnektir. Yüksek seviyeli diller ise insan mantığına daha yakındır ve bu da bizim bu dili daha kolay anlayabileceğimiz ve kullanabiliceğimiz anlamına gelir.

Python, ABC programlama diline alternatif olarak tasarlanmıştır. Python 1.0 sürümü Ocak 1994, 2.0 sürümü 16 Ekim 2000 ve son olarak 3 Aralık 2008 tarihinden itibaren 3.x serisi yayınlanmaya başlamıştır.

Python Hangi Alanlarda Kullanılır?

Python dilinin kullanıldığı pek çok çalışma alanı vardır. Bunlardan hangisine yönelmek isteyeceğiniz sizin ilginize ve merakınıza bağlıdır.

1. Web geliştirme

Python ile web geliştirmesi yapabilir ya da web sitesi oluşturabilirsiniz. Django ve Flash gibi yazılım iskeletleri’ni(framework) kullanarak sunucuda çalışan Back-End kodları yazabilirsiniz.

2. Veri bilimi

Python makine öğrenmesi, veri analizi ve veri görselleştirme alanlarında kullanılır. Bu alanlarda çok büyük miktarda veriler toplanır, analiz edilir ve işlenir.

Veri bilimcilerin topladıkları çok büyük miktardaki veriler başlangıçta işlenmemiş haldedir. Elde edilen verilen işlenmesi ve analizi için Numpy, Pandas kütüphanelerinden faydalanırlar.

Pandas kütüphanesi sayesinde R gibi istatistik programlarına ihtiyaç duymadan veriler analiz edilebilir.

Numpy bilimsel hesaplamaların hızlıca yapılabildiği basit ve kullanışlı bir matematik kütüphanesidir. Toplanılan, işlenip ve analiz edilen verilerin görselleştirilmesi için Matplotlib ve Seaborn kütüphaneleri kullanılabilir.

Makine öğrenmesinde Pandas, Numpy ve Matplotlib kütüphanelerinin yanı sıra Scikit-learn kütüphanesi de kullanılır. Scikit-learn kütüphanesi sınıflandırma, kümeleme, regresyon ve boyutsallığın azaltılması gibi özelliklere sahiptir.

3. Oyun geliştirme

Python ile insanların çok seveceği ve saatlerce oynayacağı oyunlar yaratabilirsiniz. Oyun endüstrisinde her ne kadar C++, JAVA, C# gibi diller kadar popüler olmasa da Python ile de oyun yazılabilir. Örnek vermek gerekirse günümüzde popüler oyunlardan olan Battlefield 2 ve Civilization IV’de Python dilinden faydalanılmıştır.

Siz Python ile oyun yazarken Pygame, PyKyra, Pyglet, PyOpenGL ve Panda3D gibi kütüphaneleri kullanabilirsiniz.

Yukarıdaki başlıkların haricinde masaüstü arayüz uygulamaları, ağ programlama, sistem yönetimi, yapay zeka ve veritabanı gibi alanlarda Python kullanılır.

Python’ın Avantajları

  • Python açık kaynak kodlu ve ücretsiz bir programdır.

  • Derlemeye gerek yoktur, yorumalı bir dildir.

  • Çok sayıda kütüphane ve fonksiyonlara sahiptir.

  • Kod yazması kolaydır. Başkalarının yazdığı kodlar daha bir şekilde anlaşılır.

  • Farklı platformlarda çalışabilir(Windows, Linux, Mac, vb.).

  • Diğer programlama dillerine göre daha hızlı kod yazılabilir. Bu da zaman yönetimini kolaylaştırır.

Python Kütüphaneleri

Python’da çok sayıda kütüphane ve fonksiyon olduğundan bahsettik. Bu kütüphanelerin sayısı ve işlevi kullanacağınız alanlara göre  değişmektedir. Bu konuya daha sonra detaylı olarak değineceğim. Ancak buradan, Python’ın resmi websitesine giderek standart kütüphane ve fonksiyonları inceleyebilirsiniz.

Python Kullanan Önemli Şirketler

Python’ın çok kullanışlı bir programla dili olmasından dolayı günümüzde büyük şirketler tarafından oldukça tercih edilmektedir.

Bunlar arasında Google, Youtube, BitTorrent, CERN, NASA, Reddit, Zope gibi büyük markalar yer almaktadır.

Python Geliştirme Ortamları(IDE)

Python kullanarak kodlama yaparken kullanabileceğiniz ücretli ve ücretsiz IDE’ler mevcuttur. Ben size ücretsiz olan IDE’lerden bahsetmek istiyorum.

*Herhangi bir önem sırasından bağımsız olarak;

1. Jupyter, 2. Pycharm, 3. IDLE, 4. Spyder, 5. Atom, 6. Eric Python, 7. Thonny, 8. PyDev

Python Öğrenme Zorluğu

Yazının yukarıki kısımlarında da bahsettiğim gibi Python kolay öğrenilebilen, basit, anlaşılır ve sade bir dildir. Bu özellikler Python’ı diğer dillere göre daha avantajlı kılmaktadır.

Yazımı bitirmeden önce sizlere Python ve diğer diller ilgili örnek bir kod bloğu paylaşmak istiyorum.

C++
int main()
(
    printf("Merhaba Dünya");

    return 0;
}
C#
using System;
class MerhabaDunya {
  static void Main() {
    Console.WriteLine("Merhaba Dünya");
  }
}
JAVA
public class Main
{
	public static void main(String[] args) {
		System.out.println("Merhaba Dünya");
	}
}
Python
print('Merhaba Dünya')
PYTN543LSZ03YY221R