Category Archives: Sympy

SymPy – un esempio, anzi la soluzione

sympyRecentemente mi sono occupato di SymPy, con 4 post noiosi tipo “Uh! vediamo quello che fa!“. Qui, qui, qui e qui.
È arrivato il momento di confessare il perché del mio interesse istantaneo appena John D. Cook me ne ha parlato (vedi il primo link).
Quello che m’interssava era di velocizzare un programmino (non a tutti piace il termine ‘script’ ;-)) per la soluzione di equazioni di terzo grado. In realtà sono andato un po’ oltre, parecchio oltre: lo script il programmino di oggi è molto più generale.

Ah, sì! è da finire, mettergli una veste grafica sexy e rendere l’espressione della riga 7 una variabile da leggere in un box. Ma quella è una cosa ordinaria, vero? Anche se fareste bene, come sempre, a tener conto della legge di Hofstadter.

Allora ecco lo script, tutto qui:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from sympy import *

#dati
my_expr = 'x**3 -3 * x**2 + 42' # espressione (senza = 0)
my_sym = 'x'					# risolverla per x

res = solve(my_expr, my_sym)
numres = len(res)
print numres, 'soluzioni\n'

for s in res:
	vs = s.evalf()  # valore di s
	tv = vs.is_real # s è reale e non complesso
	strs = str(s)	# espressione, non troppo lunga
	if len(strs) > 60:
		p = strs.find(' ', 60)
		if p > 0:
			strs = '{0}\n{1}'.format(strs[:p].rstrip(),
			                         strs[p+1:].lstrip())
	print strs, '\n -> ', vs, tv, '\n'

s0

Sembra forse troppo semplice per farci un post. Ma c’è dietro tutto Python e Sympy, e poi è sabato 😀

Sympy – III

sym2

Funzioni trigonometriche

f0

f1

OK, ce ne sono parecchia altre che, come dire, non si usano tutti i giorni.

Equazioni differenziali

f2

Equazioni algebriche

f3

f4

Matrici

f5

ci possono essere anche simboli

f6

Pattern matching

Espressione che non so tradurre 😦

f7

se non ce la fa restituisce None

f8

e si possono escludere certi risultati

f9

Espressione per \LaTeX

f10

f11

Adesso installo pyglet, da http://www.pyglet.org, anzi no dal Sotware Center.

f12

OK, con questo è finito il tutorial. Ora di provare a fare qualcosa di sensato. Prossimamente, forse… 😉 🙂 😀

Sympy – II

Continuo l’esame delle cose che fa Sympy, la prima puntata qui.
Sì lo so, può sembrare noioso ma …, m’interessa, ecco.

sym

Limiti
Immediati usando limit(funzione, variabile, punto)

s1

Derivazione
si usa diff(funzione, variabile)

s2

verifica

s3
e sì, la derivata è il limite del rapporto incrementale, mi sembra di essere tornato in prima elementare! (o si facevano un po dopo queste robe?)

Si può fare anche cose come queste:

s4

Espansione di serie

s5

s6

Sommatorie

s7

s8

Integrali

s9

anche con funzioni non da tutti i giorni

s10

il calcolo

s11

Numeri complessi

s12
C’è roba per un post ancora, prossimamente… 😉

Sympy – I

sympy-1
OK, dopo la ricognizione a volo d’uccello —questa— vediamo di seguire il tutorial disponibile in docs/sympy.org.

Intanto c’è una console isympy:

s0
dove si possono fare cose come questa

s1
Attenzione ai simboli predefiniti, non viene reso il valore numerico in automatico

s2

C’è \infty si scrive oo (sì, c’è un errore ma va bene così ;-))

s3

Le variabili simboliche devono essere dichiarate

s4

ma ne esistono di predefinite nel modulo abc

s5

Al posto di Symbol si può usare symbols

s6

var aggiunge automaticamente i simboli creati

s7

A questo punto si possono fare calcoli simbolici

s8

apart per la scomposizione parziale

s9

s10

together per ricombinare

s11

s12

Non è che l’inizio, prossimamente… forse 😉