From: Nijso B. <ni...@ho...> - 2014-03-23 21:16:59
|
Dear list, please see below. If someone is interested in kovacicODE.mac (around 34kb), just let me know. Best, Nyso On Sun, 2014-03-23 at 22:02 +0100, Nijso Beishuizen wrote: > Dear Neeraj, > > > kovacicODE solves second order linear ODE's with Liouvillian solutions > In maxima, just do something like this: > > load('kovacic.mac'); > ode:'diff(y,x,2)+a*'diff(y,x)+b*x=c; > kovacicODE(ode,y,x); > > Note that there is a lot of output before the final solution is given > > kovacicODE was tested using the Kamke database, which is included in > maxima in share/contrib/diffequations. > It solves around 50% or so of the second order linear equations. > > > The Kovacic algorithm is known to take a long time to finish for certain > ODE's, on my pc sometimes 5 minutes before it finally concludes that no > Liouvillian solutions exist. > > > It is recommended to define constants appearing in the ODE as constants. > It might be necessary to restrict the constants further, i.e. say that > a>0 or even x>0. > It is sometimes necessary to load absimp to get rid of abs(a) when a>0. > > > > After kovacicODE has found a solution, it tries to simplify the solution by > merging constants into the integration constants %k1 and %k2. > I also try some simplifications and check the number of operators in the > new result. If the result has less operators, the simplification is > accepted. > In some cases, you will still end up with a complex solution, or with a > solution containing exponential integrals or gamma_incomplete solutions, > even though the solution can be simplified further. > > > > > On Wed, 2014-03-19 at 12:14 +0530, Neeraj Sangwan wrote: > > I am interested in development version. Could you please send it to me. > > > > Thanking you > > Neeraj > > > > On Wed, Mar 19, 2014 at 2:32 AM, nijso beishuizen <ni...@ho...> wrote: > > > Hello Neeraj, > > > > > > I have written an implementation of the Kovacic algorithm. It is based on > > > the thesis of Carolyn Smith which you can download from the university of > > > waterloo as a pdf: > > > > > > https://cs.uwaterloo.ca/research/tr/1984/CS-84-35.pdf > > > > > > I have a development version, if you are interested I can send it to you. > > > > > > Best, > > > Nijso > > > > > > > > >> Date: Sat, 8 Mar 2014 11:23:17 +0530 > > >> Subject: Kovacic Algorithm > > >> From: ms...@gm... > > >> To: ni...@ho... > > > > > >> > > >> Respected Sir > > >> > > >> I was searching form some implemntation of kovacic algorithm and I > > >> fouund your question regarding the same somewhere. Did you find some > > >> implementation? If yes could you please send some inks or files > > >> regarding this? > > >> > > >> Thanking you > > >> Neeraj > > >> 5th year Integrated MS student > > >> IISER Mohali > > > > > |
From: Leo B. <l_b...@us...> - 2014-03-23 22:02:07
|
Nijso Beishuizen <ni...@ho...> writes: > Dear list, please see below. If someone is interested in kovacicODE.mac > (around 34kb), just let me know. > > Best, > Nyso Nyso, May I suggest that you put this code here: http://sourceforge.net/apps/phpbb/maxima/viewforum.php?f=3 Leo > > On Sun, 2014-03-23 at 22:02 +0100, Nijso Beishuizen wrote: >> Dear Neeraj, >> >> >> kovacicODE solves second order linear ODE's with Liouvillian solutions >> In maxima, just do something like this: >> >> load('kovacic.mac'); >> ode:'diff(y,x,2)+a*'diff(y,x)+b*x=c; >> kovacicODE(ode,y,x); >> >> Note that there is a lot of output before the final solution is given >> >> kovacicODE was tested using the Kamke database, which is included in >> maxima in share/contrib/diffequations. >> It solves around 50% or so of the second order linear equations. >> >> >> The Kovacic algorithm is known to take a long time to finish for certain >> ODE's, on my pc sometimes 5 minutes before it finally concludes that no >> Liouvillian solutions exist. >> >> >> It is recommended to define constants appearing in the ODE as constants. >> It might be necessary to restrict the constants further, i.e. say that >> a>0 or even x>0. >> It is sometimes necessary to load absimp to get rid of abs(a) when a>0. >> >> >> >> After kovacicODE has found a solution, it tries to simplify the solution by >> merging constants into the integration constants %k1 and %k2. >> I also try some simplifications and check the number of operators in the >> new result. If the result has less operators, the simplification is >> accepted. >> In some cases, you will still end up with a complex solution, or with a >> solution containing exponential integrals or gamma_incomplete solutions, >> even though the solution can be simplified further. >> >> >> >> >> On Wed, 2014-03-19 at 12:14 +0530, Neeraj Sangwan wrote: >> > I am interested in development version. Could you please send it to me. >> > >> > Thanking you >> > Neeraj >> > >> > On Wed, Mar 19, 2014 at 2:32 AM, nijso beishuizen <ni...@ho...> wrote: >> > > Hello Neeraj, >> > > >> > > I have written an implementation of the Kovacic algorithm. It is based on >> > > the thesis of Carolyn Smith which you can download from the university of >> > > waterloo as a pdf: >> > > >> > > https://cs.uwaterloo.ca/research/tr/1984/CS-84-35.pdf >> > > >> > > I have a development version, if you are interested I can send it to you. >> > > >> > > Best, >> > > Nijso >> > > >> > > >> > >> Date: Sat, 8 Mar 2014 11:23:17 +0530 >> > >> Subject: Kovacic Algorithm >> > >> From: ms...@gm... >> > >> To: ni...@ho... >> > > >> > >> >> > >> Respected Sir >> > >> >> > >> I was searching form some implemntation of kovacic algorithm and I >> > >> fouund your question regarding the same somewhere. Did you find some >> > >> implementation? If yes could you please send some inks or files >> > >> regarding this? >> > >> >> > >> Thanking you >> > >> Neeraj >> > >> 5th year Integrated MS student >> > >> IISER Mohali >> > >> >> >> > > > > ------------------------------------------------------------------------------ > Learn Graph Databases - Download FREE O'Reilly Book > "Graph Databases" is the definitive new guide to graph databases and their > applications. Written by three acclaimed leaders in the field, > this first edition is now available. Download your free book today! > http://p.sf.net/sfu/13534_NeoTech -- Leo Butler leo...@me... SDF Public Access UNIX System - http://sdf.lonestar.org |
From: Dimiter P. <dim...@gm...> - 2014-03-24 10:41:11
|
Dear Nijso, I am interested to try it. BTW why don't you set a github site for the code if you are willing to share it. best regards, Dimiter Prodanov |
From: Robert D. <rob...@gm...> - 2014-03-24 16:31:10
|
On 2014-03-23, Nijso Beishuizen <ni...@ho...> wrote: > Dear list, please see below. If someone is interested in kovacicODE.mac > (around 34kb), just let me know. If you will distribute it under terms of the GNU GPL or a compatible license, let's talk about distributing it with Maxima. Establishing a Github project (maybe as an umbrella for any such stuff you write) would make it easy to look at the code & discuss changes or what-not. best, Robert Dodier |
From: Nijso B. <ni...@ho...> - 2014-03-25 23:28:53
|
Thank you all for your interest. I have decided to set up a git project and will distribute the code under GPL v2. I'll probably have time to finish the git setup this weekend. Best, Nyso On Mon, 2014-03-24 at 16:30 +0000, Robert Dodier wrote: > On 2014-03-23, Nijso Beishuizen <ni...@ho...> wrote: > > > Dear list, please see below. If someone is interested in kovacicODE.mac > > (around 34kb), just let me know. > > If you will distribute it under terms of the GNU GPL or a compatible > license, let's talk about distributing it with Maxima. Establishing > a Github project (maybe as an umbrella for any such stuff you write) > would make it easy to look at the code & discuss changes or what-not. > > best, > > Robert Dodier > > > ------------------------------------------------------------------------------ > Learn Graph Databases - Download FREE O'Reilly Book > "Graph Databases" is the definitive new guide to graph databases and their > applications. Written by three acclaimed leaders in the field, > this first edition is now available. Download your free book today! > http://p.sf.net/sfu/13534_NeoTech > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Robert D. <rob...@gm...> - 2014-03-31 18:01:29
|
On 2014-03-30, Nijso Beishuizen <ni...@ho...> wrote: > I have created a git repository for the Kovacic algorithm. You can find > it here: > https://github.com/bigfooted/maxima-odesolve Thanks a lot. I've copied kovacic.mac (renaming to kovacicODE.mac to make the filename coincide with the function name) and README to share/contrib/maxima-odesolve in Maxima, so it will be included in the next release. Maybe someone has mentioned it already -- it would be very helpful to include a list of example problems and expected results. Speaking of which, I'm planning to make a release branch for Maxima 5.33 in the next few days. best, Robert Dodier |
From: Edward M. <qui...@gm...> - 2014-04-03 12:07:13
|
I'm using Ubuntu 13.10 and Maxima 5.30 with wxMaxima . Upon loading a batch file that contains the example for kovacic I obtain an error message , as detailed at the end of the message. read and interpret file: #p/home/qt/DevMaxx/Now/kovacict.mac (%i2) load('kovacic) (%o2) "/usr/share/maxima/5.30.0/share/diffequations/kovacic.mac" (%i3) ode:b*x+a*'diff(y,x)+'diff(y,x,2) = c (%o3) 'diff(y,x,2)+a*('diff(y,x,1))+b*x=c (%i4) kovacicODE(ode,y,x) "equation: 'diff(_y,_x,2)+a*'diff(_y,_x,1)+b*_x = c, degree = 2" "Second order ODE found." 'diff(_y,_x,2) = -a*'diff(_y,_x,1)-b*_x+c$ "polynomial is constant" "end of preliminaries..." "_dd[0] = "0 -_w-abs(a)/2$ "finding sol2" "expression:"%e^(-((abs(a)+a)*_x)/2) "expression:"%e^(-(abs(a)*_x)/2-(a*_x)/2) "expression:"%e^(abs(a)*_x) "expression:"%e^((abs(a)+a)*_x-a*_x) "expression:"-(%e^(-(abs(a)*_x)/2-(a*_x)/2)*((abs(a)*b*((2*abs(a)+2*a)*_x-4)*%e^((abs(a)*_x)/2+(a*_x)/2))/(2*a*abs(a)+2*a^2)- (a*b*((2*abs(a)+2*a)*_x-4)*%e^((abs(a)*_x)/2+(a*_x)/2))/(2*a*abs(a)+2*a^2)+(2*a*c*%e^((abs(a)*_x)/2+(a*_x)/2))/(abs(a)/2+a/2)+(2*b*%e^((abs(a)*_x)/2+(a*_x)/2))/(abs(a)/2+a/2)))/(a*abs(a)-a^2) "expression:"(%e^(-(abs(a)*_x)/2-(a*_x)/2)*((b*((2*abs(a)+2*a)*_x-4)*%e^((abs(a)*_x)/2+(a*_x)/2))/(2*a*abs(a)+2*a^2)-(c*%e^((abs(a)*_x)/2+(a*_x)/2))/(abs(a)/2+a/2)))/abs(a)+ (((c*%e^((a*_x)/2-(abs(a)*_x)/2))/(a/2-abs(a)/2)-(b*((2*a-2*abs(a))*_x-4)*%e^((a*_x)/2-(abs(a)*_x)/2))/(2*a^2-2*a*abs(a)))*%e^((abs(a)*_x)/2-(a*_x)/2))/abs(a) expt: undefined: 0 to a negative exponent. #0: kovacicODE(_expr='diff(y,x,2)+a*'diff(y,x,1)+b*x = c,_y1=y,_x1=x)(kovacic.mac line 734) -- an error. To debug this try: debugmode(true); On Mon, Mar 31, 2014 at 7:31 AM, Nijso Beishuizen <ni...@ho...> wrote: > Dear Robert, > > I will have to do the comparison, but I expect there is quite some > overlap. The nice thing about the Kovacic algorithm is that it is a > single algorithm solving many equations. > An algorithm solving 90% of the second order linear ODE's is based on > trying to find hypergeometric solutions (Chan and Cheb-terrab, 2004) but > I haven't studied this method in detail. > > Best, > Nyso > > > On Sun, 2014-03-30 at 17:20 +0000, Robert Dodier wrote: > > On 2014-03-30, Nijso Beishuizen <ni...@ho...> wrote: > > > > > The Kamke database has 445 ODE's, it has 363 ODEs with rational > > > coefficients, and 181 of those can be solved by Kovacic' algorithm. > > > Kovacic.mac currently returns 180 solutions. > > > > How do the existing Maxima functions for ODE's compare to kovacicODE? > > How many problems can be solved that weren't solved before? > > > > Thanks a lot for you work, I appreciate it. > > > > best, > > > > Robert Dodier > > > > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > > Maxima-discuss mailing list > > Max...@li... > > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > > > > > > ------------------------------------------------------------------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Nijso B. <ni...@ho...> - 2014-04-03 22:15:02
|
Since there are no restrictions on the constant 'a', abs(a) is introduced into the solution and the simplification (ratsimp, trigsimp) sees a denominator (abs(a)*a- a^2) and returns the error. the solution can be improved by saying: declare(a,constant); declare(b,constant); declare(c,constant); assume(a>0); it will then give the same result as ode2(ode,y,x). Note that ode2 asks if 'a' is 0 or nonzero. The simplifier to lump constant terms can still be improved and it will be nice if there was no need to assume that a>0. Is there something like assume (a # 0) in maxima? Best, Nyso On Fri, 2014-04-04 at 01:07 +1300, Edward Montague wrote: > I'm using Ubuntu 13.10 and > Maxima 5.30 with wxMaxima . > > > Upon loading a batch file > that contains the example > for kovacic I obtain an > error message , as detailed > at the end of the message. > > > > > > > > > > > read and interpret file: #p/home/qt/DevMaxx/Now/kovacict.mac > (%i2) load('kovacic) > (%o2) "/usr/share/maxima/5.30.0/share/diffequations/kovacic.mac" > (%i3) ode:b*x+a*'diff(y,x)+'diff(y,x,2) = c > (%o3) 'diff(y,x,2)+a*('diff(y,x,1))+b*x=c > (%i4) kovacicODE(ode,y,x) > "equation: 'diff(_y,_x,2)+a*'diff(_y,_x,1)+b*_x = c, degree = 2" > "Second order ODE found." > 'diff(_y,_x,2) = -a*'diff(_y,_x,1)-b*_x+c$ > "polynomial is constant" > "end of preliminaries..." > "_dd[0] = "0 > -_w-abs(a)/2$ > "finding sol2" > "expression:"%e^(−((abs(a)+a)*_x)/2) > "expression:"%e^(−(abs(a)*_x)/2−(a*_x)/2) > "expression:"%e^(abs(a)*_x) > "expression:"%e^((abs(a)+a)*_x−a*_x) > "expression:"−(%e^(−(abs(a)*_x)/2 > −(a*_x)/2)*((abs(a)*b*((2*abs(a)+2*a)*_x−4)*%e^((abs(a)*_x)/2 > +(a*_x)/2))/(2*a*abs(a)+2*a^2)− > (a*b*((2*abs(a)+2*a)*_x−4)*%e^((abs(a)*_x)/2 > +(a*_x)/2))/(2*a*abs(a)+2*a^2)+(2*a*c*%e^((abs(a)*_x)/2 > +(a*_x)/2))/(abs(a)/2+a/2)+(2*b*%e^((abs(a)*_x)/2+(a*_x)/2))/(abs(a)/2 > +a/2)))/(a*abs(a)−a^2) > "expression:"(%e^(−(abs(a)*_x)/2−(a*_x)/2)*((b*((2*abs(a)+2*a)*_x−4)*% > e^((abs(a)*_x)/2+(a*_x)/2))/(2*a*abs(a)+2*a^2)−(c*%e^((abs(a)*_x)/2 > +(a*_x)/2))/(abs(a)/2+a/2)))/abs(a)+ > (((c*%e^((a*_x)/2−(abs(a)*_x)/2))/(a/2−abs(a)/2)−(b*((2*a−2*abs(a))*_x > −4)*%e^((a*_x)/2−(abs(a)*_x)/2))/(2*a^2−2*a*abs(a)))*%e^((abs(a)*_x)/2 > −(a*_x)/2))/abs(a) > expt: undefined: 0 to a negative exponent. > #0: kovacicODE(_expr='diff(y,x,2)+a*'diff(y,x,1)+b*x = > c,_y1=y,_x1=x)(kovacic.mac line 734) > -- an error. To debug this try: debugmode(true); > > > On Mon, Mar 31, 2014 at 7:31 AM, Nijso Beishuizen <ni...@ho...> > wrote: > Dear Robert, > > I will have to do the comparison, but I expect there is quite > some > overlap. The nice thing about the Kovacic algorithm is that it > is a > single algorithm solving many equations. > An algorithm solving 90% of the second order linear ODE's is > based on > trying to find hypergeometric solutions (Chan and Cheb-terrab, > 2004) but > I haven't studied this method in detail. > > Best, > Nyso > > > On Sun, 2014-03-30 at 17:20 +0000, Robert Dodier wrote: > > On 2014-03-30, Nijso Beishuizen <ni...@ho...> wrote: > > > > > The Kamke database has 445 ODE's, it has 363 ODEs with > rational > > > coefficients, and 181 of those can be solved by Kovacic' > algorithm. > > > Kovacic.mac currently returns 180 solutions. > > > > How do the existing Maxima functions for ODE's compare to > kovacicODE? > > How many problems can be solved that weren't solved before? > > > > Thanks a lot for you work, I appreciate it. > > > > best, > > > > Robert Dodier > > > > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > > Maxima-discuss mailing list > > Max...@li... > > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > > > > > ------------------------------------------------------------------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > > |
From: David B. <dbm...@gm...> - 2014-04-03 22:21:15
|
On 4/04/2014 9:09 AM, Nijso Beishuizen wrote: > Is there something like assume (a # 0) in maxima? assume(not(equal(a,0)); See the tests in share/contrib/diffequations/tests for some other examples. |
From: Nijso B. <ni...@ho...> - 2014-04-04 22:45:45
|
in the case of abs(a) appearing in the solution, we should check if the solution is the same for a>0 and a<0 so we can simplify the solution by writing 'a' instead of 'abs(a)'. I am testing the following: immediately after having obtained the 2 independent solutions and before obtaining the particular solution, we try to simplify abs(a) by checking if the solution is the same for a>0 and a<0 1. create a list of constants C appearing as abs(C) in the solution 2. see if the solutions are the same if we assume C>0 and C<0 (they may differ by a constant multiplication factor) 3. if they are the same, then for this constant we can replace abs(C) by C. This works for your case, which has the independent homogeneous solutions [%e^(-abs(a)*_x/2-a*_x/2),%e^(abs(a)*_x/2-a*_x/2)/abs(a)] that can be simplified to [%e^(-a*x),1] but I have to prettify the function and check if it breaks the testsuite. Also, I'm not sure if the case a=0 should be tested. Best, Nijso On Fri, 2014-04-04 at 01:07 +1300, Edward Montague wrote: > I'm using Ubuntu 13.10 and > Maxima 5.30 with wxMaxima . > > > Upon loading a batch file > that contains the example > for kovacic I obtain an > error message , as detailed > at the end of the message. > > > > > > > > > > > read and interpret file: #p/home/qt/DevMaxx/Now/kovacict.mac > (%i2) load('kovacic) > (%o2) "/usr/share/maxima/5.30.0/share/diffequations/kovacic.mac" > (%i3) ode:b*x+a*'diff(y,x)+'diff(y,x,2) = c > (%o3) 'diff(y,x,2)+a*('diff(y,x,1))+b*x=c > (%i4) kovacicODE(ode,y,x) > "equation: 'diff(_y,_x,2)+a*'diff(_y,_x,1)+b*_x = c, degree = 2" > "Second order ODE found." > 'diff(_y,_x,2) = -a*'diff(_y,_x,1)-b*_x+c$ > "polynomial is constant" > "end of preliminaries..." > "_dd[0] = "0 > -_w-abs(a)/2$ > "finding sol2" > "expression:"%e^(−((abs(a)+a)*_x)/2) > "expression:"%e^(−(abs(a)*_x)/2−(a*_x)/2) > "expression:"%e^(abs(a)*_x) > "expression:"%e^((abs(a)+a)*_x−a*_x) > "expression:"−(%e^(−(abs(a)*_x)/2 > −(a*_x)/2)*((abs(a)*b*((2*abs(a)+2*a)*_x−4)*%e^((abs(a)*_x)/2 > +(a*_x)/2))/(2*a*abs(a)+2*a^2)− > (a*b*((2*abs(a)+2*a)*_x−4)*%e^((abs(a)*_x)/2 > +(a*_x)/2))/(2*a*abs(a)+2*a^2)+(2*a*c*%e^((abs(a)*_x)/2 > +(a*_x)/2))/(abs(a)/2+a/2)+(2*b*%e^((abs(a)*_x)/2+(a*_x)/2))/(abs(a)/2 > +a/2)))/(a*abs(a)−a^2) > "expression:"(%e^(−(abs(a)*_x)/2−(a*_x)/2)*((b*((2*abs(a)+2*a)*_x−4)*% > e^((abs(a)*_x)/2+(a*_x)/2))/(2*a*abs(a)+2*a^2)−(c*%e^((abs(a)*_x)/2 > +(a*_x)/2))/(abs(a)/2+a/2)))/abs(a)+ > (((c*%e^((a*_x)/2−(abs(a)*_x)/2))/(a/2−abs(a)/2)−(b*((2*a−2*abs(a))*_x > −4)*%e^((a*_x)/2−(abs(a)*_x)/2))/(2*a^2−2*a*abs(a)))*%e^((abs(a)*_x)/2 > −(a*_x)/2))/abs(a) > expt: undefined: 0 to a negative exponent. > #0: kovacicODE(_expr='diff(y,x,2)+a*'diff(y,x,1)+b*x = > c,_y1=y,_x1=x)(kovacic.mac line 734) > -- an error. To debug this try: debugmode(true); > > > On Mon, Mar 31, 2014 at 7:31 AM, Nijso Beishuizen <ni...@ho...> > wrote: > Dear Robert, > > I will have to do the comparison, but I expect there is quite > some > overlap. The nice thing about the Kovacic algorithm is that it > is a > single algorithm solving many equations. > An algorithm solving 90% of the second order linear ODE's is > based on > trying to find hypergeometric solutions (Chan and Cheb-terrab, > 2004) but > I haven't studied this method in detail. > > Best, > Nyso > > > On Sun, 2014-03-30 at 17:20 +0000, Robert Dodier wrote: > > On 2014-03-30, Nijso Beishuizen <ni...@ho...> wrote: > > > > > The Kamke database has 445 ODE's, it has 363 ODEs with > rational > > > coefficients, and 181 of those can be solved by Kovacic' > algorithm. > > > Kovacic.mac currently returns 180 solutions. > > > > How do the existing Maxima functions for ODE's compare to > kovacicODE? > > How many problems can be solved that weren't solved before? > > > > Thanks a lot for you work, I appreciate it. > > > > best, > > > > Robert Dodier > > > > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > > Maxima-discuss mailing list > > Max...@li... > > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > > > > > ------------------------------------------------------------------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > > > |
From: nijso b. <ni...@ho...> - 2014-04-12 21:56:36
|
I have updated kovacicODE.mac to fix the problem with abs(). It now runs the problem below without specifying anything for a,b,c you can get kovacicODE from here: https://github.com/bigfooted/maxima-odesolve (%i1) load(kovacicODE); (%o1) /usr/local/share/maxima/5.33.0/share/contrib/maxima-odesolve/kovacicODE.mac (%i2) ode:b*x+a*'diff(y,x)+'diff(y,x,2) = c; 2 d y dy (%o2) --- + a -- + b x = c 2 dx dx (%i3) kovacicODE(ode,y,x); 'diff(y,x,2) = -a*'diff(y,x,1)-b*x+c$ -_w-abs(a)/2$ [y = %k1*%e^-(a*x)-(a^2*(b*x^2-2*c*x)+a*(2*c-2*b*x)+2*b)/(2*a^3)+%k2]$ 2 2 - a x a (b x - 2 c x) + a (2 c - 2 b x) + 2 b (%o3) [y = %k1 %e - ----------------------------------------- +%k2] 3 2 a This is the correct solution, but it could be further simplified by recognizing that if y(x) is a solution, then so is y(x)+C, so we could remove the constants a*2*c/(2*a^3) and 2*b/(2*a^3) from the nonhomogeneous part. Additionally kovacicODE tries to solve kamke problem 2.78 from the testsuite as well (it contains f(x) and f'(x)), but I still have to check the actual solution. |
From: Evgeniy M. <ema...@e-...> - 2014-03-24 12:43:10
|
This is very interesting, thank you! Evgeniy 24.03.2014 0:11, Nijso Beishuizen пишет: > Dear list, please see below. If someone is interested in kovacicODE.mac > (around 34kb), just let me know. > > Best, > Nyso > > On Sun, 2014-03-23 at 22:02 +0100, Nijso Beishuizen wrote: >> Dear Neeraj, >> >> >> kovacicODE solves second order linear ODE's with Liouvillian solutions >> In maxima, just do something like this: >> >> load('kovacic.mac'); >> ode:'diff(y,x,2)+a*'diff(y,x)+b*x=c; >> kovacicODE(ode,y,x); >> >> Note that there is a lot of output before the final solution is given >> >> kovacicODE was tested using the Kamke database, which is included in >> maxima in share/contrib/diffequations. >> It solves around 50% or so of the second order linear equations. >> >> >> The Kovacic algorithm is known to take a long time to finish for certain >> ODE's, on my pc sometimes 5 minutes before it finally concludes that no >> Liouvillian solutions exist. >> >> >> It is recommended to define constants appearing in the ODE as constants. >> It might be necessary to restrict the constants further, i.e. say that >> a>0 or even x>0. >> It is sometimes necessary to load absimp to get rid of abs(a) when a>0. >> >> >> >> After kovacicODE has found a solution, it tries to simplify the solution by >> merging constants into the integration constants %k1 and %k2. >> I also try some simplifications and check the number of operators in the >> new result. If the result has less operators, the simplification is >> accepted. >> In some cases, you will still end up with a complex solution, or with a >> solution containing exponential integrals or gamma_incomplete solutions, >> even though the solution can be simplified further. >> >> >> >> >> On Wed, 2014-03-19 at 12:14 +0530, Neeraj Sangwan wrote: >>> I am interested in development version. Could you please send it to me. >>> >>> Thanking you >>> Neeraj >>> >>> On Wed, Mar 19, 2014 at 2:32 AM, nijso beishuizen <ni...@ho...> wrote: >>>> Hello Neeraj, >>>> >>>> I have written an implementation of the Kovacic algorithm. It is based on >>>> the thesis of Carolyn Smith which you can download from the university of >>>> waterloo as a pdf: >>>> >>>> https://cs.uwaterloo.ca/research/tr/1984/CS-84-35.pdf >>>> >>>> I have a development version, if you are interested I can send it to you. >>>> >>>> Best, >>>> Nijso >>>> >>>> >>>>> Date: Sat, 8 Mar 2014 11:23:17 +0530 >>>>> Subject: Kovacic Algorithm >>>>> From: ms...@gm... >>>>> To: ni...@ho... >>>> >>>>> >>>>> Respected Sir >>>>> >>>>> I was searching form some implemntation of kovacic algorithm and I >>>>> fouund your question regarding the same somewhere. Did you find some >>>>> implementation? If yes could you please send some inks or files >>>>> regarding this? >>>>> >>>>> Thanking you >>>>> Neeraj >>>>> 5th year Integrated MS student >>>>> IISER Mohali >>> >> >> >> > > > > ------------------------------------------------------------------------------ > Learn Graph Databases - Download FREE O'Reilly Book > "Graph Databases" is the definitive new guide to graph databases and their > applications. Written by three acclaimed leaders in the field, > this first edition is now available. Download your free book today! > http://p.sf.net/sfu/13534_NeoTech > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Nijso B. <ni...@ho...> - 2014-03-30 16:24:00
|
Dear all, I have created a git repository for the Kovacic algorithm. You can find it here: https://github.com/bigfooted/maxima-odesolve The usage is simple, just call kovacicODE: load("kovacic.mac")' declare(a,constant); kovacicODE('diff(y,x,2)=a*y,y,x); If kovacicODE finds a solution, it returns [y=solution] and if it doesn't find a solution, it returns false. The Kamke database has 445 ODE's, it has 363 ODEs with rational coefficients, and 181 of those can be solved by Kovacic' algorithm. Kovacic.mac currently returns 180 solutions. Some solutions take a long time to compute, e.g. Kamke 2.152. This is due to an intermediate integrate taking 10 minutes or so. Some returned solutions are quite complicated and could be simplified, but this is a difficult problem. I am not a maxima expert. If you see strange things in the code, please let me know. Have fun! Best, Nyso On Sun, 2014-03-23 at 22:11 +0100, Nijso Beishuizen wrote: > Dear list, please see below. If someone is interested in kovacicODE.mac > (around 34kb), just let me know. > > Best, > Nyso > > On Sun, 2014-03-23 at 22:02 +0100, Nijso Beishuizen wrote: > > Dear Neeraj, > > > > > > kovacicODE solves second order linear ODE's with Liouvillian solutions > > In maxima, just do something like this: > > > > load('kovacic.mac'); > > ode:'diff(y,x,2)+a*'diff(y,x)+b*x=c; > > kovacicODE(ode,y,x); > > > > Note that there is a lot of output before the final solution is given > > > > kovacicODE was tested using the Kamke database, which is included in > > maxima in share/contrib/diffequations. > > It solves around 50% or so of the second order linear equations. > > > > > > The Kovacic algorithm is known to take a long time to finish for certain > > ODE's, on my pc sometimes 5 minutes before it finally concludes that no > > Liouvillian solutions exist. > > > > > > It is recommended to define constants appearing in the ODE as constants. > > It might be necessary to restrict the constants further, i.e. say that > > a>0 or even x>0. > > It is sometimes necessary to load absimp to get rid of abs(a) when a>0. > > > > > > > > After kovacicODE has found a solution, it tries to simplify the solution by > > merging constants into the integration constants %k1 and %k2. > > I also try some simplifications and check the number of operators in the > > new result. If the result has less operators, the simplification is > > accepted. > > In some cases, you will still end up with a complex solution, or with a > > solution containing exponential integrals or gamma_incomplete solutions, > > even though the solution can be simplified further. > > > > > > > > > > On Wed, 2014-03-19 at 12:14 +0530, Neeraj Sangwan wrote: > > > I am interested in development version. Could you please send it to me. > > > > > > Thanking you > > > Neeraj > > > > > > On Wed, Mar 19, 2014 at 2:32 AM, nijso beishuizen <ni...@ho...> wrote: > > > > Hello Neeraj, > > > > > > > > I have written an implementation of the Kovacic algorithm. It is based on > > > > the thesis of Carolyn Smith which you can download from the university of > > > > waterloo as a pdf: > > > > > > > > https://cs.uwaterloo.ca/research/tr/1984/CS-84-35.pdf > > > > > > > > I have a development version, if you are interested I can send it to you. > > > > > > > > Best, > > > > Nijso > > > > > > > > > > > >> Date: Sat, 8 Mar 2014 11:23:17 +0530 > > > >> Subject: Kovacic Algorithm > > > >> From: ms...@gm... > > > >> To: ni...@ho... > > > > > > > >> > > > >> Respected Sir > > > >> > > > >> I was searching form some implemntation of kovacic algorithm and I > > > >> fouund your question regarding the same somewhere. Did you find some > > > >> implementation? If yes could you please send some inks or files > > > >> regarding this? > > > >> > > > >> Thanking you > > > >> Neeraj > > > >> 5th year Integrated MS student > > > >> IISER Mohali > > > > > > > > > > > > > ------------------------------------------------------------------------------ > Learn Graph Databases - Download FREE O'Reilly Book > "Graph Databases" is the definitive new guide to graph databases and their > applications. Written by three acclaimed leaders in the field, > this first edition is now available. Download your free book today! > http://p.sf.net/sfu/13534_NeoTech > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Robert D. <rob...@gm...> - 2014-03-30 17:20:45
|
On 2014-03-30, Nijso Beishuizen <ni...@ho...> wrote: > The Kamke database has 445 ODE's, it has 363 ODEs with rational > coefficients, and 181 of those can be solved by Kovacic' algorithm. > Kovacic.mac currently returns 180 solutions. How do the existing Maxima functions for ODE's compare to kovacicODE? How many problems can be solved that weren't solved before? Thanks a lot for you work, I appreciate it. best, Robert Dodier |
From: Nijso B. <ni...@ho...> - 2014-03-30 18:37:34
|
Dear Robert, I will have to do the comparison, but I expect there is quite some overlap. The nice thing about the Kovacic algorithm is that it is a single algorithm solving many equations. An algorithm solving 90% of the second order linear ODE's is based on trying to find hypergeometric solutions (Chan and Cheb-terrab, 2004) but I haven't studied this method in detail. Best, Nyso On Sun, 2014-03-30 at 17:20 +0000, Robert Dodier wrote: > On 2014-03-30, Nijso Beishuizen <ni...@ho...> wrote: > > > The Kamke database has 445 ODE's, it has 363 ODEs with rational > > coefficients, and 181 of those can be solved by Kovacic' algorithm. > > Kovacic.mac currently returns 180 solutions. > > How do the existing Maxima functions for ODE's compare to kovacicODE? > How many problems can be solved that weren't solved before? > > Thanks a lot for you work, I appreciate it. > > best, > > Robert Dodier > > > ------------------------------------------------------------------------------ > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |