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 <[email protected]
> <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 [email protected] <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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/834fa084-eb37-43b9-bf79-10180bf0348e%40googlegroups.com.