Non è un programma, solo una libreria per gestire i polinomi.
Versione: 0.1
Autore: Michele Lacchia alias (rubik, Python, python, Pythoner, x-reynik-x)
In breve: pypol è una semplice libreria per manipolare polinomi.
Piattaforma: Tutte, basta avere Python installato.
Changelog: ¬¬¬
Licenza: GNU GPL 3
Documentazione: http://pypol.altervista.org/
I sorgenti: qui
Ed ecco qualche esempio:
Purtroppo non sono riuscito a implementare bene __call__ . Come faccio a trovare p di [numero] quando ci sono più variabili?
Versione: 0.1
Autore: Michele Lacchia alias (rubik, Python, python, Pythoner, x-reynik-x)
In breve: pypol è una semplice libreria per manipolare polinomi.
Piattaforma: Tutte, basta avere Python installato.
Changelog: ¬¬¬
Licenza: GNU GPL 3
Documentazione: http://pypol.altervista.org/
I sorgenti: qui
Ed ecco qualche esempio:
Codice:
In [1]: import pypol
In [2]: a = pypol.polynomial('3xy - 3a^2 + 2b')
In [3]: a
Out[3]: - 3a² + 3xy + 2b
In [4]: a.append('-2')
In [5]: a.right_hand_side
Out[5]: -2
In [6]: del a[-1]
In [7]: a.right_hand_side
Out[7]: False
In [8]: a.append('-2')
In [9]: a.letters
Out[9]: ('a', 'b', 'x', 'y')
In [10]: a.powers
Out[10]: <bound method Polynomial.powers of - 3a² + 3xy + 2b - 2>
In [11]: a.powers()
Out[11]: {'a': [2, 0], 'b': [1, 0], 'x': [1, 0], 'y': [1, 0]}
In [12]: a.iscomplete('x')
Out[12]: True
In [13]: a.iscomplete('a')
Out[13]: False
In [14]: a._make_complete('a')
Out[14]: True
In [15]: a.iscomplete('a')
Out[15]: True
In [16]: a.monomials
Out[16]: ((-3, {'a': 2}), (0, {'a': 1}), (3, {'x': 1, 'y': 1}), (2, {'b': 1}), (-2, {}))
In [17]: a
Out[17]: - 3a² + 3xy + 2b - 2
In [18]: a.max_power('a')
Out[18]: 2
In [19]: a.min_power('a')
Out[19]: 0
In [20]: a.isordered('a')
Out[20]: True
In [21]: b = pypol.polynomial('3a - 1')
In [22]: b.zeros
Out[22]: ()
In [23]: b.print_format = False
In [24]: b
Out[24]: + 3a - 1
In [25]: b.append('2x2')
In [26]: b
Out[26]: + 2x^2 + 3a - 1
In [27]: b.print_format = True
In [28]: b
Out[28]: + 2x² + 3a - 1
In [47]: p = pypol.Polynomial(((3, {'a': 2}), (-2, {'a': 1}), (2, {})))
In [48]: p
Out[48]: + 3a² - 2a + 2
In [49]: a
Out[49]: - 3a² + 3xy + 2b - 2
In [50]: p
Out[50]: + 3a² - 2a + 2
In [51]: a + p
Out[51]: + 3xy + 2b - 2a
In [52]: a - p
Out[52]: - 6a² + 3xy + 2b + 2a - 4
In [53]: a * p
Out[53]: - 9aⴠ+ 6a³ + 9a²xy + 6a²b - 12a² - 6axy + 6xy - 4ab + 4b + 4a - 4
In [55]: p(2)
Out[55]: 10
In [60]: pp = pypol.polynomial('3x4 - 2x3 + x - 4')
In [61]: ppp = pypol.polynomial('x - 2')
In [62]: divmod(pp, ppp)
Out[62]: (+ 3x³ + 4x² + 8x + 17, + 30)
In [63]: c, d = divmod(pp, ppp) # Quoziente e resto
In [65]: c * ppp + d
Out[65]: + 3xⴠ- 2x³ + x - 4
In [66]: c * ppp + d == pp # La prova
Out[66]: True
Purtroppo non sono riuscito a implementare bene __call__ . Come faccio a trovare p di [numero] quando ci sono più variabili?