nm

11738 Reputation

20 Badges

13 years, 160 days

MaplePrimes Activity


These are questions asked by nm

From a book, it shows the following

Verified by hand the last result  above x^(2/3)+y^(2/3)-a^(2/3)=0 is correct. The input is always 2 equations in x and y as shown above, and there is always one constant C in both that needs to be eliminated to obtain a solution (one equation) that contains y,x and any other parameters, but without c.

have been trying to use eliminate command to do the same as above. I assume eliminate is the right command for this. But not able to get close to what the book shows above for final result. 

Does any one knows how obtain same result as above using Maple's eliminate?  (I can't follow the same steps as hand solution, since that would apply only to the above example. I need to use a generic approach). 

Sometimes it is hard to obtain same result using computer as one can do by "hand".

Here is some of my attempts

restart;

assume(x::real,y::real,a::real);
eq1:=x=-a/(1+c^2)^(3/2);
eq2:=y=a*c^3/(1+c^2)^(3/2);

x = -a/(c^2+1)^(3/2)

y = a*c^3/(c^2+1)^(3/2)

result:=eliminate([eq1,eq2],c);
result:=DEtools:-remove_RootOf(result[2,1]):
result:=DEtools:-remove_RootOf(result);
result:=simplify(result,power,symbolic);
result:=expand(result);

[{c = RootOf(_Z^2-RootOf(_Z^3*x+a)^2+1)}, {y*(RootOf(_Z^3*x+a)^2)^(3/2)-RootOf(_Z^2-RootOf(_Z^3*x+a)^2+1)*RootOf(_Z^3*x+a)^2*a+a*RootOf(_Z^2-RootOf(_Z^3*x+a)^2+1)}]

x*((a^2-y^2)*(a*y^2)^(1/3)*a*((a*y^2)^(2/3)+a*(a*y^2)^(1/3)+y^2))^(3/2)/(a*y^2*(a^2-y^2)^3)+a = 0

a*((y^(2/3)*a^(2/3)+a^(4/3)+y^(4/3))^(3/2)*x+(a^2-y^2)^(3/2))/(a^2-y^2)^(3/2) = 0

x*a*(y^(2/3)*a^(2/3)+a^(4/3)+y^(4/3))^(3/2)/(a^2-y^2)^(3/2)+a = 0

 

Download how_to_eliminate.mw

Notice: The reason I am asking the above, is becuase I was doing it this way: I first solve for from one equation, then use this result in the second equation (this is what one would do normally by hand). but this could result in many solutions and hard to know which to pick to match the book result. That is why I am thinking of using Elminate instead:

restart;

assume(x::real, y::real,a::real);
eq1:=x=-a/(1+c^2)^(3/2);
eq2:=y=a*c^3/(1+c^2)^(3/2);

x = -a/(c^2+1)^(3/2)

y = a*c^3/(c^2+1)^(3/2)

#brute force method
c_found:=Vector([solve(eq1,c)])

Vector(6, {(1) = sqrt((-a*x^2)^(2/3)-x^2)/x, (2) = -sqrt((-a*x^2)^(2/3)-x^2)/x, (3) = (1/2)*sqrt(2)*sqrt(I*sqrt(3)*(-a*x^2)^(2/3)-(-a*x^2)^(2/3)-2*x^2)/x, (4) = -(1/2)*sqrt(2)*sqrt(I*sqrt(3)*(-a*x^2)^(2/3)-(-a*x^2)^(2/3)-2*x^2)/x, (5) = (1/2)*sqrt(-(2*I)*sqrt(3)*(-a*x^2)^(2/3)-2*(-a*x^2)^(2/3)-4*x^2)/x, (6) = -(1/2)*sqrt(-(2*I)*sqrt(3)*(-a*x^2)^(2/3)-2*(-a*x^2)^(2/3)-4*x^2)/x})

map(x->simplify(subs(c=x,eq2),symbolic),c_found)

Vector(6, {(1) = y = -(1/4)*sqrt(2)*(I*a^(2/3)*sqrt(3)-a^(2/3)-2*x^(2/3))^(3/2), (2) = y = (1/4)*sqrt(2)*(I*a^(2/3)*sqrt(3)-a^(2/3)-2*x^(2/3))^(3/2), (3) = y = -((1/4)*I)*sqrt(2)*(I*a^(2/3)*sqrt(3)+a^(2/3)+2*x^(2/3))^(3/2), (4) = y = ((1/4)*I)*sqrt(2)*(I*a^(2/3)*sqrt(3)+a^(2/3)+2*x^(2/3))^(3/2), (5) = y = -(a^(2/3)-x^(2/3))^(3/2), (6) = y = (a^(2/3)-x^(2/3))^(3/2)})

 

 

Looking at result above, I think I can safely eliminate all y solutions with complex number I in them. This leaves the last two listed above (real y). Which is a little better than before.

Download how_to_eliminate_brute_force.mw

 

 

I do not understand why Maple sometimes shows singular solution to Clairaut ODE and sometimes not.

