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%3D6JH9643yOmgRq3S3UNNr2CVJNJg_uCEw_vr1jtJ2uMVpA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
