Modifying the meijerg algorithm will require some time for you to understand the algorithm and the code behind it, so you should allocate some time for it.Adding support to manualintegrate should be much easier. We should probably try to do both.
Aaron Meurer On Sun, Mar 29, 2020 at 2:30 PM Jackson Morris <[email protected]> wrote: > > My initial thought was that we could have some kind of a "distribution > object" in order for us to more easily identify when the result of an > integral could be written in clean terms (we could also use these when we > need a distribution to describe the derivative of some function), but now I > am realizing that almost all (interesting) instances of distributions > occurring in these types of integrals are variations of the delta function > (eg derivatives), which is already covered in the functions module. Also, is > investigating whether the meijerg methods can be modified to return > distributions something I should look into now when formulating my > timeline/plan, or can there be some built in time for determining which will > be more feasible (between meijerg or manualintegrate). > > Thanks, > Jackson > > On Sunday, March 29, 2020 at 1:04:51 PM UTC-7, Aaron Meurer wrote: >> >> manualintegrate basically is a lookup table. So if you want to >> implement a lookup table, it should go there, rather than trying to >> reinvent it. >> >> What other sorts of generalized functions would you want to implement? >> >> Aaron Meurer >> >> On Sun, Mar 29, 2020 at 11:57 AM Jackson Morris <[email protected]> wrote: >> > >> > So, a potential plan of action could be something like determining which >> > integration method could most easily be extended to return distributions >> > (whether that is meijerg, or manual integrate) >> > and then implementing such an extension to either of these methods. If it >> > proves intractable to improve either of these methods we would then look >> > into a look-up table? Would it be unrealistic to try to implement other >> > sorts of generalized functions into Sympy for a GSoC project? >> > >> > Thanks! Jackson >> > >> > On Friday, March 27, 2020 at 10:00:56 AM UTC-7, Aaron Meurer wrote: >> >> >> >> On Fri, Mar 27, 2020 at 10:51 AM Ondřej Čertík <[email protected]> wrote: >> >> > >> >> > Hi Jackson and Oscar, >> >> > >> >> > Indeed, fixing this would be the main goal of the project. Let's >> >> > brainstorm the possible approaches. >> >> > >> >> > 1) One is to work on the integrate() function, and make it return >> >> > distributions (delta functions) where appropriate. One way to do that >> >> > is using pattern matching, similar to Rubi. One would match the typical >> >> > integrals that occur, and return the correct answer. One would probably >> >> > write a dedicated function for that, say, integrate_distributions, and >> >> > then somehow hook it up into integrate. >> >> >> >> I think this is the right approach. We already have a pattern matching >> >> integrator called manualintegrate that this can be added to. We can >> >> also investigate if the meijerg algorithm can be improved to work in >> >> these cases. If it can, then that will enable a lot more than we could >> >> get by naive pattern matching. In each case, I would investigate >> >> meijerg first. If it can be improved (and is fast), then that is >> >> enough. It is only if it can't that we should add a table lookup. In >> >> some cases, meijerg can work but it needs some better pre-processing >> >> (like calling apart() first so it can operate on a partial fraction >> >> decomposition). >> >> >> >> The benefit of improving integrate is that things will work regardless >> >> of whether they call fourier_transform or just create the integral of >> >> a Fourier transform. As you probably know, integrals that look like >> >> common transforms appear all the time even when you aren't necessarily >> >> thinking in terms of that transform. >> >> >> >> By the way, since you mentioned RUBI, I don't think even it would help >> >> here, since, unless I am mistaken, it doesn't deal with definite >> >> integrals. >> >> >> >> Aaron Meurer >> >> >> >> > >> >> > 2) The other approach is to tie it specifically into the >> >> > fourier_transform() function. >> >> > >> >> > I was hoping we could write general enough integrate_distributions >> >> > function, so that when it is called from inside Fourier, Laplace and >> >> > other transforms, it would return the correct answer. >> >> > >> >> > Finally, cos(x) is just one simple example. It needs to be extended to >> >> > work correctly with piecewise functions and other. I can provide such >> >> > examples from a person who reported this issue to me yesterday. >> >> > >> >> > For example, if it could do majority of these transforms correctly, >> >> > that would be ideal: >> >> > >> >> > https://en.wikipedia.org/wiki/Fourier_transform#Tables_of_important_Fourier_transforms >> >> > >> >> > There will be always corner cases, but getting 90% of them correctly >> >> > would go a long way. >> >> > >> >> > Ondrej >> >> > >> >> > On Thu, Mar 26, 2020, at 4:59 PM, Jackson Morris wrote: >> >> > > Hello there, >> >> > > >> >> > > I just commented on the issue, but I figure that this is a better way >> >> > > to communicate. Here is my comment from the issue: I would certainly >> >> > > be >> >> > > interested in working on this for GSoC. I am still getting familiar >> >> > > with the internals of sympy, but I think that this would be right up >> >> > > my >> >> > > alley. Would getting this fixed be the main component of the project? >> >> > > >> >> > > Best, >> >> > > Jackson >> >> > > >> >> > > On Thursday, March 26, 2020 at 2:38:50 PM UTC-7, ondrej wrote:Hi, >> >> > > > >> >> > > > Here is a great idea for a GSoC project: >> >> > > > >> >> > > > https://github.com/sympy/sympy/issues/2803#issuecomment-604697523 >> >> > > > >> >> > > > Would any student be interested? I know at least one user who >> >> > > > couldn't use SymPy because of that. So fixing it would be very >> >> > > > useful to a lot of people. The scope of the GSoC project could be >> >> > > > to get SymPy working with Fourier transforms of many such functions >> >> > > > including Piecewise and adding a nice page to SymPy's documentation >> >> > > > with examples. >> >> > > > >> >> > > > I'll be happy to mentor such a project. >> >> > > > >> >> > > > 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 view this discussion on the web visit >> >> > > https://groups.google.com/d/msgid/sympy/a51452c8-bb74-4fa2-b2ac-04c66e7e9199%40googlegroups.com >> >> > > >> >> > > <https://groups.google.com/d/msgid/sympy/a51452c8-bb74-4fa2-b2ac-04c66e7e9199%40googlegroups.com?utm_medium=email&utm_source=footer>. >> >> > >> >> > -- >> >> > 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 view this discussion on the web visit >> >> > https://groups.google.com/d/msgid/sympy/ec797a11-e354-48a5-9ce9-f0b5617d7099%40www.fastmail.com. >> > >> > -- >> > 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 view this discussion on the web visit >> > https://groups.google.com/d/msgid/sympy/17f88db9-1638-4601-967e-2d1341b17019%40googlegroups.com. > > -- > 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 view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/6586eb95-2e36-4ff2-80d3-f90fba57dd9e%40googlegroups.com. -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6KUOvmLuxXogwpR74ucARvyJR0Z%2B0oveRsJaKRLPTJ__w%40mail.gmail.com.
