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