Logo Logo
  • Ana Sayfa
  • Hakkında
  • Kategoriler
    • Genel
    • İstatistik
    • Makine Öğrenme
    • Model Geliştirme
    • Sağlık
    • Teknoloji
  • Tüm Yazılarım
  • İletişim

İletişim

  • Email buluttevfik@gmail.com

Site Haritası

  • Ana Sayfa
  • Hakkında
  • İletişim

Sosyal Medya Adresleri

Pyhton’da Eşitliklerin Yazılması ve Çözümü Üzerine Bir Vaka Çalışması: A Case Study on Writing and Solving Equations in Python

  • ANA SAYFA
  • Blog Details
Eylül 3 2020
  • İstatistik

Bilindiği üzere matematiksel ifadeleri göstermek için, diğer bir ifadeyle matematik diliyle konuşabilmek için yaygın bir şekilde matematik sembollerinden yararlanırız. Bu çalışmada Python’da matematik sembollerinin yazımı, basit, birinci, ikinci, üçüncü ve dördüncü dereceden eşitliklerin çözümü üzerine olabildiğince yalın bir dille uygulamalar yaparak konu alanında farkındalık oluşturmak istedim.

İlk olarak matematiksel ifadelerin ve denklerim oluşturulmasına, ardından ise eşitliklerin çözümü üzerine uygulamalara yer verilecektir. Uygulamaları Python programlama dili kullanarak Jupiter Notebook’ları üzerinde yaptım.

Matematiksel ifadeler Oluşturma ve Denklem Yazımı

İfadeler ve denklem yazımında başına # simgesi ilave ederek ile yorumlara yer verilmiş olup, yorumlar aşağıda yazılan Python kod bloklarının içerinde sunulmuştur.

Yüklenecek kütüphaneler (modüller)

from sympy import symbols
#yada 
from sympy import * # bu ifade ile sympy modülü ile birlikte bu modülle bağlantılı tüm modülleri yüklemiş oluyoruz. Aslında bu ifadeyi yazmak daha efektif görünüyor.
from sympy.solvers import solve #problem çözümleri için
#toplam (sigma) ve faktöriyeller için
from sympy.abc import i, k, m, n, x
from sympy import Sum, factorial, oo, IndexedBase, Function

Şimdi basit ifadelerle başlayabiliriz. Aşağıda yazılan kod bloğunda ilk olarak semboller tanımlanmıştır.

x, y = symbols('x y')
x, y

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuç aşağıda verilmiştir.

(𝑥, 𝑦)

Şimdi yukarıdaki tanımladığımız sembolleri aşağıdaki kod bloğunda ifade olarak belirleyelim.

cozum = 7*x + 4*y
cozum

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuç aşağıda verilmiştir.

7𝑥+4𝑦

Şimdi oluşturduğumuz ifadede aşağıda yazılan kod bloğunda .subs eklenti komutu ile x yerine 5’i koyalım. Aslında burada denklemde şunu yapmak istiyoruz: 7(5) + 4y = 4y + 35 . Eğer burada cozum.subs(y, 5) olsaydı y’nin yerine 5’i alarak 4 ile çarpacaktır.

cozum.subs(x, 5)#x'in yerine 5'in koyulması

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuç aşağıda verilmiştir.

4𝑦+35

Denklem oluşturmada sembolleri genişleterek eşitlikler oluşturabiliriz. Burada bir sınırlama bulunmamaktadır. Aşağıda yazılan kod bloğunda bunu açıkça görebilirsiniz.

x, y, z, t, u = symbols('x y z, t, u')
( x**3 - x*y + 3*x + 2*t + u )/y**5 

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen eşitlik aşağıda verilmiştir.

Şimdi yapılan işi biraz zorlaştırarak bir üst level’a 🙂 çıkalım. Sembollerimiz burada x, y, z, t olsun. Oluşturduğumuz denklemiz ise 6x + 5y – 10z + 3t‘tir. Aşağıda yazılan kod bloğunda yazılan ifade.subs(y, 3*x**2 + z**(-6)) ile denklemimizde 6x + 5(3𝑥2) + 5(1/z6) – 10z + 3t =3𝑡+15𝑥2+6𝑥−10𝑧+5/𝑧6 ifadesini elde etmek istiyoruz.

x, y, z, t = symbols('x y z t')#sembollerimiz
ifade = 6*x + 5*y -10*z + 3*t #denklemimiz
ifade1 = ifade.subs(y, 3*x**2 + z**(-6))
ifade1

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuç aşağıda verilmiştir.

