You should not write 0 < a < 1. Due to limitations in Python, this will not work (see the docstring of GreaterThan). Instead, write And(0 < a, a < 1).
Aaron Meurer On Sat, May 5, 2012 at 7:21 PM, Chris Smith <[email protected]> wrote: > On Sun, May 6, 2012 at 5:05 AM, Korrignu <[email protected]> wrote: >> Hello, >> >> I'm a beginner with SymPy and I need to use an indicator function which >> returns 1 when a condition holds and 0 otherwise. >> >> I have this kind of stuff : >> mu*(0<a<1)+(1-mu)*(a>1) >> >> when I subsitute "mu" with a value, there is no problem, but when I >> substitute "a" there is a problem with the multiplication between an >> integer and a boolean >> >> What is the good way to do ? Is there an indicator function ? >> > Piecewise is what you need, I think: > >>>> Piecewise((mu,0<a<1),(1-mu,a>1)) > Piecewise((mu, a < 1), (-mu + 1, a > 1)).subs(a,.4) > mu >>>> Piecewise((mu,0<a<1),(1-mu,a>1)).subs(a,1.1) > -mu + 1 >>>> Piecewise((mu,0<a<1),(1-mu,a>1)).subs(a,1) > Piecewise() > > note that you got nothing because neither condition was True. If you > want a default value when the conditions aren't True then add that > with the condiiton True: > >>>> Piecewise((mu,0<a<1),(1-mu,a>1),(42,True)).subs(a,1) > 42 > > /c > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/sympy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
