On 02/19/12 19:58, Mike wrote:
> When I run:
>
> x,y=var('x,y', domain=RR)
> solve(2.0*x+3.0*y==4.0, y)
>
> I get
>
> [y == -2/3*x + 4/3]
>
> but I would like to get
>
> [y == -0.666666666666666*x + 1.3333333333333]
>
> How can I do this?
>
Wild guess: the float coefficients are coerced to QQ, because otherwise
numerical inaccuracy would prevent us from finding a solution. For example,
(0.333333... + 0.666666...)*x
might not equal x.
For a workaround, someone recently showed me this. You would call
`symbolic_approx` on your result.
---
class NumericEvaluator(Converter):
def arithmetic(self, ex, operator):
return reduce(operator, map(self, ex.operands()))
def pyobject(self, ex, obj):
return ex.n()
def symbol(self, ex):
return SR(ex)
def symbolic_approx(expr):
ne = NumericEvaluator()
return ne(expr)
--
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-support
URL: http://www.sagemath.org