SymPy - Penyederhanaan
Sympy memiliki kemampuan yang kuat untuk menyederhanakan ekspresi matematika. Ada banyak fungsi di SymPy untuk melakukan berbagai macam penyederhanaan. Fungsi umum yang disebut simplify () ada yang mencoba untuk sampai pada bentuk ekspresi yang paling sederhana.
menyederhanakan
Fungsi ini didefinisikan dalam modul sympy.simplify. simplify () mencoba menerapkan heuristik cerdas untuk membuat ekspresi input "lebih sederhana". Kode berikut menunjukkan ekspresi sederhana $ sin ^ 2 (x) + cos ^ 2 (x) $.
>>> from sympy import *
>>> x=Symbol('x')
>>> expr=sin(x)**2 + cos(x)**2
>>> simplify(expr)
Potongan kode di atas memberikan output berikut -
1
memperluas
Expand () adalah salah satu fungsi penyederhanaan yang paling umum di SymPy, digunakan dalam memperluas ekspresi polinomial. Misalnya -
>>> a,b=symbols('a b')
>>> expand((a+b)**2)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$a^2 + 2ab + b^2$
>>> expand((a+b)*(a-b))
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$a^2 - b^2$
Fungsi expand () membuat ekspresi lebih besar, bukan lebih kecil. Biasanya demikian, tetapi sering kali ekspresi akan menjadi lebih kecil saat memanggil expand () padanya.
>>> expand((x + 1)*(x - 2) - (x - 1)*x)
Potongan kode di atas memberikan output berikut -
-2
faktor
Fungsi ini mengambil polinomial dan memfaktorkannya menjadi faktor yang tidak dapat direduksi di atas bilangan rasional.
>>> x,y,z=symbols('x y z')
>>> expr=(x**2*z + 4*x*y*z + 4*y**2*z)
>>> factor(expr)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$z(x + 2y)^2$
>>> factor(x**2+2*x+1)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$(x + 1)^2$
Fungsi faktor () adalah kebalikan dari expand (). Setiap faktor yang dikembalikan oleh faktor () dijamin tidak dapat direduksi. Fungsi factor_list () mengembalikan keluaran yang lebih terstruktur.
>>> expr=(x**2*z + 4*x*y*z + 4*y**2*z)
>>> factor_list(expr)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
(1, [(z, 1), (x + 2*y, 2)])
mengumpulkan
Fungsi ini mengumpulkan istilah tambahan dari suatu ekspresi sehubungan dengan daftar ekspresi hingga pangkat dengan eksponen rasional.
>>> expr=x*y + x - 3 + 2*x**2 - z*x**2 + x**3
>>> expr
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$x^3 + x^2z + 2x^2 + xy + x - 3$
Fungsi collect () pada ekspresi ini menghasilkan sebagai berikut -
>>> collect(expr,x)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$x^3 + x^2(2 - z) + x(y + 1) - 3$
>>> expr=y**2*x + 4*x*y*z + 4*y**2*z+y**3+2*x*y
>>> collect(expr,y)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$Y^3+Y^2(x+4z)+y(4xz+2x)$
membatalkan
Fungsi cancel () akan menggunakan fungsi rasional dan memasukkannya ke dalam bentuk kanonis standar, p / q, di mana p dan q adalah polinomial yang diperluas tanpa faktor persekutuan. Koefisien utama p dan q tidak memiliki penyebut, yaitu bilangan bulat.
>>> expr1=x**2+2*x+1
>>> expr2=x+1
>>> cancel(expr1/expr2)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$x+1$
>>> expr = 1/x + (3*x/2 - 2)/(x - 4)
>>> expr
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$\frac{\frac{3x}{2} - 2}{x - 4} + \frac{1}{x}$
>>> cancel(expr)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$\frac{3x^2 - 2x - 8}{2x^2 - 8}$
>>> expr=1/sin(x)**2
>>> expr1=sin(x)
>>> cancel(expr1*expr)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$\frac{1}{\sin(x)}$
trigsimp
Fungsi ini digunakan untuk menyederhanakan identitas trigonometri. Perlu diperhatikan bahwa konvensi penamaan untuk fungsi trigonometri terbalik adalah dengan menambahkan a di depan nama fungsi. Misalnya, invers cosinus, atau arc cosinus, disebut acos ().
>>> from sympy import trigsimp, sin, cos
>>> from sympy.abc import x, y
>>> expr = 2*sin(x)**2 + 2*cos(x)**2
>>> trigsimp(expr)
2
Fungsi trigsimp menggunakan heuristik untuk menerapkan identitas trigonometri yang paling sesuai.
PowerSimp
Fungsi ini mengurangi ekspresi yang diberikan dengan menggabungkan pangkat dengan basis dan eksponen yang serupa.
>>> expr=x**y*x**z*y**z
>>> expr
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$x^y x^z y^z$
>>> powsimp(expr)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$x^{y+z} y^z$
Anda dapat membuat powsimp () hanya menggabungkan basis atau hanya menggabungkan eksponen dengan mengubah gabung = 'basis' atau gabung = 'exp'. Secara default, gabungkan = 'semua', yang melakukan keduanya. Jika gaya True maka basis akan digabungkan tanpa memeriksa asumsi.
>>> powsimp(expr, combine='base', force=True)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$x^y(xy)^z$
combsimp
Ekspresi kombinatorial yang melibatkan faktorial dan binomial dapat disederhanakan dengan menggunakan fungsi combsimp (). SymPy menyediakan fungsi faktorial ()
>>> expr=factorial(x)/factorial(x - 3)
>>> expr
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$\frac{x!}{(x - 3)!}$
Untuk menyederhanakan ekspresi kombinatorial di atas kita menggunakan fungsi combsimp () sebagai berikut -
>>> combsimp(expr)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$x(x-2)(x-1)$
Binomial (x, y) adalah banyaknya cara untuk memilih y item dari sekumpulan x item yang berbeda. Itu juga sering ditulis sebagai xCy.
>>> binomial(x,y)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$(\frac{x}{y})$
>>> combsimp(binomial(x+1, y+1)/binomial(x, y))
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$\frac{x + 1}{y + 1}$
logcombine.dll
Fungsi ini mengambil logaritma dan menggabungkannya menggunakan aturan berikut -
- log (x) + log (y) == log (x * y) jika keduanya positif
- a * log (x) == log (x ** a) jika x positif dan a nyata
>>> logcombine(a*log(x) + log(y) - log(z))
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$a\log(x) + \log(y) - \log(z)$
Jika parameter gaya dari fungsi ini disetel ke True maka asumsi di atas akan dianggap tetap jika tidak ada asumsi yang diterapkan pada suatu kuantitas.
>>> logcombine(a*log(x) + log(y) - log(z), force=True)
Potongan kode di atas memberikan keluaran yang setara dengan ekspresi di bawah ini -
$\log\frac{x^a y}{z}$