SymPy - Pemecah
Karena simbol = dan == didefinisikan sebagai operator tugas dan persamaan dalam Python, mereka tidak dapat digunakan untuk merumuskan persamaan simbolik. SymPy menyediakan fungsi Persamaan () untuk menyiapkan persamaan.
>>> from sympy import *
>>> x,y=symbols('x y')
>>> Eq(x,y)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
x = y
Karena x = y dimungkinkan jika dan hanya jika xy = 0, persamaan di atas dapat ditulis sebagai -
>>> Eq(x-y,0)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
x − y = 0
Modul solver di SymPy menyediakan fungsi soveset () yang prototipe-nya adalah sebagai berikut -
solveset(equation, variable, domain)
Domain secara default adalah S.Complexes. Menggunakan fungsi solveset (), kita dapat menyelesaikan persamaan aljabar sebagai berikut -
>>> solveset(Eq(x**2-9,0), x)
Output berikut diperoleh -
{−3, 3}
>>> solveset(Eq(x**2-3*x, -2),x)
Output berikut diperoleh setelah menjalankan cuplikan kode di atas -
{1,2}
Output dari solveset adalah FiniteSet dari solusi. Jika tidak ada solusi, EmptySet dikembalikan
>>> solveset(exp(x),x)
Output berikut diperoleh setelah menjalankan cuplikan kode di atas -
$\varnothing$
Persamaan linier
Kita harus menggunakan fungsi linsolve () untuk menyelesaikan persamaan linier.
Misalnya persamaannya adalah sebagai berikut -
xy = 4
x + y = 1
>>> from sympy import *
>>> x,y=symbols('x y')
>>> linsolve([Eq(x-y,4),Eq( x + y ,1) ], (x, y))
Output berikut diperoleh setelah menjalankan cuplikan kode di atas -
$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$
Fungsi linsolve () juga dapat menyelesaikan persamaan linier yang dinyatakan dalam bentuk matriks.
>>> a,b=symbols('a b')
>>> a=Matrix([[1,-1],[1,1]])
>>> b=Matrix([4,1])
>>> linsolve([a,b], (x,y))
Kami mendapatkan output berikut jika kami menjalankan cuplikan kode di atas -
$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$
Persamaan non-linier
Untuk tujuan ini, kami menggunakan fungsi nonlinsolve (). Persamaan untuk contoh ini -
a 2 + a = 0 ab = 0
>>> a,b=symbols('a b')
>>> nonlinsolve([a**2 + a, a - b], [a, b])
Kami mendapatkan output berikut jika kami menjalankan cuplikan kode di atas -
$\lbrace(-1, -1),(0,0)\rbrace$
persamaan diferensial
Pertama, buat fungsi tak terdefinisi dengan meneruskan cls = Fungsi ke fungsi simbol. Untuk menyelesaikan persamaan diferensial, gunakan dsolve.
>>> x=Symbol('x')
>>> f=symbols('f', cls=Function)
>>> f(x)
Output berikut diperoleh setelah menjalankan cuplikan kode di atas -
f(x)
Di sini f (x) adalah fungsi yang tidak dievaluasi. Turunannya adalah sebagai berikut -
>>> f(x).diff(x)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$\frac{d}{dx}f(x)$
Pertama-tama kita membuat objek Persamaan yang sesuai dengan persamaan diferensial berikut
>>> eqn=Eq(f(x).diff(x)-f(x), sin(x))
>>> eqn
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$-f(x) + \frac{d}{dx}f(x)= \sin(x)$
>>> dsolve(eqn, f(x))
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$f(x)=(c^1-\frac{e^-xsin(x)}{2}-\frac{e^-xcos(x)}{2})e^x$