Clairaut ODE has the form y(x) = x y'(x) + G(x, y')

In the following ODE when I ask Maple to dsolve it as is, it does give singular solution. Next, when solving explicity for y(x) first, which will generate 2 ODE's, each is Clairaut ODE, then ask Maple to dsolve each, now Maple no longer gives the singular solution. But when I solve each one of these ODE's, I see that there is the singular solution there. It must be there, since this is Clairaut ODE and it has singular solution.

When I do PDEtools:-casesplit on each of the two ODE's generated by solving for y(x) first, I see the singular solution there.

The question is, why Maple dsolve does not show the singular solution in the second case? And how to make it show it? Or did I do something wrong?

restart;

Typesetting:-Settings(typesetprime=true):

ode:=x^2*diff(y(x),x)^2-(1+2*x*y(x))*diff(y(x),x)+1+y(x)^2 = 0;

x^2*(diff(y(x), x))^2-(1+2*x*y(x))*(diff(y(x), x))+1+y(x)^2 = 0

DEtools:-odeadvisor(ode)

[[_1st_order, _with_linear_symmetries], _rational, _Clairaut]

Vector([dsolve(ode,y(x))]); #now it shows singular solution (first one below)

Vector(3, {(1) = y(x) = (1/4)*(4*x^2-1)/x, (2) = y(x) = _C1*x-sqrt(_C1-1), (3) = y(x) = _C1*x+sqrt(_C1-1)})

PDEtools:-casesplit(ode)

`casesplit/ans`([(diff(y(x), x))^2 = (2*y(x)*(diff(y(x), x))*x+diff(y(x), x)-y(x)^2-1)/x^2], [2*(diff(y(x), x))*x^2-2*x*y(x)-1 <> 0]), `casesplit/ans`([y(x) = (1/4)*(4*x^2-1)/x], [])

ode:=convert(ode,D): #solve for y(x) first, this will generate 2 ODE's
sol:=[solve(ode,y(x))]:
odes:=Vector(map(z->y(x)=z,convert(sol,diff)))

Vector(2, {(1) = y(x) = (diff(y(x), x))*x+sqrt(diff(y(x), x)-1), (2) = y(x) = (diff(y(x), x))*x-sqrt(diff(y(x), x)-1)})

DEtools:-odeadvisor(odes[1]);
DEtools:-odeadvisor(odes[2]);

[[_1st_order, _with_linear_symmetries], _rational, _Clairaut]

[[_1st_order, _with_linear_symmetries], _rational, _Clairaut]

dsolve(odes[1],y(x)); #where is singular solution?

y(x) = _C1*x+(_C1-1)^(1/2)

dsolve(odes[2],y(x)); #where is singular solution?

y(x) = _C1*x-(_C1-1)^(1/2)

PDEtools:-casesplit(odes[1])

`casesplit/ans`([diff(y(x), x)-1 = (-(diff(y(x), x)-1)^(1/2)+y(x)-x)/x, diff(y(x), x) = (-(diff(y(x), x)-1)^(1/2)+y(x))/x], [1+2*x*(diff(y(x), x)-1)^(1/2) <> 0]), `casesplit/ans`([y(x) = (1/4)*(4*x^2-1)/x], [])

PDEtools:-casesplit(odes[2])

`casesplit/ans`([diff(y(x), x)-1 = ((diff(y(x), x)-1)^(1/2)+y(x)-x)/x, diff(y(x), x) = ((diff(y(x), x)-1)^(1/2)+y(x))/x], [2*x*(diff(y(x), x)-1)^(1/2)-1 <> 0]), `casesplit/ans`([y(x) = (1/4)*(4*x^2-1)/x], [])

 

 

Download missing_singular.mw

To help decide the type of ODE, I need a function which moves all derivatives to lhs and everything else to the rhs of the ODE. This way I can more easily analyze the ODE.

