See this issue <https://github.com/sympy/sympy/issues/5031> for previous 
discussion.

On Saturday, October 27, 2018 at 12:44:09 PM UTC-5, Oscar wrote:
>
> Hi all, 
>
> I find the behaviour of operations involving Eq strange. I would 
> really like to be able to use Eqs for algebra but they don't seem to 
> do anything useful. Is this behaviour intentional or is it something 
> that could be improved? 
>
> Setup: 
> >>> from sympy import * 
> >>> x = Symbol('x') 
> >>> y = Symbol('y') 
> >>> eq = Eq(x, y) 
> >>> eq 
> Eq(x, y) 
> >>> pprint(eq) 
> x = y 
>
> I don't understand what any of these mean: 
> >>> pprint(2*eq) 
> 2⋅(x = y) 
> >>> pprint((2*eq).expand()) 
> 2⋅(x = y) 
> >>> exp(eq) 
> exp(Eq(x, y)) 
> >>> pprint(abs(eq)) 
> │x = y│ 
> >>> eq - 1 
> -1 + Eq(x, y) 
> >>> pprint(eq - 1) 
> -1 + (x = y) 
>
> Integration works but differentiation doesn't: 
> >>> pprint(integrate(eq, x)) 
> ⌠        ⌠ 
> ⎮ x dx = ⎮ y dx 
> ⌡        ⌡ 
> >>> pprint(integrate(eq, x).doit()) 
>  2 
> x 
> ── = x⋅y 
> 2 
> >>> diff(eq, x) 
> Derivative(Eq(x, y), x) 
> >>> pprint(diff(eq, x)) 
> ∂ 
> ──(x = y) 
> ∂x 
> >>> pprint(diff(eq, x).doit()) 
> ∂ 
> ──(x = y) 
> ∂x 
>
> Functions of Eq raise errors: 
> >>> sin(eq) 
> ... 
> TypeError: cannot determine truth value of Relational 
>
> It looks as if I can chain equations and inequalities but does it 
> actually mean what it looks like mathematically? 
> >>> eq < 3 
> Eq(x, y) < 3 
> >>> pprint(eq < 3) 
> x = y < 3 
>
> Apart from the inequality example at the end I would like it if all of 
> the above operations acted on both lhs and rhs separately as in the 
> case of integration e.g.: 
>
> >>> eq 
> x = y 
> >>> 2*eq 
> 2*x = 2*y 
> >>> sin(eq) 
> sin(x) = sin(y) 
>
> The other thing that I don't understand although it is clearly 
> documented is this: 
> >>> Eq(1, 1) 
> True 
> >>> Eq(1, 0) 
> False 
>
> These True/False values are annoying if you are building up Eqs 
> programatically e.g. to pass to solve: 
> >>> solve([Eq(1, 1), Eq(x, y), Eq(x, 1)], [x, y]) 
> Traceback (most recent call last): 
>   File "<stdin>", line 1, in <module> 
>   File "/Users/enojb/current/sympy/sympy/sympy/solvers/solvers.py", 
> line 980, in solve 
>     return reduce_inequalities(f, symbols=symbols) 
>   File "/Users/enojb/current/sympy/sympy/sympy/solvers/inequalities.py", 
> line 987, in reduce_inequalities 
>     rv = _reduce_inequalities(inequalities, symbols) 
>   File "/Users/enojb/current/sympy/sympy/sympy/solvers/inequalities.py", 
> line 907, in _reduce_inequalities 
>     ''')) 
> NotImplementedError: 
> inequality has more than one symbol of interest. 
>
> You can solve this last problem with evaluate=False but I really don't 
> understand why any evaluation is desirable here. I think that solve 
> has probably gotten confused here for the same reason that any other 
> code would: the True/False objects don't have any of the same 
> attributes that an Eq would have: 
>
> >>> Eq(0, 1).lhs 
> Traceback (most recent call last): 
>   File "<stdin>", line 1, in <module> 
> AttributeError: 'BooleanFalse' object has no attribute 'lhs' 
>
>
> -- 
> Oscar 
>

-- 
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 https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/420d940b-663f-4af7-b4eb-59a048d0bdb3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to