Eğer ifadeleri kök içerisinde verecek olursak şöyle yazmamız gerekirdi. Bu durumda sadece sqrt() fonksiyonunu kullanmamız gerekecekti aşağıda görüleceği üzere..

x, y, z, t = symbols('x y z t')
ifade = 6*x + 5*y -10*z + 3*t
ifade1 = ifade.subs(y, 3*x**2 + z**(-6))
sqrt(ifade1)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen eşitlik aşağıda verilmiştir.

Aşağıda yazdığım kod bloğu ile matris de oluşturalım. Yapılan örnekte 2×4 düzeninde bir matris oluşturulmuştur.

init_printing(use_unicode=True)

Matrix([[0, -8], [x, y], [5, 10], [0, -8]])

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 4×2 düzeninde, yani 4 satır ve 2 sütundan oluşan matris aşağıda verilmiştir.

Alternatif olarak daha yüksek düzenlerde daha kolay matris de üretebiliriz. Aşağıda yazılan kod bloğunda 6×5 (6 satır, 5 sütun) düzeninde matris üretilmiştir.

k = MatrixSymbol('k', 6, 5)#6x5 düzeninde
Matrix(k)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 6×5 düzeninde matris aşağıda verilmiştir.

Şimdi de kare düzeninde iki matris oluşturarak çarpımını verelim.

k = MatrixSymbol('k', 3, 3)#3x3 düzeninde
l = MatrixSymbol('l', 3, 3)#3x3 düzeninde
ifade=k*l
Matrix(ifade)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen matris çarpım düzeni aşağıda verilmiştir.

Oluşturulan 3×3 düzenindeki matrislerin çarpımı verildikten sonra şimdi de transpozunu alalım. Eşitlikte kullanılan T (transposition) parametresi transpozu göstermektedir. Burada k matrisinin transpozu alınmış ardından l matrisi ile çarpılmıştır.

k = MatrixSymbol('k', 3, 3)#3x3 düzeninde
l = MatrixSymbol('l', 3, 3)#3x3 düzeninde
ifade=(k.T)*l#Burada T parametresi matrisin tranpozunu göstermektedir.
Matrix(ifade)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen yeni matris düzeni aşağıda verilmiştir.

Şimdi ise sigma (∑) semboli, yani toplam sembolünü kullanarak iadeler üretelim.

Sum(k, (k, 1, m))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen ifade aşağıda verilmiştir. Burada aslında oluşturulan ifade ile açmak gerekirse 1 + 2 + 3 + 4 + 5,…,m = mx(m+1)/2‘yi göstermiş oluyoruz.

Eğer toplam sembolinde k’tan artı sonsuz (∞)‘a giden bir toplama işlemi yapacaksak bu durumda Sum(k, (k, 1, m)) ifadesinde m yerine oo yazıyoruz.

Sum(x**k, (k, 0, oo))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen ifade aşağıda verilmiştir.

Sonlu bir m katsayısı üzerinden giderek örnek bir uygulama yapalım çözümüyle birlikte. 1’den 10’a kadar (10 dahil) sayılarının toplamını hesaplayalım. Bu işlemi Sum(k, (k, 1, 10)) fonksiyonunun sonuna .doit().evalf() bileşenlerini ilave ederek yapıyoruz.

Sum(k, (k, 1, 10)).doit().evalf()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen sonuç 55’tir.

Matematiksel Basit Eşitliklerin Çözümü

Bu kısımda basit eşitliklerin yazımı ile birlikte çözümünü hep birlikte ele alacağız.

İlk olarak 9𝑥+93=0 eşitliğini oluşturarak çözüm kümesini bulalım.

x= symbols('x ')
esitlik = Eq(9*x - 27 + 120)#9𝑥+93=0
cozum = solve((esitlik),(x))
cozum#[-31/3]

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denkleme (eşitliğe) ait elde edilen çözüm kümesi aşağıda verilmiştir..

[-31/3]

Aynı çözüme aşağıda yazılan kod bloğu ile de ulaşılabilir, belirtmekte fayda var.

x= Symbol('x')
cozum = solve(9*x - 27 + 120,x)
cozum#[-31/3]

Şimdi de birinci dereceden iki denklem oluşturup sonuçlarını print() edelim. İlk denklemimiz 2𝑥−4𝑦+7=0, ikinci denklemimiz 𝑥+𝑦−5=0 olsun. Bu iki eşitlikte x ve y’nin çözüm kümelerini bulalım.

