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$