That should probably be considered a bug (Derivative doesn't know that
is_real should be True if the function's is_real is True). It would be
best to just fix the bug (and it probably isn't hard to fix), but to
work around it, you'd have to define _eval_derivative or fdiff to
return another custom Function subclass for the derivative that has
is_real set to True.

Aaron Meurer

On Sat, Sep 19, 2015 at 6:44 PM, Alan Bromborsky <abrombo...@gmail.com> wrote:
> Tried the following -
>
> class f(Function):
>     is_real = True
>
> x = symbols('x',real=True)
>
> F = f('F',x)
>
> print f
> print re(f)
> print im(f)
>
> df = F.diff(x)
>
> print re(df)
> print im(df)
>
> and got -
>
> f
> f
> 0
> re(D{x}f)
> im(D{x}f)
>
> Again it works for the function, but not the derivatives of the function.
>
>
> On Sat, Sep 19, 2015 at 7:37 PM, Alan Bromborsky <abrombo...@gmail.com>
> wrote:
>>
>> Then how do I instanciate a real function of several variables as in
>>
>> X = symbols('x y z',real=True)
>>
>> F = Function('F')(*X)
>>
>> On Sat, Sep 19, 2015 at 6:34 PM, Christophe Bal <projet...@gmail.com>
>> wrote:
>>>
>>> Hello.
>>>
>>> Have you tried this ?
>>>
>>>
>>> from sympy import *
>>>
>>> class f(Function):
>>>     is_real = True
>>>
>>> x = Symbol('x',real=True)
>>>
>>> df = f.diff(x)
>>>
>>> print(re(df))
>>> print(im(df))
>>>
>>>
>>>
>>>
>>> Christophe BAL
>>> Enseignant de mathématiques en Lycée et développeur Python amateur
>>> ---
>>> French math teacher in a "Lycée" and Python amateur developer
>>>
>>> 2015-09-20 0:22 GMT+02:00 brombo <abrombo...@gmail.com>:
>>>>
>>>> Could you elucidate further or give me a link.  I  don't have a clue to
>>>> implement what you suggested.
>>>>
>>>> On Saturday, September 19, 2015 at 6:00:11 PM UTC-4, Aaron Meurer wrote:
>>>>>
>>>>> The only way to do it presently is to subclass Function manually:
>>>>>
>>>>> class f(Function):
>>>>>     is_real = True
>>>>>
>>>>> Aaron Meurer
>>>>>
>>>>> On Sat, Sep 19, 2015 at 2:47 PM, brombo <abrom...@gmail.com> wrote:
>>>>> > Your method works for a function, but not the derivative of a
>>>>> > function -
>>>>> >
>>>>> > x = Symbol('x',real=True)
>>>>> >
>>>>> > f = RealFunction('f')(x)
>>>>> >
>>>>> > print re(f)
>>>>> > f
>>>>> > print im(f)
>>>>> > 0
>>>>> >
>>>>> > df = f.diff(x)
>>>>> > print re(df)
>>>>> > re(df)
>>>>> > print im(df)
>>>>> > im(df)
>>>>> >
>>>>> > What should happen is that re(df) = df and im(df) = 0, but is doesn't
>>>>> > happen.  Any suggestions?
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> > On Saturday, September 19, 2015 at 12:58:53 PM UTC-4, brombo wrote:
>>>>> >>
>>>>> >> How do I define a real function of a real variable?
>>>>> >>
>>>>> >> X = symbols('x y z',real=True)
>>>>> >>
>>>>> >> f = Function('f',real=True)(*X)
>>>>> >>
>>>>> >> "real=True" in Function doesn't do anything.
>>>>> >
>>>>> > --
>>>>> > 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+un...@googlegroups.com.
>>>>> > To post to this group, send email to sy...@googlegroups.com.
>>>>> > Visit this group at http://groups.google.com/group/sympy.
>>>>> > To view this discussion on the web visit
>>>>> >
>>>>> > https://groups.google.com/d/msgid/sympy/6a732f8b-c09a-440e-b524-145343e1a499%40googlegroups.com.
>>>>> >
>>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>
>>>> --
>>>> 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 post to this group, send email to sympy@googlegroups.com.
>>>> Visit this group at http://groups.google.com/group/sympy.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/sympy/0c906880-41fe-41bb-82ea-ae6ddcb3848f%40googlegroups.com.
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>> --
>>> 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 post to this group, send email to sympy@googlegroups.com.
>>> Visit this group at http://groups.google.com/group/sympy.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/sympy/CAAb4jGkWNoXAbu5_-HJ1bDVhnnK_Esi6eDQbqGvnBYxz42HpMA%40mail.gmail.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>
> --
> 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 post to this group, send email to sympy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sympy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/CALOxT-naJ7unWN3qqO62Ntak%2Br1nv9yo5%3DOJx8N2CGtMu2m6Wg%40mail.gmail.com.
>
> For more options, visit https://groups.google.com/d/optout.

-- 
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 post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAKgW%3D6Jg53VOC1bzmv%3D%2B87ySJbosa__kpt4_09TeY0T5Q17vMA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to