doit() was the answer thanks! (Doesn't crash for me v1.4) Le samedi 24 août 2019 20:20:13 UTC-4, Oscar a écrit : > > I would say that you should use doit but I just tried that and it crashed: > > In [*9*]: e=Function('g')(Function('f')(x1,x2),Function('h' > )(x1,x2)).diff(x1) > > > In [*10*]: e > > > Out[*10*]: > > ⎛ ∂ ⎞│ ⎛ ∂ ⎞│ ⎛ > ∂ ⎞│ ⎛ ∂ > > ⎜───(f(ξ₁, x[2]))⎟│ ⋅⎜───(g(ξ₁, h(x[1], x[2])))⎟│ + > ⎜───(g(f(x[1], x[2]), ξ₂))⎟│ ⋅⎜───(h(ξ₁ > > ⎝∂ξ₁ ⎠│ξ₁=x[1] ⎝∂ξ₁ ⎠│ξ₁=f(x[1], x[2]) > ⎝∂ξ₂ ⎠│ξ₂=h(x[1], x[2]) ⎝∂ξ₁ > > > ⎞│ > > , x[2]))⎟│ > > ⎠│ξ₁=x[1] > > > In [*11*]: e.doit() > > > Fatal Python error: Cannot recover from stack overflow. > > > Thread 0x000070000994b000 (most recent call first): > > File "/Users/enojb/.local/lib/python3.5/threading.py", line 293 in wait > > File "/Users/enojb/.local/lib/python3.5/threading.py", line 549 in wait > > File > "/Users/enojb/current/sympy/35venv/lib/python3.5/site-packages/IPython/core/history.py", > > line 829 in run > > File > "/Users/enojb/current/sympy/35venv/lib/python3.5/site-packages/IPython/core/history.py", > > line 58 in needs_sqlite > > File > "</Users/enojb/current/sympy/35venv/lib/python3.5/site-packages/decorator.py:decorator-gen-24>", > > line 2 in run > > File "/Users/enojb/.local/lib/python3.5/threading.py", line 914 in > _bootstrap_inner > > File "/Users/enojb/.local/lib/python3.5/threading.py", line 882 in > _bootstrap > > > Current thread 0x00007fffae5cf380 (most recent call first): > > File "/Users/enojb/current/sympy/sympy/sympy/core/symbol.py", line 284 > in assumptions0 > > File "/Users/enojb/current/sympy/sympy/sympy/core/symbol.py", line 274 > in _hashable_content > > File "/Users/enojb/current/sympy/sympy/sympy/core/symbol.py", line 381 > in _hashable_content > > File "/Users/enojb/current/sympy/sympy/sympy/core/expr.py", line 133 in > __eq__ > > File "/Users/enojb/current/sympy/sympy/sympy/core/basic.py", line 343 > in __eq__ > > File "/Users/enojb/current/sympy/sympy/sympy/core/containers.py", line > 97 in __eq__ > > File "/Users/enojb/current/sympy/sympy/sympy/core/expr.py", line 134 in > __eq__ > > File "/Users/enojb/current/sympy/sympy/sympy/core/cache.py", line 94 in > wrapper > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2291 in <listcomp> > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2291 in _hashable_content > > File "/Users/enojb/current/sympy/sympy/sympy/core/expr.py", line 109 in > __hash__ > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2286 in __hash__ > > File "/Users/enojb/current/sympy/sympy/sympy/core/cache.py", line 94 in > wrapper > > File "/Users/enojb/current/sympy/sympy/sympy/core/expr.py", line 196 in > __mul__ > > File "/Users/enojb/current/sympy/sympy/sympy/core/decorators.py", line > 129 in binary_op_wrapper > > File "/Users/enojb/current/sympy/sympy/sympy/core/decorators.py", line > 91 in __sympifyit_wrapper > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 618 in _eval_derivative > > File "/Users/enojb/current/sympy/sympy/sympy/core/basic.py", line 1724 > in _visit_eval_derivative_scalar > > File "/Users/enojb/current/sympy/sympy/sympy/core/basic.py", line 1719 > in _accept_eval_derivative > > File "/Users/enojb/current/sympy/sympy/sympy/core/basic.py", line 1743 > in _eval_derivative_n_times > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 1427 in __new__ > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 1598 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2242 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 1600 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2242 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 1600 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2242 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 1600 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2242 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 1600 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2242 in doit > > ... > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 2242 in doit > > File "/Users/enojb/current/sympy/sympy/sympy/core/function.py", line > 1600 in doit > > ... > > Abort trap: 6 > > On Sun, 25 Aug 2019 at 01:13, Mathieu Lamarre <mathieu...@gmail.com > <javascript:>> wrote: > >> Simple example of multivariate chain rule: >> print(Function('g')(Function('f')(x1,x2)).diff(x1)) >> >> Gives the expected: >> >> [image: diff1.PNG] >> >> Derivative(f(x1, x2), x1)*Derivative(g(f(x1, x2)), f(x1, x2)) >> >> >> Adding another function h: >> >> print(Function('g')(Function('f')(x1,x2),Function('h')(x1,x2)).diff(x1)) >> >> Gives the expected answer but with extra _xi_1 and _xi_2 symbols: >> >> [image: diff.PNG] >> >> Derivative(f(x1, x2), x1)*Subs(Derivative(g(_xi_1, h(x1, x2)), _xi_1), >> _xi_1, f(x1, x2)) + Derivative(h(x1, x2), x1)*Subs(Derivative(g(f(x1, x2), >> _xi_2), _xi_2), _xi_2, h(x1, x2)) >> >> >> This is annoying for subsequent substitutions, for instance to switch >> from the function notation to simple symbols. >> Also, for more complex equations, the numbering of the automatic xi >> symbols is hard to predict. >> >> Is there a way to change this behavior? i.e. do not get the Subs and >> _xi_%d above >> >> Thanks >> >> -- >> 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 sy...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/b8b84555-2132-430c-be51-b0c47d99e3bb%40googlegroups.com >> >> <https://groups.google.com/d/msgid/sympy/b8b84555-2132-430c-be51-b0c47d99e3bb%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >
-- 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 view this discussion on the web visit https://groups.google.com/d/msgid/sympy/834fa084-eb37-43b9-bf79-10180bf0348e%40googlegroups.com.