`lambdify` is intended for numeric evaluation (but can be made to evaluate symbolically). By default, the functions `sin`, `cos`, etc... are pulled from `math` or `numpy`, which expect floats (and if not given a float, they attempt to convert to float).
What's happening here, is you're passing in a number for `x`, but `y` is still a symbol, and is enclosed in the function as a local. `lambdify` doesn't know this, and uses `math.cos` by default, which causes the error. Using the `modules` kwarg, you can tell lambdify to use `sympy.cos` instead. >>> f = lambdify(x, x*cos(y), modules='sympy') >>> f(1) cos(y) You can also pass a dictionary of {function_name_as_string: function} to modules, if you want finer control: >>> f = lambdify(x, x*cos(y), modules={'cos': sympy.cos}) >>> f(1) cos(y) On Saturday, January 10, 2015 at 11:50:29 AM UTC-6, Quirine wrote: > > Dear Sympy community, > > > The following line of code gives: > > > >>> from sympy import * > > >>> x,y=symbols('x y') > > >>> f=lambdify(x,y*cos(x)) > > >>> f(1) > > 0.54030230586814*y > > > works fine, but interchanging x and y: > > > >>> f=lambdify(x,x*cos(y)) > > >>> f(1) > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > File "<string>", line 1, in <lambda> > > File > "/Users/krol/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/sympy/core/expr.py", > > line 225, in __float__ > > raise TypeError("can't convert expression to float") > > TypeError: can't convert expression to float > > > gives me a headache, > > Does someone know a solution to this? > > > kind Regards, > > Quirine > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/788a5592-1021-4082-85bb-4d71c907fb8d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.