Thanks for the comments.
You are right, that works. So that example was my lengthy scripts too far 
simplified. In my actual program the functions have two arrays as input 
(expectation and standard uncertainty in a measurement model) and than the 
* does not work anymore. I understood from the docs that the 
modules='numpy' option was meant to make this work and that is what I 
experienced a year or so ago working with 2.7. So here is a modified 
example that still works in 2.7 but not with me on 3.3:

import sympy

import numpy

n = 2

x = sympy.symbols('x_0:%d' % n, real=True, bounded=True)

formula = 'x_0 + x_1'

y = sympy.sympify(formula)

fx = f_x = sympy.lambdify(x, y, modules='numpy')

X = numpy.ones(n)

print('function value=', fx(*X))  # works on both pythons


a = sympy.symbols('a_0:%d' % n, real=True, bounded=True)

formula = 'a_0 * x_0 + a_1 * x_1'

y = sympy.sympify(formula)

fx = f_x = sympy.lambdify([x, a], y, modules='numpy')

a = numpy.linspace(0.5, 1.0, n)

print('function value=', fx(*[X, a]))  # does not work on 3.3


gives with 3.3

print('function value=', fx(*[X, a]))

TypeError: <lambda>() missing 2 required positional arguments: 'a_0' and 
'a_1'

and the same for a variation without *

print('function value=', fx(X, a))
TypeError: <lambda>() missing 2 required positional arguments: 'a_0' and 
'a_1'

So still all help and explanations welcome!
Cheers, Janwillem


On Tuesday, 7 January 2014 11:04:30 UTC+1, Janwillem van Dijk wrote:
>
> I have a SymPy script with a.o.
>
> f_mean = lambdify([mu, sigma], mean, modules='numpy')
>
>
> where mean is a function of mu and sigma and mu and sigma are both arrays
>
> mu = symbols('mu_0:%d' % n, real=True, bounded=True)
>
> sigma = symbols('sigma_0:%d' % n, positive=True, real=True, bounded=True)
>
>
> Under Python 2.7.5+ SymPy 0.12.0 I can use: 
>
> y = f_mean(x_n, ux_n)
>
> returning y as a numpy array of size n when x_n and ux_n are both numpy 
> arrays of size n.
>
> However, with Python 3.3.2+ and SymPy 0.7.4.1-git I get (for n=5):
>
> y = f_mean(x_n, ux_n)
> TypeError: <lambda>() missing 10 required positional arguments: 'mu_2', 
> 'mu_3', 'mu_4', 'mu_5', 'sigma_0', 'sigma_1', 'sigma_2', 'sigma_3', 
> 'sigma_4', and 'sigma_5'
>
>
> Which is similar to what I got in Python 2.7 before I added the 
> modules=numpy argument
>
> All this on ubuntu 13.10
>
>
> Have I missed something in the docs or did I stumble on a not yet 
> implemented feature?
>
> Any help very welcome.heers,
>
> Cheers, Janwillem
>
>

-- 
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.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to