Edwin Woollett wrote:
> this note explores the use of to_poly_solve on
> the implicit solution from ode2.
> =========================
>
> On 16 May 2009, Edwin Woollett wrote
> ---------------------------------------------
> The second ode2 example in the manual is a second
> order nonlinear ode in which a particular solution
> is chosen so that at x = 0, y = 0, and dydx = 2.
>
> The implicit solution for y as a function of x
> is 3*y - 2*y^3 = 6*x , or y * (3 - 2*y^2) = 6*x
> which indeed has one solution which is zero
> when x = 0.
>
> The first derivative of this implicit solution gives
> dydx = 2/(1 - 2*y^2), which says dydx = 2
> when y = 0.
>
> But when I ask solve for explicit solutions
> ( exsoln below ), the first returned solution
> has y1(0) = 0, dy1dx(0) = -1,
> and the third returned solution has
> y3(0) = sqrt(3/2), dy3dx(0) = 2.
>
> So how do we recover an explicit solution
> which agrees with that returned by ic2?
> (ie which has y(0) = 0 and dydx(0) = 2)?
> ----------------------------------------------------------
> Since to_poly_solve uses solve, we get the same
> results, but in a different order.
> First, review *solve* output at x = 0:
> y y'
> 1 0 -1
> 2 -sqrt(3/2) -1
> 3 sqrt(3/2) 2
>
> Next, to-poly-solve results at x=0:
> y y'
> 1 sqrt(3/2) 2
> 2 0 -1
> 3 -sqrt(3/2) -1
>
> ---------------------------------
> (%i1) display2d:false$
> (%i2) load(to_poly_solver);
> Loading maxima-grobner $Revision: 1.5 $ $Date: 2008/05/05 08:47:28 $
> Warning - you are redefining the Maxima function prog1
> Warning - you are redefining the Maxima function symbolcheck
> Warning - you are redefining the Maxima function push
> Warning - you are redefining the Maxima function pop
> Warning - you are redefining the Maxima function tr_ev
> (%o2)
> "C:/PROGRA~1/MAXIMA~3.1/share/maxima/5.18.1/share/contrib/to_poly_solver.mac"
> (%i3) eqn : 3*y - 2*y^3 = 6*x;
> (%o3) 3*y-2*y^3 = 6*x
> (%i4) exsoln :
> (to_poly_solve ( eqn, y), flatten ( args(%%)) , map('rhs,%%))$
> (%i5) rectform( subst ( x=0, exsoln) );
> (%o5) [ sqrt(3)/sqrt(2), 0, -2^-(1/2)*sqrt(3)]
> (%i6) dexsoln : diff ( exsoln, x )$
> (%i7) rectform( subst ( x=0, dexsoln ) );
> (%o7) [ 2, -1, -1 ]
> -------------------------------------
> Thus solve => order (a, b, c ) in list of solutions, and
> to_poly_solve => order (c, a, b ) in list of solutions.
> It would be easier to compare these two solvers if they
> both produced the same order of solutions.
> ----------------------------------------------------
> my question remains:
> "So how do we recover an explicit solution
> which agrees with that returned by ic2?
> (ie which has y(0) = 0 and dydx(0) = 2)?"
>
> Ted Woollett
> win xp, 5.18.1
>
>
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
> .
>
>
Here is what I go.
(%i34) display2d: false;
(%o34) false
(%i35) eq: 'diff(y,x,2) + y*'diff(y,x)^3=0;
(%o35) 'diff(y,x,2)+y*('diff(y,x,1))^3 = 0
(%i36) ode2(eq,y,x);
(%o36) (y^3+6*%k1*y)/6 = x+%k2
(%i37) ic2(%,x=0,y=0,diff(y,x)=2);
(%o37) (y^3-3*y*(y^2-1))/6 = x
(%i38) part(solve(%,y),3);
(%o38) y = (2^-(3/2)*sqrt(18*x^2-1)-3*x/2)^(1/3)
+1/(2*(2^-(3/2)*sqrt(18*x^2-1)-3*x/2)^(1/3))
(%i39) subst(x=0,part(%,2));
(%o39) sqrt(2)/(2*(-1)^(1/6))+(-1)^(1/6)/sqrt(2)
(%i40) ratsimp(%);
(%o40) 0
(%i41) subst(x=0,diff(part(%o38,2),x));
(%o41) 2
HTH,
-sen