x, y = symbols('x y')
e1 = Eq(2*x - 4*y + 7)
e2 = Eq(x + y - 5)
cozum = solve((e1, e2),(x, y))
print(f'Denklemin çözümünde x = {cozum[x]}, y = {cozum[y]}')

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denklemlerin çözüm kümesi aşağıda verilmiştir.

Denklemin çözümünde x = 13/6, y = 17/6

Şimdi de üç denklem oluşturup bunların çözüm kümesini bulalım. İlk denklemimiz 2𝑥−4𝑦+9𝑧+7=0, ikinci denklemimiz 𝑥+𝑦+3𝑧−5=0, üçüncü denklemimiz ise 4𝑧+10=0 olsun. Bu üç eşitlikte x, y ve z ‘nin çözüm kümelerini bulalım.

x, y, z = symbols('x y z')
e1 = Eq(2*x - 4*y + 9*z + 7)#2𝑥−4𝑦+9𝑧+7
e2 = Eq(x + y - 5 + 3*z)#𝑥+𝑦+3𝑧−5=0
e3 = Eq(10 + 4*z)#4𝑧+10

cozum = solve((e1, e2, e3),(x, y, z))

print(f'Denklemin çözümünde x = {cozum[x]}, y = {cozum[y]}, z = {cozum[z]}')

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denklemlerin çözüm kümesi aşağıda verilmiştir. Denklemin çözümünde x = 131/12, y = 19/12, z = -5/2’dir.

Denklemin çözümünde x = 131/12, y = 19/12, z = -5/2

İkinci, Üçüncü ve Dördüncü Dereceden Denklemlerin Çözümü

Bu kısımda 2., 3., ve 4. derece eşitliklerin çözümü üzerine uygulamalar yapılmıştır. 2. dereceden bir eşitlik oluşturarak ilk örneğimizi yapalım. Eşitliğimiz 𝑥2−25 = 0 olsun. Burada denklemin çözüm kümesini bulalım..

x = Symbol('x')
solve(x**2 - 25, x)

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denkleme ilişkin çözüm kümesi [−5, 5] olup aşağıda verilmiştir.

[−5, 5]

Şimdi de 3. derece bir denklem oluşturup onun köklerine bakalım. Eşitliğimiz 𝑥3−𝑥2−625 = 0 olsun. Burada denklemin çözüm kümesini bulalım.

x = Symbol('x')
solve(x**3 - x**2 - 625, x)

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denkleme ilişkin çözüm kümesi aşağıda verilmiştir.

Son olarak 4. derece bir denklem oluşturalım ve bunun çözümü biraz daha kolay olsun :). Eşitliğimiz 𝑥4−1024 = 0′dır. Burada denklemin çözüm kümesini bulalım.

x = Symbol('x')
solve(x**4  - 1024, x)

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denkleme ilişkin çözüm kümesi aşağıda verilmiştir..

Özetle Python’da yapılan çalışmayla birinci, ikinci, üçüncü ve dördüncü dereceden eşitliklerin yazımı ve çözümü üzerine uygulamalar yaparak konu alanında farkındalık oluşturulması amaçlanmıştır. Eşitliklerin Python programlama dilinde yazılması R programlama dilinden daha kolay olduğunu söyleyebilirim, denemesi bedava 🙂 .

Faydalı olması ve farkındalık oluşturması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla.

Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.

Note: It can not be cited or copied without referencing.

Yararlanılan Kaynaklar

  • https://www.python.org/
  • https://docs.sympy.org/latest/tutorial/manipulation.html
  • https://docs.sympy.org/latest/modules/core.html#module-sympy.core.expr
  • https://www.sympy.org/en/index.html
  • http://www.cfm.brown.edu/people/dobrush/am33/SymPy/architecture.html
  • https://docs.sympy.org/latest/tutorial/basic_operations.html
  • https://pythonforundergradengineers.com/sympy-expressions-and-equations.html
  • https://live.sympy.org/
  • https://docs.sympy.org/latest/modules/matrices/expressions.html
  • https://docs.sympy.org/latest/modules/solvers/solvers.html
Önceki yazı Sonraki Yazı
Python

Yorum Yaz Cevabı iptal et

Son Yazılar

  • Kanada Sağlık Sisteminde Bekleme Süreleri
  • Araştırma Metodolojisi Notları-II
  • Araştırma Metodolojisi Notları-I
  • Microsoft Excel’de Bulut Endeks-Beta [BE-β] Simülasyonu
  • R’da Statik ve Dinamik Haritalama Vaka Çalışmaları: Türkiye Örneği

