On Mon, Jul 29, 2013 at 2:13 PM, Stefan Krastanov <[email protected]> wrote: > Concerning Sum: the same problem as integral (repeated sampling). > > About the noninteger limits: it seems to transform sum into an integral, but > I guess this is just a coincidence/implementation detail somewhere in sympy > and not anything documented.
I think this might be part of the Karr convention we recently adopted (before that, things were inconsistent). The important thing is that Sum(f(x), (x, 0, 0.5)) + Sum(f(x), (x, 1.5, 2)) == Sum(f(x), (x, 0, 2)) (I hope I got that right). Raoul can give a better explanation. Aaron Meurer > > About cse and other optimizations: Matthew has written some interesting > things about using sympy to optimize numerics on his blog. > > Slightly offtopic: there is a flag that can be set when plotting so that the > lineplot is in a staircase pattern. It is quite useful, for instance, when > making plots about approximations of integrals or plots of Sum. It is > described in the plot_advanced notebook in the examples folder. > > > On 29 July 2013 20:38, Aaron Meurer <[email protected]> wrote: >> >> The same problem as Integral sampling or the same problem as >> DiracDelta (how is Sum defined for non-integer limits?). >> >> I think in general we should expand out the computation to a symbolic >> formula and use cse() to make it more efficient (what's the point of >> being symbolic if we can't do cool tricks like this). >> >> Aaron Meurer >> >> On Mon, Jul 29, 2013 at 12:35 PM, Stefan Krastanov >> <[email protected]> wrote: >> > There is also `Sum(1/x**constant, (x, 1, t))` plotted for t in [1, 10] >> > that >> > exhibits the same problem. >> > >> > >> > On 29 July 2013 19:33, Stefan Krastanov <[email protected]> >> > wrote: >> >> >> >> The fallback is just to call `evalf` instead something like `lambdify`. >> >> It >> >> is always slower, but works even on the most bizarre expressions. For >> >> integrals, indeed, there are many points that are resampled with this >> >> naive >> >> solution (the algorithm becomes n^2 instead of n). >> >> >> >> Numeric libraries like scipy provide routines for doing this in a >> >> single >> >> pass, however one provides the points to be sampled beforehand. mpmath >> >> which >> >> is used in this case does not provide this as far as I know. >> >> >> >> Even if it is provided we will have to somehow link this routine to >> >> `Integral.evalf`, because if we just write a special case for the >> >> plotting >> >> module, it will work for `Integral(...)` but not for something more >> >> general >> >> like `exp(Integral(...))` or `x*Integral(...)`. >> >> >> >> So yes, we can implement the single-pass algorithm, but it will require >> >> some creativity so 1) it will work without us explicitly telling the >> >> algorithm beforehand which points are to be sampled and 2) it is >> >> callable >> >> like an ordinary `evalf`. >> > >> > >> > -- >> > 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. >> > For more options, visit https://groups.google.com/groups/opt_out. >> > >> > >> >> -- >> 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. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> > > -- > 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. > For more options, visit https://groups.google.com/groups/opt_out. > > -- 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. For more options, visit https://groups.google.com/groups/opt_out.