The ode will be only first order. Any term which contains  (y')^n, is to be moved to the lhs. Rest to rhs. Couple of examples will help illustrate the problem. This is done in code only, without looking at the screen. The dependent variable is always y and the independent variable is x.  So I need to turn the ODE to the form 

                    G(y',y'^2,y'^3,.....,y'^n)  = F(x,y)

I can find all derivatives in the ODE using

indets['flat'](ode,{`^`('identical'(diff(y(x),x)),'algebraic'),'identical'(diff(y(x),x))})

But not sure how this will help me do what I want. isolate does not help, since it only takes one term at a time. Collect also did not help for same reason.  If the ODE contains only ONE derivative, then it is easy to do. But the question is about how to do it for ODE which contains more than y' term of different powers as the examples below show.

What methods to do this in Maple? I looked at DEtools but so far did not see anything.

Example 1

 

restart;
ode:=3*diff(y(x),x)^2+diff(y(x),x)^3+sin(x)+y(x)=x*y(x)+x*diff(y(x),x);

3*(diff(y(x), x))^2+(diff(y(x), x))^3+sin(x)+y(x) = x*y(x)+x*(diff(y(x), x))

indets['flat'](ode,{`^`('identical'(diff(y(x),x)),'algebraic'),'identical'(diff(y(x),x))})

{(diff(y(x), x))^2, (diff(y(x), x))^3, diff(y(x), x)}

ode_wanted:= 3*diff(y(x),x)^2+diff(y(x),x)^3-x*diff(y(x),x)=-sin(x)-y(x)+x*y(x)

3*(diff(y(x), x))^2+(diff(y(x), x))^3-x*(diff(y(x), x)) = -sin(x)-y(x)+x*y(x)

Example 2

 

restart;
ode:=3*diff(y(x),x)^2+diff(y(x),x)=x*diff(y(x),x)+5;

3*(diff(y(x), x))^2+diff(y(x), x) = x*(diff(y(x), x))+5

indets['flat'](ode,{`^`('identical'(diff(y(x),x)),'algebraic'),'identical'(diff(y(x),x))})

{(diff(y(x), x))^2, diff(y(x), x)}

ode_wanted:= 3*diff(y(x),x)^2+diff(y(x),x)-x*diff(y(x),x)=5

3*(diff(y(x), x))^2+diff(y(x), x)-x*(diff(y(x), x)) = 5

 

 

Download lhs_rhs.mw

 

This is may be a philosophical question. But sometimes Maple suprises me when telling it to "simplify" expression. As in this example.

expr:=1/(y^3+1)^(2/3);

1/(y^3+1)^(2/3)

int(expr,y)

y*hypergeom([1/3, 2/3], [4/3], -y^3)

simplify(%)

(2/9)*y*Pi*3^(1/2)*LegendreP(-1/3, -1/3, (-y^3+1)/(y^3+1))/((-y^3)^(1/6)*(y^3+1)^(1/3)*GAMMA(2/3))

 


For me, the original result is "simpler". (Not only smaller leaf count, but it has one special function, vs. two: Legendre and Gamma). But may be Maple considers hypergeom always more "complex" than any other?

That is why I use simplify(expr,size) because I am scared of simplify without any option, as I have little idea how it decides which is simpler.

Any thoughts from the experts on how Maple decided to simplify something when no option is used? What kinds of rules it uses to decide how to transform the expression?

Maple 2019.1

 

Download simplify.mw

I am not able to understand why this ODE is quadrature. It is first order ODE of second degree. Solving for y'(x) gives two ODE's. Only one of these two ODE's is quadrature and the second is Abel.

So  why and how did odesdvisor come to conclusion that it is  quadrature? Did it pick the first ODE that comes from solving for y'(x)?

Note that from help, quadrature is ODE (for first order) is one which
the ODE is of first order and the right hand sides below depend only on x or y(x)

And the above definition only applied here for one of the 2 ODE's embeded inside this first order ODE of second degree. So I am just trying to understand the logic behind this result of odeadvisor

ode:= (x^2-a*y(x))*diff(y(x),x)^2-2*x*y(x)*diff(y(x),x) = 0;

(x^2-a*y(x))*(diff(y(x), x))^2-2*x*y(x)*(diff(y(x), x)) = 0

DEtools:-odeadvisor(ode);

[_quadrature]

odes:=[solve(ode,diff(y(x),x))]; #solve for y' we get 2 first order ODE's

[0, -2*x*y(x)/(a*y(x)-x^2)]

DEtools:-odeadvisor(diff(y(x),x)=odes[1]); #find type of first one

[_quadrature]

DEtools:-odeadvisor(diff(y(x),x)=odes[2]); #find type of second one

[[_homogeneous, `class G`], _rational, [_Abel, `2nd type`, `class A`]]


Download why_only_quadrature.mw

btw, the above is just one example. I have many more. below show one more such example

#example 2

ode:=diff(y(x),x)^3-(2*x+y(x)^2)*diff(y(x),x)^2+(x^2-y(x)^2+2*x*y(x)^2)*diff(y(x),x)-(x^2-y(x)^2)*y(x)^2 = 0;

(diff(y(x), x))^3-(2*x+y(x)^2)*(diff(y(x), x))^2+(x^2-y(x)^2+2*x*y(x)^2)*(diff(y(x), x))-(x^2-y(x)^2)*y(x)^2 = 0

DEtools:-odeadvisor(ode);

[_quadrature]

odes:=[solve(ode,diff(y(x),x))]; #solve for y' we get 3 first order ODE's

[y(x)^2, x+y(x), x-y(x)]

DEtools:-odeadvisor(diff(y(x),x)=odes[1]); #find type of first one

[_quadrature]

DEtools:-odeadvisor(diff(y(x),x)=odes[2]); #find type of second one

[[_linear, `class A`]]

DEtools:-odeadvisor(diff(y(x),x)=odes[3]); #find type of third one

[[_linear, `class A`]]

 

 

Download why_only_quadrature_2.mw

Maple 2019.1

 

First 144 145 146 147 148 149 150 Last Page 146 of 208