Eq(...) - linsolve(...) - nonlinsolve(...) - roots(...) - solve(...) - solveset(...)
solve()
Da discutere…
solveset()
>>> import sympy as sp
>>> sp.solveset(x - 2) # Una soluzione reale
{2}
>>> sp.solveset(x**2 - 2) # Due soluzioni reali
{-sqrt(2), sqrt(2)}
>>> sp.solveset(x**2 + 2) # Due soluzioni compl. (coniugate)
{-sqrt(2)*I, sqrt(2)*I}
>>> sp.solveset(x**3 + x**2 + x + 1) # Tre soluzioni
Restituisce un insieme con le soluzioni dell’equazione
>>> sp.solveset(x**2 + y, x)
{-sqrt(-y), sqrt(-y)}
>>> sp.solveset(x**2 + y, y)
{-x**2}
Se compaiono più variabili allora si deve scegliere rispetto a quale si intende risolvere
Eq()
sp.solveset(primo_membro - secondo_membro)
sp.solveset(sp.Eq(primo_membro, secondo_membro))
Se l’equazione è nella forma primo_membro = secondo_membro allora si può scegliere come rappresentarla
La funzione Eq() corrisponde all’operatore di uguaglianza (==) che non funziona con le espressioni simboliche…
roots()
>>> sp.solveset(x**3 + 3*x**2 + 3*x + 1)
{-1}
>>> sp.roots(x**3 + 3*x**2 + 3*x + 1)
{-1:3}
>>> sp.solveset(x**4 + 6*x**3 + 13*x**2 + 12*x + 4)
{-2, -1}
>>> sp.roots(x**4 + 6*x**3 + 13*x**2 + 12*x + 4)
{-2:2, -1:2}
La funzione restituisce un dizionario delle soluzioni e delle loro molteplicità
Sistemi di equazioni
In futuro i sistemi di equazioni si risolveranno utilizzando solveset()…
linsolve()
import sympy as sp
x,y,z = sp.symbols('x y z')
eq1 = x+y+ z-3
eq2 = x+y+2*z-4
eq3 = x+2*y+z-4
sol = sp.linsolve([eq1, eq2, eq3], (x, y, z)) # {(1, 1, 1)}
eq1 = x+y+ z-3
eq2 = x+y+2*z-4
eq3 = x+y+3*z-5
sol = sp.linsolve([eq1, eq2, eq3], (x, y, z)) # {(2-y, y, 1)}
eq1 = x+y+ z-3
eq2 = x+y+2*z-4
eq3 = x+y+3*z-4
sol = sp.linsolve([eq1, eq2, eq3], (x, y, z)) # EmptySet
Risolve sistemi di equazioni lineari.
Restituisce un insieme con le soluzioni.
La funzione risolve anche sistemi lineari espressi in notazione matriciale.
nonlinsolve()
eq1 = x**2+y**2-4
eq2 = y
sol = sp.nonlinsolve([eq1, eq2], (x, y)) # {(-2, 0), (2, 0)}
eq1 = x**2+y**2-4
eq2 = y-1
sol = sp.nonlinsolve([eq1, eq2], (x, y)) # {(-sqrt(3), 1), (sqrt(3), 1)}
Risolve sistemi di equazioni non lineari.
Risolve anche sistemi di equazioni con esponenziali, misti, …
Ha qualche difficoltà con le funzioni trigonometriche… dove funziona meglio solve().