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.

Reply via email to