I would like to have sympy simplify a monstrous polynom ratio:
In [2]: E=1/(2*x1**2 - 4*x1*x2 + 2*x2**2 + 2*y1**2 - 4*y1*y2 + 2*y2**2) *
(-y1*r1**2 + y2*r1**2 + y1*r2**2 - y2*r2**2 + y1*x1**2 + y2*x1**2 -
2*x1*x2*y1 - 2*x1*x2*y2 + y1*x2**2 + y2*x2**2 + y1**3 - y2*y1**2 - y1*y2**2
+ y2**3)
In [3]: simplify(E)
2 2 2 2 2 2 2
2 3 2 2 3
- r₁ ⋅y₁ + r₁ ⋅y₂ + r₂ ⋅y₁ - r₂ ⋅y₂ + x₁ ⋅y₁ + x₁ ⋅y₂ - 2⋅x₁⋅x₂⋅y₁ -
2⋅x₁⋅x₂⋅y₂ + x₂ ⋅y₁ + x₂ ⋅y₂ + y₁ - y₁ ⋅y₂ - y₁⋅y₂ + y₂
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
⎛ 2 2 2
2⎞
2⋅⎝x₁ - 2⋅x₁⋅x₂ + x₂ + y₁ -
2⋅y₁⋅y₂ + y₂ ⎠
The only thing that was simplified was the denominator, and even there it
didn't output 2[(x1-x2)^2 + (y1-y2)^2] as could be expected, but it only
moved the 2 out of the way. Which is OK, but it's one of 100 steps that
need be taken.
I sat down with pencil and paper and after some effort simplified this
bestiality to
In [4]: F = ((y1-y2)*(r2**2 - r1**2 + y1**2 - y2**2) +
(y1+y2)*(x1-x2)**2)/(2*((x1-x2)**2 + (y1-y2)**2))
In [5]: F
Out[5]:
2 ⎛ 2 2 2 2⎞
(x₁ - x₂) ⋅(y₁ + y₂) + (y₁ - y₂)⋅⎝- r₁ + r₂ + y₁ - y₂ ⎠
──────────────────────────────────────────────────────────
2 2
2⋅(x₁ - x₂) + 2⋅(y₁ - y₂)
In [8]: simplify(E-F)
Out[8]: 0
F is truly equal to E ... so why couldn't it be simplified at least to that?
I even searched the docs and tried to use various dedicated simplification
functions, but to no avail (factor() left it alone -- eventhough I thought
that when it simplifies x^2 + 2xy + y^2 to (x+y)^2, it could do something
here, and so did the other functions). The only "salvation" here seems to
be collect(), but the problem is that I need to tell the symbol which
should be collected, so the best I could do with that would be some kind of
"guided tour" -- I'd need to look at it, then think out what should be done
next, then write the command and have it done.
Is there a way to automate this?
--
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 http://groups.google.com/group/sympy.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/25f22412-038b-420b-af5f-05733d251f99%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.