Hi Naveen,

This ODE comes from Banks, Gundersen, Laine: Meromorphic Solutions of the 
Riccati Differential Equation (example 4.2 
http://www.acadsci.fi/mathematica/Vol06/vol06pp369-398.pdf)

ode = y(x).diff(x) - y(x)**2 - 21/2 + 9/4*x**2

Your current implementation fails to find the solution (-1/(x-1)   -1/x - 
1/(x+1) + 3x/2)


This ODE is example 4.6 from the thesis of Thieu:

ode = y(x).diff(x) - ( (-3*x**2+2*x-2)/(x*(x-1)**2) - 
(6*x**2-x+3)/(x*(x-1))*y(x) - (3*x**2+1)/(x)*y(x)*y(x))

Your implementation finds 3 complex solutions while it should return 1 
rational solution.

Best regards,
Nijso

On Tuesday, 30 March 2021 at 09:53:35 UTC+2 [email protected] wrote:

> By the way, Naveen, could you create a repository for your work? It will 
> be easier to work with.
>
> Best regards,
> Nijso
>
> On Tuesday, 30 March 2021 at 09:48:48 UTC+2 [email protected] wrote:
>
>> Hi Naveen, Oscar,
>> I agree with Oscar that there is still much work to be done, even having 
>> 'only' the rational Riccati solver implemented and tested is still a lot of 
>> work, after all you have to implement and test all subcases (movable poles, 
>> fixed poles, poles at infinity). And the solver should not only work on the 
>> solvable ODEs, but should also not get stuck on ODEs that are not solvable 
>> using this method. Also sometimes we will find only special solutions and 
>> we would need to construct the general solution from them. Since this is a 
>> core solver for possibly many other solvers, it is important that it 
>> functions very well.
>>
>> I have put the first 367 kamke odes (the ODEs of first order and first 
>> degree) in sympy format in a list, it is here: 
>> https://github.com/bigfooted/sympy_ode
>>
>> I think a modular approach is best and the solver should consist of a 
>> number of independent functions that can be re-used elsewhere. For instance:
>> isRiccati(ode)  : return True if the input ODE is Riccati, False 
>> otherwise,
>> Riccati2Normal(ode) : returns the Riccati ode in normal form,
>> Poles(ode) : returns the poles, and their order and multiplicities, 
>> etc..
>> But I think you have made a good start.
>>
>> Regarding the GSoC application: I would focus a bit more on that now, 
>> it's always good to be able to get some feedback before submitting (not 
>> sure how that works regarding independent reviewing, though).
>>
>> Best regards,
>> Nijso
>>
>>
>> ...
>>
>>
>>
>> On Tuesday, 30 March 2021 at 08:34:12 UTC+2 [email protected] wrote:
>>
>>> Hi Oscar,
>>>
>>> Should we add all the ODEs of Kamke and Murphy or only Riccati ODEs? In 
>>> either case, how do we plan on parsing the solution from Maple/Mathematica? 
>>> I could see that there is a Mathematica Parser, but even that seems to be 
>>> very basic and is not parsing some complex expressions.
>>>
>>> Naveen
>>> On Monday, March 29, 2021 at 7:17:25 PM UTC+5:30 Naveen Saisreenivas 
>>> Thota wrote:
>>>
>>>> > When reviewing GSOC applications (just speaking for myself - I am not
>>>> > the only reviewer) I am most interested in ensuring that we can get
>>>> > the best contributors who are capable of making the most valuable
>>>> > contributions to important parts of SymPy. What you are proposing here
>>>> > is a significant improvement to an important part of SymPy so the main
>>>> > points to focus on in your application are:
>>>> > 1) making it clear why this is important and how significant the 
>>>> improvement is
>>>> > 2) demonstrating that you personally understand what needs doing and
>>>> > are capable of doing the necessary work
>>>>
>>>> Okay, thank you for the advice, Oscar! I'll make the proposal and post 
>>>> it here so that you and others can review it.
>>>>
>>>> Naveen
>>>> On Monday, March 29, 2021 at 5:03:53 PM UTC+5:30 Oscar wrote:
>>>>
>>>>> On Mon, 29 Mar 2021 at 10:42, Naveen Saisreenivas Thota 
>>>>> <[email protected]> wrote: 
>>>>> > 
>>>>> > > I think you underestimate how much work is involved in really 
>>>>> making 
>>>>> > > the implementation robust and complete. Note that it's much better 
>>>>> to 
>>>>> > > have a well-tested, complete, efficient implementation of a single 
>>>>> > > algorithm with nicely organised and documented code than it is to 
>>>>> have 
>>>>> > > multiple half-implemented algorithms. As Nijso emphasised earlier 
>>>>> the 
>>>>> > > most important thing first is to establish a systematic test base. 
>>>>> We 
>>>>> > > should get the Kamke examples in and you should verify that this 
>>>>> does 
>>>>> > > find all the rational function solutions for all of the Ricatti 
>>>>> ODEs. 
>>>>> > 
>>>>> > I was thinking as much, but I wanted to ask just to know your 
>>>>> opinion as well. I did test the current code with some examples, but I am 
>>>>> yet to test it with all of them. So, from what you say, I am planning to 
>>>>> include Rational Riccati Solver and ODE test bank (Kamke and Murphy) as 
>>>>> the 
>>>>> primary items to be done and leave computation of rational solutions for 
>>>>> a 
>>>>> general 1st order equation as a bonus? Will this be okay? 
>>>>>
>>>>> Yes, I think that sounds good. 
>>>>>
>>>>> Note, as I said in reply to some other queries about GSOC exactly what 
>>>>> you would or wouldn't achieve within the duration of the project is 
>>>>> less important than demonstrating that you are capable of making 
>>>>> significant contributions to SymPy. All tasks can turn out to be 
>>>>> harder or easier than expected so it's hard to estimate in advance 
>>>>> what is possible given a fixed timeframe. 
>>>>>
>>>>> When reviewing GSOC applications (just speaking for myself - I am not 
>>>>> the only reviewer) I am most interested in ensuring that we can get 
>>>>> the best contributors who are capable of making the most valuable 
>>>>> contributions to important parts of SymPy. What you are proposing here 
>>>>> is a significant improvement to an important part of SymPy so the main 
>>>>> points to focus on in your application are: 
>>>>> 1) making it clear why this is important and how significant the 
>>>>> improvement is 
>>>>> 2) demonstrating that you personally understand what needs doing and 
>>>>> are capable of doing the necessary work 
>>>>>
>>>>> Then if your application is successful and it turns out that (based on 
>>>>> the work you have already done) it is not hard to complete some of the 
>>>>> tasks listed then there is no shortage of other things to be done for 
>>>>> ODEs in SymPy. On the other hand if one of the tasks turns out to be 
>>>>> more involved than expected then it is better to limit the scope of 
>>>>> the project later and make sure that the parts that are implemented 
>>>>> are done well. 
>>>>>
>>>>> A general point that I often make to students is that (usually) it is 
>>>>> better to do half a job well than to do the whole job badly. If half a 
>>>>> job is done well then it makes a good starting point for someone in 
>>>>> future to finish that work. If the whole job is done badly it 
>>>>> potentially makes it more difficult for someone else to improve that 
>>>>> work than it would be for them if starting from scratch. 
>>>>>
>>>>> Oscar 
>>>>>
>>>>

-- 
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/2893bb89-9fe9-4188-a848-5cdea330ac21n%40googlegroups.com.

Reply via email to