#5679: fix a bug in solve and polynomial generators
----------------------+-----------------------------------------------------
Reporter: was | Owner: burcin
Type: defect | Status: new
Priority: major | Milestone: sage-3.4.1
Component: calculus | Keywords:
----------------------+-----------------------------------------------------
{{{
Some code that used to work in sage-3.0.6 (or something close like
3.0.3), now break with this error message:
>>> R.<x0,x1,x2> = PolynomialRing(RR, 3)
>>> solve([symbolic_expression(x0) == 0], x0, x1, x2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/anakha/.sage/sage_notebook/worksheets/admin/12/code/30.py",
line 8, in <module>
solve(x0 == _sage_const_0 , x0, x1, x2)
File "/Volumes/Place/anakha/Applications/sage/local/lib/python2.5/site-
packages/SQLAlchemy-0.4.6-py2.5.egg/",
line 1, in <module>
File "/Volumes/Place/anakha/Applications/sage-3.4/local/lib/python2.5
/site-packages/sage/calculus/equations.py",
line 1563, in solve
raise TypeError, "%s is not a valid variable."%v
TypeError: not all arguments converted during string formatting
The printing problem is due to the fact that Polynomials have an
implicit conversion to sequence types triggered by this code:
try:
variables = tuple(args[0])
except TypeError:
variables = args
near the start of solve(), (Hint: tuple(args[0]) works if the first
variable is a PolynomialElement and thus the rest of the vars are
ignored and you get the bogus ((1.0000000, x0),) tuple as variables)
If that is fixed, then you get this message which does not help much more:
>>> R.<x0,x1,x2> = PolynomialRing(RR, 3)
>>> solve([symbolic_expression(x0) == 0], x0, x1, x2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/anakha/.sage/sage_notebook/worksheets/admin/12/code/55.py",
line 8, in <module>
solve(x0 == _sage_const_0 , x0, x1, x2)
File "/Volumes/Place/anakha/Applications/sage/local/lib/python2.5/site-
packages/SQLAlchemy-0.4.6-py2.5.egg/",
line 1, in <module>
File "/Users/anakha/.sage/sage_notebook/worksheets/admin/12/code/54.py",
line 22, in solve
raise TypeError, "%s is not a valid variable."%v
TypeError: x0 is not a valid variable.
Furthermore, if you disable the type checking that is done on the
input variables, then it works as before:
>>> R.<x0,x1,x2> = PolynomialRing(RR, 3)
>>> solve([symbolic_expression(x0) == 0], x0, x1, x2)
[[x0 == 0, x1 == r10, x2 == r9]]
I don't think killing the typecheck is the way to go, but maybe
extending it to cover the polynomial elements.
Or maybe another better way to do this has come up.
Arnaud
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/5679>
Sage <http://sagemath.org/>
Sage - Open Source Mathematical Software: Building the Car Instead of
Reinventing the Wheel
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---