I don't think the new assumptions know about these functions. Aaron Meurer
On Sun, Sep 14, 2014 at 4:16 PM, Ondřej Čertík <[email protected]> wrote: > So I think that refine() should be able to simplify things, but it > doesn't, e.g.: > > In [5]: s = integrate(exp(-alpha**2*r**2)*r**2, (r, 0, oo)) > > In [6]: refine(s, Q.positive(alpha)) > Out[6]: > ⎧ ___ > ⎪ ╲╱ π │ ⎛ 2 ⎞│ π > ⎪ ───── for │periodic_argument⎝polar_lift (α), ∞⎠│ < ─ > ⎪ 3 2 > ⎪ 4⋅α > ⎪ > ⎨∞ > ⎪⌠ > ⎪⎮ 2 2 > ⎪⎮ 2 -α ⋅r > ⎪⎮ r ⋅ℯ dr otherwise > ⎪⌡ > ⎩0 > > On Fri, Sep 5, 2014 at 1:04 PM, Aaron Meurer <[email protected]> wrote: >> I have fixed the math in the docs. See >> https://github.com/sympy/sympy/pull/7984. >> >> Aaron Meurer >> >> On Fri, Sep 5, 2014 at 1:27 PM, Aaron Meurer <[email protected]> wrote: >>> So looking closer, something that I don't fully understand is what >>> periodic_argument(x, oo) means. According to the docstring (which >>> should be made much clearer), periodic_argument(x, P) is a value in >>> (-P/2, P/2] via exp(P*I) = 1 (and it is the argument of x on some >>> branch of the logarithm). >>> >>> Some things I am not clear on: >>> >>> - Does the second argument of periodic_argument need to be a multiple >>> of pi? I tried a non-multiple and got an answer, but is it just >>> nonsense? >>> >>> - What does periodic_argument(x, oo) mean? Is it the same as >>> unbranched_argument (which has no docstring BTW)? >>> >>> Moving to polar_lift, this is easier to understand. It lifts the value >>> to the Riemann surface of the logarithm. So polar_lift(I) gives >>> exp_polar(I*pi/2). >>> >>> So, if I understand the condition correctly, where alpha is a complex >>> number, does it mean that alpha**2 (should polar_lift(alpha)**2 be the >>> same as polar_lift(alpha**2)?) should have a nonnegative real part? >>> >>> There are some more docs on this at >>> http://docs.sympy.org/latest/modules/integrals/g-functions.html if you >>> want to dig in further (by the way, is it just me or is the math not >>> rendering on that page?). >>> >>> Aaron Meurer >>> >>> On Fri, Sep 5, 2014 at 12:16 PM, Aaron Meurer <[email protected]> wrote: >>>> If you set alpha as positive the arguments reduce. >>>> >>>> These come from Tom Bachmann's GSoC project. The docstrings of those >>>> functions explain what they are. Basically, in order to get correct >>>> results, we have to keep track of complex numbers on the domain of the >>>> complex logarithm, rather than just the complex plane. >>>> >>>> Unfortunately, there has been no work done on simplifying these >>>> conditions that are returned by the algorithm, even though in many >>>> (most?) cases they can be simplified a lot. >>>> >>>> There is als a conds flag that you can pass to integrate as >>>> 'piecewise', 'separate', or 'none'. >>>> >>>> Aaron Meurer >>>> >>>> On Fri, Sep 5, 2014 at 10:43 AM, Ondřej Čertík <[email protected]> >>>> wrote: >>>>> Hi, >>>>> >>>>> I needed these two integrals for my work: >>>>> >>>>> In [23]: integrate(erf(alpha*r)*exp(-alpha**2 * r**2), (r, 0, oo)) >>>>> Out[23]: >>>>> ⎧ ___ >>>>> ⎪ ╲╱ π │ ⎛ 2 ⎞│ π >>>>> ⎪ ───── for │periodic_argument⎝polar_lift (α), ∞⎠│ ≤ ─ >>>>> ⎪ 4⋅α 2 >>>>> ⎪ >>>>> ⎪∞ >>>>> ⎨⌠ >>>>> ⎪⎮ 2 2 >>>>> ⎪⎮ -α ⋅r >>>>> ⎪⎮ ℯ ⋅erf(α⋅r) dr otherwise >>>>> ⎪⌡ >>>>> ⎪0 >>>>> ⎩ >>>>> >>>>> In [24]: integrate(erf(alpha*r)*exp(-alpha**2 * r**2)*r, (r, 0, oo)) >>>>> Out[24]: >>>>> ⎧ ___ >>>>> ⎪ ╲╱ 2 ⎛│ ⎛ 2 ⎞│ π >>>>> │ >>>>> ⎪ ───── for ⎜│periodic_argument⎝polar_lift (α), ∞⎠│ ≤ ─ >>>>> ∧ │p >>>>> ⎪ 2 ⎝ 2 >>>>> ⎪ 4⋅α >>>>> ⎪ >>>>> ⎨∞ >>>>> ⎪⌠ >>>>> ⎪⎮ 2 2 >>>>> ⎪⎮ -α ⋅r >>>>> ⎪⎮ r⋅ℯ ⋅erf(α⋅r) dr >>>>> ⎪⌡ >>>>> ⎩0 >>>>> >>>>> >>>>> ⎛ 2 ⎞│ π⎞ │ ⎛ 2 >>>>> eriodic_argument⎝polar_lift (α), ∞⎠│ < ─⎟ ∨ │periodic_argument⎝polar_lift >>>>> (α), >>>>> 2⎠ >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> otherwise >>>>> >>>>> >>>>> >>>>> >>>>> ⎞│ π >>>>> ∞⎠│ < ─ >>>>> 2 >>>>> >>>>> >>>>> >>>>> >>>>> What does periodic_argument and polar_lift mean? It seems really >>>>> complicated. For comparison, Mathematica returns: >>>>> >>>>> In [1]: Integrate[Erf[alpha*r]*Exp[-alpha^2*r^2], {r, 0, Infinity}] >>>>> >>>>> Out [1]: ConditionalExpression[Sqrt[\[Pi]]/(4 alpha), >>>>> Re[alpha^2] > 0 && Re[alpha] > 0] >>>>> >>>>> In [2]: Integrate[Erf[alpha*r]*Exp[-alpha^2*r^2]*r, {r, 0, Infinity}] >>>>> >>>>> Out [2]: ConditionalExpression[1/(2 Sqrt[2] alpha^2), >>>>> Re[alpha^2] > 0 && Re[alpha] > 0] >>>>> >>>>> Which is much simpler. So I think we should return something similar. >>>>> >>>>> Ondrej >>>>> >>>>> -- >>>>> 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/CADDwiVD%3DVsR5rcqDx%3D4w%3D0gYAXpx0ZT8NbiGc0Kta5xOk_%2Btew%40mail.gmail.com. >>>>> For more options, visit https://groups.google.com/d/optout. >> >> -- >> 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/CAKgW%3D6J28JQRJOwnzC7KYoq0D0BUG1sAsnQRArAK1fH5g165dg%40mail.gmail.com. >> For more options, visit https://groups.google.com/d/optout. > > -- > 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/CADDwiVBzKB7anYM6LhMnmkYKmctZPmGsMvcAqRt72Ufcqwn4mg%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. -- 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/CAKgW%3D6KHQKScU%3DUAM0hTbXoeZMCLh9wy5O7%2Bi9gewSbC7bZY%3DQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
