本文整理汇总了Python中sympy.utilities.lambdify.implemented_function函数的典型用法代码示例。如果您正苦于以下问题:Python implemented_function函数的具体用法?Python implemented_function怎么用?Python implemented_function使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了implemented_function函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_lambdify
def test_lambdify():
# Test lambdify with implemented functions
# first test basic (sympy) lambdify
f = sympy.cos
assert_equal(lambdify(x, f(x))(0), 1)
assert_equal(lambdify(x, 1 + f(x))(0), 2)
assert_equal(lambdify((x, y), y + f(x))(0, 1), 2)
# make an implemented function and test
f = implemented_function("f", lambda x : x+100)
assert_equal(lambdify(x, f(x))(0), 100)
assert_equal(lambdify(x, 1 + f(x))(0), 101)
assert_equal(lambdify((x, y), y + f(x))(0, 1), 101)
# Error for functions with same name and different implementation
f2 = implemented_function("f", lambda x : x+101)
assert_raises(ValueError, lambdify, x, f(f2(x)))
# our lambdify, like sympy's lambdify, can also handle tuples,
# lists, dicts as expressions
lam = lambdify(x, (f(x), x))
assert_equal(lam(3), (103, 3))
lam = lambdify(x, [f(x), x])
assert_equal(lam(3), [103, 3])
lam = lambdify(x, [f(x), (f(x), x)])
assert_equal(lam(3), [103, (103, 3)])
lam = lambdify(x, {f(x): x})
assert_equal(lam(3), {103: 3})
lam = lambdify(x, {f(x): x})
assert_equal(lam(3), {103: 3})
lam = lambdify(x, {x: f(x)})
assert_equal(lam(3), {3: 103})
示例2: test_alias
def test_alias():
x = F.Term('x')
f = implemented_function('f', lambda x: 2*x)
g = implemented_function('g', lambda x: np.sqrt(x))
ff = F.Formula([f(x), g(x)**2])
n = F.make_recarray([2,4,5], 'x')
assert_almost_equal(ff.design(n)['f(x)'], n['x']*2)
assert_almost_equal(ff.design(n)['g(x)**2'], n['x'])
示例3: test_2d
def test_2d():
B1, B2 = [gen_BrownianMotion() for _ in range(2)]
B1s = implemented_function("B1", B1)
B2s = implemented_function("B2", B2)
s, t = sympy.symbols(('s', 't'))
e = B1s(s)+B2s(t)
ee = lambdify((s,t), e)
assert_almost_equal(ee(B1.x, B2.x), B1.y + B2.y)
示例4: natural_spline
def natural_spline(t, knots=None, order=3, intercept=False):
""" Return a Formula containing a natural spline
Spline for a Term with specified `knots` and `order`.
Parameters
----------
t : ``Term``
knots : None or sequence, optional
Sequence of float. Default None (same as empty list)
order : int, optional
Order of the spline. Defaults to a cubic (==3)
intercept : bool, optional
If True, include a constant function in the natural
spline. Default is False
Returns
-------
formula : Formula
A Formula with (len(knots) + order) Terms (if intercept=False,
otherwise includes one more Term), made up of the natural spline
functions.
Examples
--------
>>> x = Term('x')
>>> n = natural_spline(x, knots=[1,3,4], order=3)
>>> xval = np.array([3,5,7.]).view(np.dtype([('x', np.float)]))
>>> n.design(xval, return_float=True)
array([[ 3., 9., 27., 8., 0., -0.],
[ 5., 25., 125., 64., 8., 1.],
[ 7., 49., 343., 216., 64., 27.]])
>>> d = n.design(xval)
>>> print(d.dtype.descr)
[('ns_1(x)', '<f8'), ('ns_2(x)', '<f8'), ('ns_3(x)', '<f8'), ('ns_4(x)', '<f8'), ('ns_5(x)', '<f8'), ('ns_6(x)', '<f8')]
"""
if knots is None:
knots = {}
fns = []
for i in range(order+1):
n = 'ns_%d' % i
def f(x, i=i):
return x**i
s = implemented_function(n, f)
fns.append(s(t))
for j, k in enumerate(knots):
n = 'ns_%d' % (j+i+1,)
def f(x, k=k, order=order):
return (x-k)**order * np.greater(x, k)
s = implemented_function(n, f)
fns.append(s(t))
if not intercept:
fns.pop(0)
ff = Formula(fns)
return ff
示例5: test_implemented_function_evalf
def test_implemented_function_evalf():
from sympy.utilities.lambdify import implemented_function
f = Function('f')
f = implemented_function(f, lambda x: x + 1)
assert str(f(x)) == "f(x)"
assert str(f(2)) == "f(2)"
assert f(2).evalf() == 3
assert f(x).evalf() == f(x)
f = implemented_function(Function('sin'), lambda x: x + 1)
assert f(2).evalf() != sin(2)
del f._imp_ # XXX: due to caching _imp_ would influence all other tests
示例6: test_jscode_inline_function
def test_jscode_inline_function():
x = symbols("x")
g = implemented_function("g", Lambda(x, 2 * x))
assert jscode(g(x)) == "2*x"
g = implemented_function("g", Lambda(x, 2 * x / Catalan))
assert jscode(g(x)) == "var Catalan = %s;\n2*x/Catalan" % Catalan.n()
A = IndexedBase("A")
i = Idx("i", symbols("n", integer=True))
g = implemented_function("g", Lambda(x, x * (1 + x) * (2 + x)))
assert jscode(g(A[i]), assign_to=A[i]) == (
"for (var i=0; i<n; i++){\n" " A[i] = A[i]*(1 + A[i])*(2 + A[i]);\n" "}"
)
示例7: test_glsl_code_inline_function
def test_glsl_code_inline_function():
x = symbols('x')
g = implemented_function('g', Lambda(x, 2*x))
assert glsl_code(g(x)) == "2*x"
g = implemented_function('g', Lambda(x, 2*x/Catalan))
assert glsl_code(g(x)) == "float Catalan = 0.915965594;\n2*x/Catalan"
A = IndexedBase('A')
i = Idx('i', symbols('n', integer=True))
g = implemented_function('g', Lambda(x, x*(1 + x)*(2 + x)))
assert glsl_code(g(A[i]), assign_to=A[i]) == (
"for (int i=0; i<n; i++){\n"
" A[i] = (A[i] + 1)*(A[i] + 2)*A[i];\n"
"}"
)
示例8: test_jscode_inline_function
def test_jscode_inline_function():
x = symbols('x')
g = implemented_function('g', Lambda(x, 2*x))
assert jscode(g(x)) == "2*x"
g = implemented_function('g', Lambda(x, 2*x/Catalan))
assert jscode(g(x)) == "var Catalan = %s;\n2*x/Catalan" % Catalan.n()
A = IndexedBase('A')
i = Idx('i', symbols('n', integer=True))
g = implemented_function('g', Lambda(x, x*(1 + x)*(2 + x)))
assert jscode(g(A[i]), assign_to=A[i]) == (
"for (var i=0; i<n; i++){\n"
" A[i] = (A[i] + 1)*(A[i] + 2)*A[i];\n"
"}"
)
示例9: test_ccode_inline_function
def test_ccode_inline_function():
x = symbols('x')
g = implemented_function('g', Lambda(x, 2*x))
assert ccode(g(x)) == "2*x"
g = implemented_function('g', Lambda(x, 2*x/Catalan))
assert ccode(g(x)) == "double const Catalan = %s;\n2*x/Catalan" %Catalan.n()
A = IndexedBase('A')
i = Idx('i', symbols('n', integer=True))
g = implemented_function('g', Lambda(x, x*(1 + x)*(2 + x)))
assert ccode(g(A[i]), assign_to=A[i]) == (
"for (int i=0; i<n; i++){\n"
" A[i] = A[i]*(1 + A[i])*(2 + A[i]);\n"
"}"
)
示例10: test_implemented_function
def test_implemented_function():
# Here we check if the default returned functions are anonymous - in
# the sense that we can have more than one function with the same name
f = implemented_function('f', lambda x: 2*x)
g = implemented_function('f', lambda x: np.sqrt(x))
l1 = lambdify(x, f(x))
l2 = lambdify(x, g(x))
assert_equal(str(f(x)), str(g(x)))
assert_equal(l1(3), 6)
assert_equal(l2(3), np.sqrt(3))
# check that we can pass in a sympy function as input
func = sympy.Function('myfunc')
assert_false(hasattr(func, '_imp_'))
f = implemented_function(func, lambda x: 2*x)
assert_true(hasattr(func, '_imp_'))
示例11: test_glsl_code_Pow
def test_glsl_code_Pow():
g = implemented_function('g', Lambda(x, 2*x))
assert glsl_code(x**3) == "pow(x, 3.0)"
assert glsl_code(x**(y**3)) == "pow(x, pow(y, 3.0))"
assert glsl_code(1/(g(x)*3.5)**(x - y**x)/(x**2 + y)) == \
"pow(3.5*2*x, -x + pow(y, x))/(pow(x, 2.0) + y)"
assert glsl_code(x**-1.0) == '1.0/x'
示例12: ufuncify
def ufuncify(args, expr, **kwargs):
"""
Generates a binary ufunc-like lambda function for numpy arrays
``args``
Either a Symbol or a tuple of symbols. Specifies the argument sequence
for the ufunc-like function.
``expr``
A SymPy expression that defines the element wise operation
``kwargs``
Optional keyword arguments are forwarded to autowrap().
The returned function can only act on one array at a time, as only the
first argument accept arrays as input.
.. Note:: a *proper* numpy ufunc is required to support broadcasting, type
casting and more. The function returned here, may not qualify for
numpy's definition of a ufunc. That why we use the term ufunc-like.
References
==========
[1] http://docs.scipy.org/doc/numpy/reference/ufuncs.html
Examples
========
>>> from sympy.utilities.autowrap import ufuncify
>>> from sympy.abc import x, y
>>> import numpy as np
>>> f = ufuncify([x, y], y + x**2)
>>> f([1, 2, 3], 2)
[ 3. 6. 11.]
>>> a = f(np.arange(5), 3)
>>> isinstance(a, np.ndarray)
True
>>> print a
[ 3. 4. 7. 12. 19.]
"""
y = C.IndexedBase(C.Dummy('y'))
x = C.IndexedBase(C.Dummy('x'))
m = C.Dummy('m', integer=True)
i = C.Dummy('i', integer=True)
i = C.Idx(i, m)
l = C.Lambda(args, expr)
f = implemented_function('f', l)
if isinstance(args, C.Symbol):
args = [args]
else:
args = list(args)
# ensure correct order of arguments
kwargs['args'] = [y, x] + args[1:] + [m]
# first argument accepts an array
args[0] = x[i]
return autowrap(C.Equality(y[i], f(*args)), **kwargs)
示例13: test_jscode_Pow
def test_jscode_Pow():
g = implemented_function('g', Lambda(x, 2*x))
assert jscode(x**3) == "Math.pow(x, 3)"
assert jscode(x**(y**3)) == "Math.pow(x, Math.pow(y, 3))"
assert jscode(1/(g(x)*3.5)**(x - y**x)/(x**2 + y)) == \
"Math.pow(3.5*2*x, -x + Math.pow(y, x))/(Math.pow(x, 2) + y)"
assert jscode(x**-1.0) == '1/x'
示例14: test_inline_function
def test_inline_function():
from sympy.tensor import IndexedBase, Idx
from sympy import symbols
n, m = symbols('n m', integer=True)
A, x, y = map(IndexedBase, 'Axy')
i = Idx('i', m)
p = FCodeGen()
func = implemented_function('func', Lambda(n, n*(n + 1)))
routine = make_routine('test_inline', Eq(y[i], func(x[i])))
code = get_string(p.dump_f95, [routine])
expected = (
'subroutine test_inline(m, x, y)\n'
'implicit none\n'
'INTEGER*4, intent(in) :: m\n'
'REAL*8, intent(in), dimension(1:m) :: x\n'
'REAL*8, intent(out), dimension(1:m) :: y\n'
'INTEGER*4 :: i\n'
'do i = 1, m\n'
' y(i) = %s*%s\n'
'end do\n'
'end subroutine\n'
)
args = ('x(i)', '(x(i) + 1)')
assert code == expected % args or\
code == expected % args[::-1]
示例15: test_lambdify_imps
def test_lambdify_imps():
# Test lambdify with implemented functions
# first test basic (sympy) lambdify
f = sympy.cos
assert lambdify(x, f(x))(0) == 1
assert lambdify(x, 1 + f(x))(0) == 2
assert lambdify((x, y), y + f(x))(0, 1) == 2
# make an implemented function and test
f = implemented_function("f", lambda x: x + 100)
assert lambdify(x, f(x))(0) == 100
assert lambdify(x, 1 + f(x))(0) == 101
assert lambdify((x, y), y + f(x))(0, 1) == 101
# Can also handle tuples, lists, dicts as expressions
lam = lambdify(x, (f(x), x))
assert lam(3) == (103, 3)
lam = lambdify(x, [f(x), x])
assert lam(3) == [103, 3]
lam = lambdify(x, [f(x), (f(x), x)])
assert lam(3) == [103, (103, 3)]
lam = lambdify(x, {f(x): x})
assert lam(3) == {103: 3}
lam = lambdify(x, {f(x): x})
assert lam(3) == {103: 3}
lam = lambdify(x, {x: f(x)})
assert lam(3) == {3: 103}
# Check that imp preferred to other namespaces by default
d = {'f': lambda x: x + 99}
lam = lambdify(x, f(x), d)
assert lam(3) == 103
# Unless flag passed
lam = lambdify(x, f(x), d, use_imps=False)
assert lam(3) == 102