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.

Reply via email to