On Mar 23, 2011, at 6:49 AM, Yuri Karadzhov wrote: >> The first and third item would be useful to have, but they are not really >> big enough projects for a summer of code. The second one could be, though. >> I would need to see a more detailed plan on what you plan to implement to >> see if it is big enough. >> >> Aaron Meurer > > Actually it was one idea which include three smaller ones because they > are connected with each other. The rough plan of implementation: > > 1. Implement pattern matching functionality. Function like Maple > indets which can return the list of subexpressions of given type from > given expression is required. > > e.g. indets(f(x)+2*x+sin(y+cos(t)),'function') > should return the list > f(x), sin(y+cos(t)), cos(t) > > This immediately give us the solution of the third problem (concerned > with dsolve) > > 2. Implement function which return minimal list of linearly > independent functions of one variable form given one. > > e.g. linind(cos(t+1), sin(t), cos(t)) > should return > sin(t), cos(t)
Do you know of an efficient algorithm to compute this? I know that it can be done, since the set is finite and the wronskian will tell you if it a set is linearly independent or not, but it seems that a naive implementation would have poor asymptotic (and actual) performance. > > This helps to solve the first problem. > > 3. Then singular function should be implemented. This function should > return values of parameters which make given expression singular. > > e.g. singular(tan(c)*y/(d*(a+b*x)),(a,b,c,d)) > should return > (a=0, b=0),(c=Pi/2+Pi*N_1) > > This helps to implement parametrizer. > > 4. Implement parametrizer casemap which do the require operation > parameter-wise > > e.g. casemap(dsolve, diff(f(r),r)=a*f(r)+b*r+c, (a, b, c)) > should return > (f(r)=C_1*exp(a*r)-b*r/a-(b+a*c)/a^2 , a!=0), (f(r)=b*r^2/2+c*r+C_1, > a=0) > the same method can be used for rank calculation using determinant > method because > A=Matrix((1, x), (1, 1)) > casemap(det, Inverse(A), x) > should return > (1/(1-x), x!=1), (infinity, x=1) This could be a useful function. Probably the new assumptions could help it out (though sadly they are not fully implemented yet). Aaron Meurer > > This solve the second problem, but it's assumed that ODE module is > able to solve ODE's without checking of parameters. If it's not — the > improvement of ODE module should be done first. > > This idea is not obligatory and if you need improvements of ODE or PDE > module or anything else, I will be glad to help. > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/sympy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
