Status: Accepted
Owner: asmeurer
Labels: Type-Defect Priority-Medium Assumptions Integration Polynomial
New issue 2672 by asmeurer: UnificationFailed with integrate(-diff(y/(x**2
+ y**2), y), x)
http://code.google.com/p/sympy/issues/detail?id=2672
In [110]: x, y = symbols('x y', real=True)
In [111]: integrate(-diff(y/(x**2 + y**2), y), x)
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (17, 0))
---------------------------------------------------------------------------
UnificationFailed Traceback (most recent call last)
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/<ipython-input-111-6c3ba16c58ef>
in
<module>()
----> 1 integrate(-diff(y/(x**2 + y**2), y), x)
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/utilities/decorator.pyc
in
threaded_func(expr, *args, **kwargs)
23 func(expr.rhs, *args,
**kwargs))
24 else:
---> 25 return func(expr, *args, **kwargs)
26
27 return threaded_func
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/integrals/integrals.pyc
in
integrate(*args, **kwargs)
845
846 if isinstance(integral, Integral):
--> 847 return integral.doit(deep = False)
848 else:
849 return integral
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/integrals/integrals.pyc
in
doit(self, **hints)
362 continue
363
--> 364 antideriv = self._eval_integral(function, xab[0])
365
366 if antideriv is None:
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/integrals/integrals.pyc
in
_eval_integral(self, f, x)
575 # poly(x)
576 if g.is_rational_function(x):
--> 577 parts.append(coeff * ratint(g, x))
578 continue
579
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/integrals/rationaltools.pyc
in
ratint(f, x, **flags)
86 else:
87 for h, q in L:
---> 88 R = log_to_real(h, q, x, t)
89
90 if R is not None:
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/integrals/rationaltools.pyc
in
log_to_real(h, q, x, t)
252 R_u = roots(R, filter='R')
253
--> 254 if len(R_u) != R.count_roots():
255 return None
256
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/polys/polytools.pyc
in
count_roots(f, inf, sup)
2863 if inf_real and sup_real:
2864 if hasattr(f.rep, 'count_real_roots'):
-> 2865 count = f.rep.count_real_roots(inf=inf, sup=sup)
2866 else: # pragma: no cover
2867 raise OperationNotSupported(f, 'count_real_roots')
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/polys/polyclasses.py
in
count_real_roots(f, inf, sup)
757 def count_real_roots(f, inf=None, sup=None):
758 """Return the number of real roots of ``f`` in ``[inf,
sup]``. """
--> 759 return dup_count_real_roots(f.rep, f.dom, inf=inf, sup=sup)
760
761 def count_complex_roots(f, inf=None, sup=None):
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/polys/rootisolation.pyc
in
dup_count_real_roots(f, K, inf, sup)
652
653 if inf is None:
--> 654 signs_inf = dup_sign_variations([ dup_LC(s,
K)*(-1)**dup_degree(s) for s in sturm ], K)
655 else:
656 signs_inf = dup_sign_variations([ dup_eval(s, inf, K) for s
in sturm ], K)
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/polys/densetools.pyc
in
dup_sign_variations(f, K)
1124
1125 for coeff in f:
-> 1126 if coeff*prev < 0:
1127 k += 1
1128
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/polys/polyclasses.py
in
__lt__(f, g)
1297
1298 def __lt__(f, g):
-> 1299 _, _, _, F, G = f.frac_unify(g)
1300 return F.__lt__(G)
1301
/Users/aaronmeurer/Documents/python/sympy/sympy-scratch/sympy/polys/polyclasses.py
in
frac_unify(f, g)
1047 """Unify representations of two multivariate fractions. """
1048 if not isinstance(g, DMF) or f.lev != g.lev:
-> 1049 raise UnificationFailed("can't unify %s with %s" % (f,
g))
1050
1051 if f.dom == g.dom:
UnificationFailed: can't unify DMF(([], [mpz(1)]), ZZ) with 0
If x and y are just regular symbols, it works fine:
In [113]: x, y = symbols('x y')
In [114]: integrate(-diff(y/(x**2 + y**2), y), x)
Out[114]:
⎛ ⎽⎽⎽⎽ ⎛ ⎽⎽⎽⎽⎞ ⎽⎽⎽⎽
⎛ ⎽⎽⎽⎽⎞⎞ ⎽⎽⎽⎽ ⎛ ⎽⎽⎽⎽⎞
⎜ ╱ -1 ⎜ 4 ╱ -1 ⎟ ╱ -1 ⎜
4 ╱ -1 ⎟⎟ ╱ -1 ⎜ 2 ╱ -1 ⎟
⎜ ╱ ── ⋅log⎜x - y ⋅ ╱ ── ⎟ ╱ ── ⋅log⎜x +
y ⋅ ╱ ── ⎟⎟ ╱ ── ⋅log⎜x - y ⋅ ╱ ── ⎟
⎜ ╱ 6 ⎜ ╱ 6 ⎟ ╱ 6
⎜ ╱ 6 ⎟⎟ ╱ 2 ⎜ ╱ 2 ⎟
2 ⎜ x ╲╱ y ⎝ ╲╱ y ⎠ ╲╱ y
⎝ ╲╱ y ⎠⎟ ╲╱ y ⎝ ╲╱ y ⎠ ╲╱
2⋅y ⋅⎜────────────── - ─────────────────────────────── +
───────────────────────────────⎟ + ─────────────────────────────── - ──
⎜ 2 2 4 4
4 ⎟ 2
⎝2⋅x ⋅y +
2⋅y ⎠
⎽⎽⎽⎽ ⎛ ⎽⎽⎽⎽⎞
╱ -1 ⎜ 2 ╱ -1 ⎟
╱ ── ⋅log⎜x + y ⋅ ╱ ── ⎟
╱ 2 ⎜ ╱ 2 ⎟
y ⎝ ╲╱ y ⎠
─────────────────────────────
2
--
You received this message because you are subscribed to the Google Groups
"sympy-issues" group.
To post to this group, send email to sympy-issues@googlegroups.com.
To unsubscribe from this group, send email to
sympy-issues+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/sympy-issues?hl=en.