Son Yorumlar

  1. Küresel İnovasyon Endeksi 2021 Yılı Raporu ve Türkiye - winally.com - Küresel İnovasyon Endeksi’nde Türkiye Ne Durumda?
  2. R’da Birliktelik Kuralları | canözkan - Apriori Algoritması Üzerine Bir Vaka Çalışması: A Case Study on Apriori Algorithm
  3. Tevfik BULUT - Python’da Şans Oyunları Perspektifinden Olasılık : Probability from Perspective of the Chance Games in Python
  4. Ahmet Aksoy - Python’da Şans Oyunları Perspektifinden Olasılık : Probability from Perspective of the Chance Games in Python
  5. Tevfik BULUT - Z Tablosuna Göre Güven Aralığının Hesaplanmasına Yönelik Bir Simülasyon Çalışması: A Simulation Study for Calculating Confidence Interval by Z Table

Arşivler

  • Ocak 2023
  • Ekim 2022
  • Eylül 2022
  • Nisan 2022
  • Mart 2022
  • Ekim 2021
  • Eylül 2021
  • Ağustos 2021
  • Temmuz 2021
  • Haziran 2021
  • Mayıs 2021
  • Nisan 2021
  • Şubat 2021
  • Ocak 2021
  • Aralık 2020
  • Kasım 2020
  • Ekim 2020
  • Eylül 2020
  • Ağustos 2020
  • Temmuz 2020
  • Haziran 2020
  • Mayıs 2020
  • Nisan 2020
  • Mart 2020
  • Şubat 2020
  • Ocak 2020
  • Aralık 2019
  • Kasım 2019
  • Ekim 2019
  • Eylül 2019
  • Ağustos 2019
  • Mayıs 2019
  • Şubat 2019
  • Aralık 2018
  • Eylül 2018
  • Ağustos 2018
  • Temmuz 2018
  • Mayıs 2018
  • Nisan 2018
  • Ekim 2017
  • Temmuz 2017
  • Haziran 2017
  • Mayıs 2017
  • Ocak 2017

Kategoriler

  • Genel
  • İstatistik
  • Makine Öğrenme
  • Model Geliştirme
  • Sağlık
  • Teknoloji

Kategoriler

  • Genel
  • İstatistik
  • Makine Öğrenme
  • Model Geliştirme
  • Sağlık
  • Teknoloji

Etiketler

Accuracy Basit Tesadüfi Örnekleme Bernoulli Olasılık Dağılımı Confusion Matrix Coronavirus Doğruluk Doğruluk Oranı Dünya Sağlık Örgütü EDA Epidemi Epidemiyology Epidemiyoloji Exploratory Data Analysis Exploratory Data Analysis (EDA) F1 Forecast Keşifsel Veri Analizi Kitle Olasılık Fonksiyonu Koronavirüs Koronavirüs Salgını Olasılık Olasılıklı Örneklem OSB Pandemi Point Estimation Point Forecast Prevalance Prevalans Probability Sampling R Recall Salgın Sağlık Bakanlığı Simple Random Sampling Tahmin TBATS TURKEY TÜRKİYE Veri Madenciliği WHO World Health Organization Yapay Zeka ÇKKV Örneklem Örneklem Büyüklüğü
Logo

Burada, gazete ve dergilerde yayınlanan çalışmalarımın tamamı çalışmakta olduğum kurumdan bağımsız olarak özel hayatımda yaptığım çalışmalardır. Dolayısıyla, burada yer alan çalışmalardan emeğe saygı adına kaynak gösterilmesi suretiyle azami ölçüde herkes yararlanabilir.

Site Haritası

  • Ana Sayfa
  • Hakkında
  • Blog
  • İletişim

Linkler

  • winally.com

Bana Ulaşın

Bu sayfa, bazı temel bilgilerin ve bir iletişim formunun yer aldığı bir iletişim sayfasıdır. Suç teşkil edecek, yasadışı, tehditkar, rahatsız edici, hakaret ve küfür içeren, aşağılayıcı, küçük düşürücü, kaba, müstehcen, ahlaka aykırı, kişilik haklarına zarar verici ya da benzeri niteliklerde içeriklerden doğan her türlü mali, hukuki, cezai, idari sorumluluk içeriği gönderen Kişilere aittir.

  • Email: buluttevfik@gmail.com

© Copyright 2022 Tevfik Bulut