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

Reply via email to