#6480: .subs_expr() method doesn't work for argument of D derivative operator
-----------------------------+----------------------------------------------
       Reporter:  gmhossain  |         Owner:     
           Type:  defect     |        Status:  new
       Priority:  major      |     Milestone:     
      Component:  symbolics  |    Resolution:     
       Keywords:             |   Work issues:     
Report Upstream:  N/A        |     Reviewers:     
        Authors:             |     Merged in:     
   Dependencies:             |      Stopgaps:     
-----------------------------+----------------------------------------------

Old description:

> In computing functional derivative, one needs to vary
> a functional. For example, in sage-3.4 one can do as follows
> {{{
> sage: f(x) = function('f',x)
> sage: df(x) = function('df',x)
> sage: g = f(x).diff(x)
> sage: g
> diff(f(x), x, 1)
> sage: g.subs_expr(f(x)==f(x)+df(x))
> diff(f(x) + df(x), x, 1)
> }}}
>
> In new symbolics, if I do the same I get
>
> {{{
> sage: g
> D[0](f)(x)
> sage: g.subs_expr(f(x)==f(x)+df(x))
> D[0](f)(x)
> }}}

New description:

 In computing functional derivative, one needs to vary
 a functional. For example, in sage-3.4 one can do as follows
 {{{
 sage: f(x) = function('f',x)
 sage: df(x) = function('df',x)
 sage: g = f(x).diff(x)
 sage: g
 diff(f(x), x, 1)
 sage: g.subs_expr(f(x)==f(x)+df(x))
 diff(f(x) + df(x), x, 1)
 }}}

 In new symbolics, if I do the same I get

 {{{
 sage: g
 D[0](f)(x)
 sage: g.subs_expr(f(x)==f(x)+df(x))
 D[0](f)(x)
 }}}



 ----


 From #11842, the list of what does/doesn't work:
 {{{
 from sage.all import *


 # 1. Fails.
 x = var('x')
 f = function('f', x)
 g = function('g', x)
 p = f
 print p.substitute_function(f, g) # Outputs "f(x)"



 # 2. Fails.
 x = var('x')
 f = function('f')
 g = function('g')
 p = f(x)
 print p.substitute_function(f(x), g(x)) # Outputs "f(x)"



 # 3. Works.
 x = var('x')
 f = function('f')
 g = function('g')
 p = f(x)
 print p.substitute_function(f, g) # Outputs "g(x)"



 # 4. Fails.
 x = var('x')
 f = function('f')
 g = function('g')
 p = f(1)
 print p.substitute_function(f(1), g(1)) # Outputs "f(1)"



 # 5. Works.
 x = var('x')
 f = function('f')
 g = function('g')
 p = f(1)
 print p.substitute_function(f, g) # Outputs "g(1)"



 # 6. Fails.
 x = var('x')
 f = function('f', x)
 g = function('g', x)
 p = f.diff()
 print p.substitute_function(f, g) # Outputs "D[0](f)(x)"



 # 7. Fails.
 x = var('x')
 f = function('f', x)
 g = function('g', x)
 p = f.diff()
 print p.substitute_function(f(x), g(x)) # Outputs "D[0](f)(x)"



 # 8. Works.
 x = var('x')
 f = function('f')
 g = function('g')
 p = f(x).diff()
 print p.substitute_function(f, g) # Outputs "D[0](g)(x)"



 # 9. Fails.
 x = var('x')
 f = function('f')
 g = function('g')
 p = f(x).diff()(1)
 print p.substitute_function(f(x).diff(), g(x).diff()) # Outputs
 "D[0](f)(1)"



 # 10. Works..
 x = var('x')
 f = function('f')
 g = function('g')
 p = f(x).diff()(1)
 print p.substitute_function(f, g) # Prints D[0](g)(1).
 }}}

--

Comment (by kcrisman):

 I feel like if that one is closed, we should have the list here, so I'm
 updating the description.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6480#comment:6>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to