Equal is not anything. You've just created an undefined function
called Equal (Function('Equal')) with that sympify command.
What you are probably looking for is Eq() (or Equality()). This
creates a symbolic equality. You can manipulate different sides of
the equation using Eq.lhs and Eq.rhs, like
In [496]: Eq(x, y)
Out[496]: x = y
In [497]: Eq(x, y).lhs
Out[497]: x
In [498]: Eq(x, y).rhs
Out[498]: y
Eq() will reduce to True when or False when it can see that the
expressions are always equal or unequal:
In [504]: Eq(x, y).subs({x: 1, y: 1})
Out[504]: True
In [505]: Eq(x, y).subs({x: 1, y: 2})
Out[505]: False
== is a lot different. This is used to exactly compare expressions.
a == b will be a boolean, True if a and be are exactly equal and False
otherwise. I say "exactly" equal because == does structural
comparison, not mathematical comparison. So we have
In [499]: x*(y + z) == x*y + x*z
Out[499]: False
In [500]: x*(y + z) == x*(y + z)
Out[500]: True
If you want to do a mathematical comparison, the best way is to
subtract one expression from the other and pass it to simplify(), and
see if it goes to 0. For example:
In [501]: a = x*(y + z)
In [502]: b = x*y + x*z
In [503]: simplify(a - b)
Out[503]: 0
See http://docs.sympy.org/dev/gotchas.html#equals-signs for more
discussion on this.
Aaron Meurer
On Fri, Apr 27, 2012 at 4:16 PM, Robert <[email protected]> wrote:
> Hello,
>
> I have a question about == and Equal in sympy.
>
> Their behavior is strange to me.
>
> In [108]: expr = sympy.simplify('Equal(A,B)')
> In [111]: expr.subs(dict(A=1, B=1))
> Equal(1, 1)
>
> In [112]: expr = sympy.simplify('A==B')
> In [113]: expr
> False
>
> In [115]: A = sympy.Symbol('A')
> In [116]: B = sympy.Symbol('B')
>
> In [117]: A==B
> False
>
> In [118]: sympy.__version__
> '0.7.1'
>
> --
> 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.