On Tue, Nov 1, 2016 at 2:26 PM, Nathan Thern <[email protected]> wrote: > According to > http://docs.sympy.org/latest/modules/core.html > f.rewrite(exp), f.rewrite(sin, exp), and f.rewrite([sin,], exp) are all > valid. > I found that I can replace just the sin term with the following expression: > >>>> f.replace(sin, lambda arg: sin(arg).rewrite(sin, exp)) > -I*(exp(I*x) - exp(-I*x))/2 + cos(y)/gamma(z) > > This seems to create the functionality I was expecting. > But I'm still not sure if I don't understand what the docs are saying about > rewrite or if there's a bug.
I looked through the code and I think it's supposed to work like you described (only rewriting the sin as exp). I'd have to debug it to see why it isn't working. Aaron Meurer > > On Tuesday, November 1, 2016 at 1:18:00 PM UTC-5, Aaron Meurer wrote: >> >> I never knew about this pattern argument to rewrite. My guess is that >> there's a bug in there. According to the docstring, you're supposed to >> call it as f.rewrite([sin,], exp), but for me that does the same >> thing. >> >> I would suggest using f.replace if you want targeted rewriting. >> >> Aaron Meurer >> >> On Tue, Nov 1, 2016 at 2:06 PM, Nathan Thern <[email protected]> wrote: >> > I'm new to sympy and pouring through the documentation. I don't >> > understand >> > the "pattern" part of the argument to rewrite. The following portion of >> > a >> > session illustrates my question: >> > >> >>>> f=sin(x)+cos(y)/gamma(z) >> >>>> f.rewrite(exp) >> > -I*(exp(I*x) - exp(-I*x))/2 + (exp(I*y)/2 + exp(-I*y)/2)/gamma(z) >> >>>> f.rewrite(sin,exp) >> > -I*(exp(I*x) - exp(-I*x))/2 + (exp(I*y)/2 + exp(-I*y)/2)/gamma(z) >> > >> > Why does rewrite(sin,exp) also rewrite the cos(...) part of the >> > expression >> > when it has been explicitly given "sin" as the pattern to rewrite? >> > >> > NT >> > >> > >> > -- >> > 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 post to this group, send email to [email protected]. >> > Visit this group at https://groups.google.com/group/sympy. >> > To view this discussion on the web visit >> > >> > https://groups.google.com/d/msgid/sympy/f7874739-0d2b-4259-9b3d-76ae958daf8a%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 [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/c8fdec88-74d0-4dc6-8736-cb5b5dfbcaeb%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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6JT%3DHYAkn1K74H7v52JrKcJ9Z6%3DD3nQ-g6YMB_Hk-wALA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
