SymPy - Çözücüler

= Ve == sembolleri Python'da atama ve eşitlik operatörleri olarak tanımlandığından, sembolik denklemleri formüle etmek için kullanılamazlar. SymPy, bir denklem oluşturmak için Eq () işlevi sağlar.

>>> from sympy import * 
>>> x,y=symbols('x y') 
>>> Eq(x,y)

Yukarıdaki kod parçacığı, aşağıdaki ifadeye eşdeğer bir çıktı verir -

x = y

X = y mümkün olduğundan ve ancak xy = 0 ise, yukarıdaki denklem şu şekilde yazılabilir:

>>> Eq(x-y,0)

Yukarıdaki kod parçacığı, aşağıdaki ifadeye eşdeğer bir çıktı verir -

x − y = 0

SymPy'deki çözücü modülü, prototipi aşağıdaki gibi olan soveset () işlevini sağlar -

solveset(equation, variable, domain)

Alan adı varsayılan olarak S.Complexes'tir. Solveset () fonksiyonunu kullanarak bir cebirsel denklemi aşağıdaki gibi çözebiliriz -

>>> solveset(Eq(x**2-9,0), x)

Aşağıdaki çıktı elde edilir -

{−3, 3}

>>> solveset(Eq(x**2-3*x, -2),x)

Aşağıdaki çıktı, yukarıdaki kod parçacığı çalıştırıldıktan sonra elde edilir -

{1,2}

Solveset'in çıktısı, çözümlerin FiniteSet'idir. Çözüm yoksa, bir EmptySet döndürülür

>>> solveset(exp(x),x)

Aşağıdaki çıktı, yukarıdaki kod parçacığı çalıştırıldıktan sonra elde edilir -

$\varnothing$

Doğrusal Denklem

Doğrusal denklemleri çözmek için linsolve () fonksiyonunu kullanmalıyız.

Örneğin, denklemler aşağıdaki gibidir -

xy = 4

x + y = 1

>>> from sympy import * 
>>> x,y=symbols('x y') 
>>> linsolve([Eq(x-y,4),Eq( x + y ,1) ], (x, y))

Aşağıdaki çıktı, yukarıdaki kod parçacığı çalıştırıldıktan sonra elde edilir -

$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$

Linsolve () işlevi, matris biçiminde ifade edilen doğrusal denklemleri de çözebilir.

>>> a,b=symbols('a b') 
>>> a=Matrix([[1,-1],[1,1]]) 
>>> b=Matrix([4,1]) 
>>> linsolve([a,b], (x,y))

Yukarıdaki kod parçacığını yürütürsek aşağıdaki çıktıyı alırız -

$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$

Doğrusal olmayan denklem

Bu amaçla nonlinsolve () işlevini kullanıyoruz. Bu örnek için denklemler -

a 2 + a = 0 ab = 0

>>> a,b=symbols('a b') 
>>> nonlinsolve([a**2 + a, a - b], [a, b])

Yukarıdaki kod parçacığını yürütürsek aşağıdaki çıktıyı alırız -

$\lbrace(-1, -1),(0,0)\rbrace$

diferansiyel denklem

İlk olarak, cls = Function'ı symbols işlevine geçirerek tanımlanmamış bir işlev oluşturun. Diferansiyel denklemleri çözmek için dsolve kullanın.

>>> x=Symbol('x') 
>>> f=symbols('f', cls=Function) 
>>> f(x)

Aşağıdaki çıktı, yukarıdaki kod parçacığı çalıştırıldıktan sonra elde edilir -

f(x)

Burada f (x) değerlendirilmemiş bir fonksiyondur. Türevi aşağıdaki gibidir -

>>> f(x).diff(x)

Yukarıdaki kod parçacığı, aşağıdaki ifadeye eşdeğer bir çıktı verir -

$\frac{d}{dx}f(x)$

Önce aşağıdaki diferansiyel denkleme karşılık gelen Eq nesnesini oluşturuyoruz

>>> eqn=Eq(f(x).diff(x)-f(x), sin(x)) 
>>> eqn

Yukarıdaki kod parçacığı, aşağıdaki ifadeye eşdeğer bir çıktı verir -

$-f(x) + \frac{d}{dx}f(x)= \sin(x)$

>>> dsolve(eqn, f(x))

Yukarıdaki kod parçacığı, aşağıdaki ifadeye eşdeğer bir çıktı verir -

$f(x)=(c^1-\frac{e^-xsin(x)}{2}-\frac{e^-xcos(x)}{2})e^x$