Hi All

This is such a big nostalgia moment! @Anurag There are three tasks 
mentioned on the PR. One of them being
-> Don't hardcode the value of a in the functions in cds.py. And the input 
should be a, not sqrt(a), (so, e.g., the input should be -1, not sqrt(-1))
I would try to solve this and would like to illustrate the code-blocks in 
the above mentioned file(cds.py) so that you can understand the code flow
within files and between different files.<Updates on the PR>

In particular inside sympy/intergrals module we have "risch_integrate" 
function, which is suppose to be do the magic of integrating any elementary 
function. It indeed is an abstraction for all the function calls, coded in 
different files in the above mentioned module.
As suggested by Aaron, Manuel Bronstein is the best place to start with. 
Try going through the book and you'll realize that the code implemented is 
a lot more similar to the sections in the book.

On Saturday, January 25, 2014 6:24:25 AM UTC+5:30, Aaron Meurer wrote:
>
> On Fri, Jan 24, 2014 at 11:39 AM, Anurag Sharma 
> <anur...@gmail.com<javascript:>> 
> wrote: 
> > Hi Aaron 
> > Thanks for your reply. I have got hold of Bronstein book and the 
> tutorial. I 
> > find the tutorial much more accessible right now. I think I will go 
> through 
> > it first and worry about the correctness of algorithms later. 
> > 
> > I don't find all the algorithms being implemented in sympy (eg 
> Bernoulli, 
> > Hermite Reduction etc. ). And I guess we done need them when we have 
> better 
> > ones available. 
>
> The rational algorithms are implemented in rationaltools.py. The 
> polynomial algorithms (that have nothing to do with integration) are 
> buried in the polys module. The risch algorithms are in risch.py, 
> rde.py, and prde.py. 
>
> Aaron Meurer 
>
> > Expect some queries and doubts related to maths involved in next couple 
> of 
> > days while I read on. 
> > 
> > Cheers 
> > Anurag 
> > 
> > On Friday, January 24, 2014 5:18:52 AM UTC+5:30, Aaron Meurer wrote: 
> >> 
> >> On Thu, Jan 23, 2014 at 4:19 AM, someone <some...@bluewin.ch> wrote: 
> >> >> > 3. I have skimmed through the first chapter of Bronstein's book. 
> >> >> > Algebraic Preliminaries. Nothing new there. But the second chapter 
> >> >> > introduces algorithms which I have never implemented and some of 
> >> >> > them I had not even heard of. I would be really glad if you could 
> >> >> > tell me what sort of mathematical background is required to 
> >> >> > contribute efficiently to this part of the project. 
> >> >> 
> >> >> Well really Bronstein's book is self-contained. The unfortunate 
> thing 
> >> >> for you is that half of it is already implemented, so the 
> >> >> prerequisites are really more like "the first half of Bronstein's 
> >> >> book". I think you have a good opportunity to catch up, especially 
> >> >> since you are still early. You should read through chapter 2. This 
> >> >> gives a more algorithmic introduction to abstract algebra than you 
> may 
> >> >> have seen before. Chapter 3 gives a good understanding of the 
> rational 
> >> >> algorithm, but it is not necessary to understand all the algorithms 
> >> >> there, except the Lazard-Rioboo-Trager, which is the one actually 
> >> >> used. This is important because the full algorithm is just an 
> >> >> extension of this algorithm, so understanding the basics of how it 
> >> >> works is important. Chapter 4 is entirely theoretical. You should 
> get 
> >> >> an understanding of differential algebra, but a deep understanding 
> of 
> >> >> chapter 4 is not fully required. Most of it is just there to prove 
> the 
> >> >> theorems, particularly the Liouville theorem. A lot of it is there 
> >> >> only to prove the algebraic case, which is not even described in the 
> >> >> book. 
> >> > 
> >> > We all miss the volume II he wanted to write :-( 
> >> > 
> >> >> It really depends on how you learn, though. If you feel you 
> >> >> learn better by really understanding all the mathematics, then you 
> >> >> should read chapter 4 more carefully. 
> >> >> 
> >> >> Chapter 5 is the most important. This you should read and understand 
> >> >> (with the possible exception of the proof of Liouville's theorem, 
> >> >> assuming I remember correctly that it's in this chapter). This is 
> the 
> >> >> "base" algorithm. Most of it is already implemented, in risch.py. 
> >> >> 
> >> >> Chapters 6, 7, and 8 are nitty-gritty details of the sub-algorithms. 
> >> >> You really don't need to worry so much about the parts that are 
> >> >> already implemented. It depends on what you plan to do in your 
> project 
> >> >> too, but in many cases you can worry about things when you get to 
> them 
> >> >> too. 
> >> >> 
> >> >> Chapter 9 is more heavy on the math than what you really need to 
> know 
> >> >> to implement it. 
> >> >> 
> >> >> I recommend starting with chapter 2. Try to find the implementation 
> in 
> >> >> SymPy of the algorithms as you go through them, and play with them 
> >> >> using your own inputs. This will help you learn SymPy and the polys 
> >> >> module as well (the polys module can be a bit confusing so let us 
> know 
> >> >> if you can't figure stuff out with it). 
> >> >> 
> >> >> You should also try to follow the Risch code, say for some simple 
> >> >> inputs, alongside the pseudocode in Bronstein. Don't worry too much 
> >> >> about the code in DifferentialExtension to start with. 
> >> >> 
> >> >> > I would be really glad if you could link me to some literature on 
> >> >> > net which explains the Risch algorithm and implementation issues. 
> >> >> > In the meanwhile I'll try to procure the mentioned text from my 
> >> >> > college library. 
> >> >> 
> >> >> Read Bronstein's "symbolic integration tutorial" 
> >> > 
> >> > Yes, this a great "short version". 
> >> > There is also a Thesis called "Symbolic Integration" 
> >> > by BJÖRN TERELIUS. (You should be able to find this on 
> >> > the net, otherwise I'll send you a copy.) 
> >> 
> >> There is also some paper that I found pretty useful for understanding 
> >> the extension tower concept. I can't remember who wrote it or what 
> >> it's called. It might not even be a paper, just a chapter from a 
> >> textbook on computer algebra, but I do remember that it has the 
> >> example from https://code.google.com/p/sympy/issues/detail?id=2010#c1. 
> >> 
> >> There are also a ton of references in Bronstein's book. 
> >> 
> >> But I would always start with Bronstein, because his writing is the 
> >> best, and then fill the gaps with other resources. 
> >> 
> >> Aaron Meurer 
> >> 
> >> > 
> >> > -- 
> >> > 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 sympy+un...@googlegroups.com. 
> >> > To post to this group, send email to sy...@googlegroups.com. 
> >> > 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 sympy+un...@googlegroups.com <javascript:>. 
> > To post to this group, send email to sy...@googlegroups.com<javascript:>. 
>
> > 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 sympy+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to