aroche

Dr. Austin Roche

805 Reputation

11 Badges

13 years, 8 days
Maplesoft
Waterloo, Ontario, Canada
I am a Software Architect in the Math Group, working mostly on the Maple library. I have been working at Maplesoft since 2007, in various areas including differential equations, integration, mathematical functions, simplification, root finding, and logic. I completed a Master's degree from McGill University with a thesis in Differential Geometry, and a PhD from Simon Fraser University with a thesis on Differential Equations.

MaplePrimes Activity


These are answers submitted by aroche

Hi @nm,

Thanks for this report. I agree that this ODE is known to be unsolvable (in terms of known mathematical functions) and therefore dsolve should not waste time trying to solve it. As such, we've added a special case to return NULL for this ODE and others in the same class. The fix is distributed for everybody using Maple 2025 within the Maple Customer Support Updates v.13 or newer:

restart;

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 13 and is the same as the version installed in this computer, created April 22, 2025, 15:14 hours Eastern Time.`

(1)

tt := time():

 

 

infolevel[dsolve]:=5:
ode:=diff(y(x),x)=x+y(x)^3:
sol:=dsolve(ode,y(x));

Methods for first order ODEs:

 

--- Trying classification methods ---

 

trying a quadrature

 

trying 1st order linear

 

trying Bernoulli

 

trying separable

 

trying inverse linear

 

trying homogeneous types:

 

trying Chini

 

Chini's absolute invariant is: (1/27)/x^5

 

differential order: 1; looking for linear symmetries

 

trying exact

 

trying Abel

 

The relative invariant s3 is: x

 

The first absolute invariant s5^3/s3^5 is: 1/x^5

 

...checking Abel class AIR 3-parameter, reducible to Riccati

 

The first absolute invariant L1 is: 1/x^5

 

The second absolute invariant L2 is: -5

 

The third absolute invariant L3 is: 0

 

The invariant signatures are [[-1, 0, 0], [1, 0, 0]].

 

Looking for potential symmetries

 

trying inverse_Riccati

 

trying an equivalence to an Abel ODE

 

differential order: 1; trying a linearization to 2nd order

 

--- trying a change of variables {x -> y(x), y(x) -> x}

 

differential order: 1; trying a linearization to 2nd order

 

trying 1st order ODE linearizable_by_differentiation

 

--- Trying Lie symmetry methods, 1st order ---

 

 -> Computing symmetries using: way = 3

 

 -> Computing symmetries using: way = 4

 

 -> Computing symmetries using: way = 2

 

trying symmetry patterns for 1st order ODEs

 

-> trying a symmetry pattern of the form [F(x)*G(y), 0]

 

-> trying a symmetry pattern of the form [0, F(x)*G(y)]

 

-> trying symmetry patterns of the forms [F(x),G(y)] and [G(y),F(x)]

 

-> trying a symmetry pattern of the form [F(x),G(x)]

 

-> trying a symmetry pattern of the form [F(y),G(y)]

 

-> trying a symmetry pattern of the form [F(x)+G(y), 0]

 

-> trying a symmetry pattern of the form [0, F(x)+G(y)]

 

-> trying a symmetry pattern of the form [F(x),G(x)*y+H(x)]

 

-> trying a symmetry pattern of conformal type

 

(3)

time_elapsed := time() - tt;

.734

(4)

Download MP240255.mw

Please refer to the announcement of the new Maple Customer Support Updates for more detailed installation and usage instructions.

Austin Roche
Maplesoft

Hi @nm,

Thank you for collecting these reports. The [edit: simplify, symgen, and odetest] bugs have been fixed internally for a while but we have been working on a new system of updates to publish these fixes. The announcement of the new Maple Customer Support Updates was just made today.

The examples you list [edit: except for the int examples] are all fixed with the latest version of the new Maple Customer Support Updates. The fixes are distributed for everybody using Maple 2025 within the Maplesoft Customer Support Updates v.10 or newer.

In order to activate these updates, you can either download them via the Maple Cloud, or simply issue the following command:

  PackageTools:-Install(5137472255164416);

In particular, installing this Cloud package introduces a new Maple library package named SupportTools which allows you to manage the Updates in a more convenient way.

Once installed, you can test that the fixes mentioned above are in place as follows:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 10 and is the same as the version installed in this computer, created April 22, 2025, 15:14 hours Eastern Time.`

(1)

#18573
e:=(1/4*(RootOf(-100*_Z^4*exp(arctanh(1/3*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh(1/3*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(_C11)^16-68*x^(16/5)*_Z^2*exp(_C11)^16+256*x^(16/5)*exp(_C11)^16)^2+16)/RootOf(-100*_Z^4*exp(arctanh(1/3*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh(1/3*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(_C11)^16-68*x^(16/5)*_Z^2*exp(_C11)^16+256*x^(16/5)*exp(_C11)^16)-1/2*(1/4*(RootOf(-100*_Z^4*exp(arctanh(1/3*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh(1/3*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(_C11)^16-68*x^(16/5)*_Z^2*exp(_C11)^16+256*x^(16/5)*exp(_C11)^16)^2+16)^2/RootOf(-100*_Z^4*exp(arctanh(1/3*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh(1/3*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(_C11)^16-68*x^(16/5)*_Z^2*exp(_C11)^16+256*x^(16/5)*exp(_C11)^16)^2-16)^(1/2))*x:

timelimit(60,simplify(e));

(1/4)*(RootOf(-100*_Z^4*exp(arctanh((1/3)*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh((1/3)*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(16*_C11)-68*x^(16/5)*_Z^2*exp(16*_C11)+256*x^(16/5)*exp(16*_C11))^2-((RootOf(-100*_Z^4*exp(arctanh((1/3)*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh((1/3)*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(16*_C11)-68*x^(16/5)*_Z^2*exp(16*_C11)+256*x^(16/5)*exp(16*_C11))^2-16)^2/RootOf(-100*_Z^4*exp(arctanh((1/3)*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh((1/3)*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(16*_C11)-68*x^(16/5)*_Z^2*exp(16*_C11)+256*x^(16/5)*exp(16*_C11))^2)^(1/2)*RootOf(-100*_Z^4*exp(arctanh((1/3)*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh((1/3)*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(16*_C11)-68*x^(16/5)*_Z^2*exp(16*_C11)+256*x^(16/5)*exp(16*_C11))+16)*x/RootOf(-100*_Z^4*exp(arctanh((1/3)*(5*_Z^2-32*_Z+80)/(_Z^2-16))+arctanh((1/3)*(5*_Z^2+32*_Z+80)/(_Z^2-16)))+x^(16/5)*_Z^4*exp(16*_C11)-68*x^(16/5)*_Z^2*exp(16*_C11)+256*x^(16/5)*exp(16*_C11))

(2)

#12178

ode:=diff(y(x),x) = lambda*arctan(x)^n*y(x)^2+beta*m*x^(m-1)-lambda*beta^2*x^(2*m)*arctan(x)^n:
timelimit(60,DEtools:-symgen(ode));

# Returns NULL

#12181
ode:=diff(x(y),y) = x(y)/(x(y)^(2*m)*arctan(x(y))^m*a*y^2+x(y)^n*arctan(x(y))^m*b*y+arctan(x(y))^m*c-n*y):

timelimit(60,DEtools:-symgen(ode));

# Returns NULL

#12187
restart;
ode:=diff(y(x),x)=lambda*arccot(x)^n*y(x)^2+beta*m*x^(m-1)-lambda*beta^2*x^(2*m)*arccot(x)^n:
timelimit(120,DEtools:-symgen(ode));

# Returns NULL

#12190
restart;
ode:=diff(x(y),y) = x(y)/(x(y)^(2*m)*arccot(x(y))^m*a*y^2+x(y)^n*arccot(x(y))^m*b*y+arccot(x(y))^m*c-n*y):
timelimit(120,DEtools:-symgen(ode));

# Returns NULL

#10708 (Edit: This one is still not yet fixed)
restart;
e:=2/(ln(x)-exp(1/x))*x*diff(diff(u(x),x),x)-(-2/(ln(x)-exp(1/x))^2*x*(1/x+1/x^2*exp(1/x))+2/(ln(x)-exp(1/x))+8*x^3/(ln(x)-exp(1/x))^2)*diff(u(x),x)-4/(ln(x)-exp(1/x))^3*x^2*(-2*x^3+ln(x)-exp(1/x)-2*x)*u(x):
e:=evala(e):
timelimit(120,int(e,x));

Error, (in anonymous procedure called from simplify/getinds) time expired

 

#6764 (Edit: This one is still not yet fixed)
restart;
e:=1/2/x^(7/2)*2^(1/2)*Pi^(1/2)/(1/x)^(1/2)*cos(1/x)*(1+x):
timelimit(120,int(e,x));

Error, (in simplify/common_factors) time expired

 

#19337
restart;
sol:=-y+Intat((_a*((_a^2+1)/_a^2)^(1/2)+_a^2+1)*exp(-1/2*(arctanh(1/(_a^2+1)^(1/2))*((_a^2+1)/_a^2)^(1/2)*_a^3+2*_C3*(_a^2+1)^(1/2)*_a^2+(_a^2+1)^(1/2)*((_a^2+1)/_a^2)^(1/2)*_a+(_a^2+1)^(1/2))/(_a^2+1)^(1/2)/_a^2)/((_a^2+1)/_a^2)^(1/2)/_a^5,_a = RootOf(x(y)-exp(-1/2*(arctanh(1/(_Z^2+1)^(1/2))*((_Z^2+1)/_Z^2)^(1/2)*_Z^3+2*_C3*(_Z^2+1)^(1/2)*_Z^2+(_Z^2+1)^(1/2)*((_Z^2+1)/_Z^2)^(1/2)*_Z+(_Z^2+1)^(1/2))/(_Z^2+1)^(1/2)/_Z^2)))+_C4 = 0:
ode:=-1/2/(diff(x(y),y)^2+1)^(1/2)*(diff(x(y),y)*(arctanh(1/(diff(x(y),y)^2+1)^(1/2))*diff(x(y),y)^2+(diff(x(y),y)^2+1)^(1/2))*((diff(x(y),y)^2+1)/diff(x(y),y)^2)^(1/2)+(diff(x(y),y)^2+1)^(1/2))/diff(x(y),y)^2 = ln(x(y))+_C3:
timelimit(60,odetest(sol,ode));

-(1/2)*RootOf(x(y)-exp(-(1/2)*(arctanh(1/(_Z^2+1)^(1/2))*((_Z^2+1)/_Z^2)^(1/2)*_Z^3+2*c__3*(_Z^2+1)^(1/2)*_Z^2+(_Z^2+1)^(1/2)*((_Z^2+1)/_Z^2)^(1/2)*_Z+(_Z^2+1)^(1/2))/((_Z^2+1)^(1/2)*_Z^2)))*arctanh(1/(RootOf(x(y)-exp(-(1/2)*(arctanh(1/(_Z^2+1)^(1/2))*((_Z^2+1)/_Z^2)^(1/2)*_Z^3+2*c__3*(_Z^2+1)^(1/2)*_Z^2+(_Z^2+1)^(1/2)*((_Z^2+1)/_Z^2)^(1/2)*_Z+(_Z^2+1)^(1/2))/((_Z^2+1)^(1/2)*_Z^2)))^2+1)^(1/2))*(1+1/RootOf(x(y)-exp(-(1/2)*(arctanh(1/(_Z^2+1)^(1/2))*((_Z^2+1)/_Z^2)^(1/2)*_Z^3+2*c__3*(_Z^2+1)^(1/2)*_Z^2+(_Z^2+1)^(1/2)*((_Z^2+1)/_Z^2)^(1/2)*_Z+(_Z^2+1)^(1/2))/((_Z^2+1)^(1/2)*_Z^2)))^2)^(1/2)/(RootOf(x(y)-exp(-(1/2)*(arctanh(1/(_Z^2+1)^(1/2))*((_Z^2+1)/_Z^2)^(1/2)*_Z^3+2*c__3*(_Z^2+1)^(1/2)*_Z^2+(_Z^2+1)^(1/2)*((_Z^2+1)/_Z^2)^(1/2)*_Z+(_Z^2+1)^(1/2))/((_Z^2+1)^(1/2)*_Z^2)))^2+1)^(1/2)-ln(x(y))-c__3-(1/2)*(1+1/RootOf(x(y)-exp(-(1/2)*(arctanh(1/(_Z^2+1)^(1/2))*((_Z^2+1)/_Z^2)^(1/2)*_Z^3+2*c__3*(_Z^2+1)^(1/2)*_Z^2+(_Z^2+1)^(1/2)*((_Z^2+1)/_Z^2)^(1/2)*_Z+(_Z^2+1)^(1/2))/((_Z^2+1)^(1/2)*_Z^2)))^2)^(1/2)/RootOf(x(y)-exp(-(1/2)*(arctanh(1/(_Z^2+1)^(1/2))*((_Z^2+1)/_Z^2)^(1/2)*_Z^3+2*c__3*(_Z^2+1)^(1/2)*_Z^2+(_Z^2+1)^(1/2)*((_Z^2+1)/_Z^2)^(1/2)*_Z+(_Z^2+1)^(1/2))/((_Z^2+1)^(1/2)*_Z^2)))-(1/2)/RootOf(x(y)-exp(-(1/2)*(arctanh(1/(_Z^2+1)^(1/2))*((_Z^2+1)/_Z^2)^(1/2)*_Z^3+2*c__3*(_Z^2+1)^(1/2)*_Z^2+(_Z^2+1)^(1/2)*((_Z^2+1)/_Z^2)^(1/2)*_Z+(_Z^2+1)^(1/2))/((_Z^2+1)^(1/2)*_Z^2)))^2

(3)
 

 

Download fixed_collection_of_problems_maple_2025.mw


Please refer to the announcement of the new Maple Customer Support Updates for more detailed installation and usage instructions.

Austin Roche
Maplesoft

Hi @nm,

After a bit of experimentation, I found two solutions satisfying the IC as follows:

y(x) = x^(2/3)

and

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

Although the second looks more complicated, it's actually just the complex conjugate of the first (at least for real x).

The algorithm in dsolve which tries to find these solutions starts with the general solution and applies the ICs to try to determine the value of the integration constant. In this case, there is no finite solution for the integration constant from the given general solution which satisfies the ICs. You'd need to redefine it via something like c__1 = -ln(c__2) and then solve for c__2 and then simplify the result and then you'd find that the value of c__2 you need is actually 0 - which doesn't translate to a sensible corresponding value for c__1. There is code in dsolve to deal with these problems, but it seems that in this example it needs a bit of improvement.

Thanks for the report. I will continue to investigate!

Cheers,
   Austin

Hi @ider,

Thank you for this helpful report! This was an old bug but it has been fixed for Maple2025:

tmp := (cos(alpha)*cosh(alpha*nu)*cos(beta)*cosh(nu*beta)+sin(alpha)*sinh(alpha*nu)*sin(beta)*sinh(nu*beta)+I*(sin(alpha)*sinh(alpha*nu)*cos(beta)*cosh(nu*beta)-cos(alpha)*cosh(alpha*nu)*sin(beta)*sinh(nu*beta)))*BesselK(I*nu+1, abs(k)*rho); fct := Im(I*tmp+k*(diff(tmp, k))); fct2 := `assuming`([Im(I*tmp+k*(diff(tmp, k)))], [k::real])

evalPt := [alpha = (1/4)*Pi, beta = (1/8)*Pi, rho = 1/2, nu = 1]

evalf(eval(eval(fct, evalPt), k = 1))

-1.285653066

(1)

evalf(eval(eval(fct, evalPt), k = -1))

-1.285653066

(2)

evalf(eval(eval(fct2, evalPt), k = 1))

-1.285653066

(3)

evalf(eval(eval(fct2, evalPt), k = -1))

-1.285653066

(4)

Download question_fixed3.mw

Cheers,

    Austin Roche
    Maplesoft

Hi @nm,

Thanks for this report. The bug is fixed and the new solution is simply y(x) = x^(-a).

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1845 and is the same as the version installed in this computer, created 2025, February 26, 9:46 hours Pacific Time.`

sys := [diff(y(x),x)-x^a*y(x)^3+3*y(x)^2-x^(-a)*y(x)-x^(-2*a)+a*x^(-a-1) = 0, y(1)=1];

[diff(y(x), x)-x^a*y(x)^3+3*y(x)^2-x^(-a)*y(x)-x^(-2*a)+a*x^(-a-1) = 0, y(1) = 1]

dsolve(sys);

y(x) = x^(-a)

odetest(%, sys);

[0, 0]

Download 239927.mw


There were two problems here. Addressing either one of them fixes the problem. I've fixed one of them, as follows. The general solution includes two solutions, but neither of these evalautes to the desired solution satisfying y(1)=1 for a finite value of c__1. However, one can get this particular solution by taking the limit as c__1 goes to infinity:

gen_sol := dsolve(sys[1], useInt);

y(x) = -exp(Int(-2/x^a, x))/(c__1-2*(Int(x^a*(exp(Int(-2/x^a, x)))^2, x)))^(1/2)+1/x^a, y(x) = exp(Int(-2/x^a, x))/(c__1-2*(Int(x^a*(exp(Int(-2/x^a, x)))^2, x)))^(1/2)+1/x^a

limit(gen_sol[1], c__1 = infinity);

y(x) = x^(-a)

   

Download 239927_a.mw

This process of taking an infinite limit is only tried when it's required by the ICs, and in that case there is some work to do to determine exactly which infinite limit is required. In this case there was a limit of the form limit(f(x), x=t*infinity) for some expression t, and it turns out that is not a valid syntax for limit, but adjusting it to limit(eval(f(x), x=t*inf), inf=infinity) was sufficient to work around this issue.

The second potential fix is to just include the missing particular solution (i.e. y = x^(-a)) in the general solution to begin with. There were some problems with that approach but they do not look insumountable, so that could potentially be addressed soon as well.

The fix is distributed for everybody using Maple 2024 within the Maplesoft Physics Updates v.1845 or newer. To install the Updates, open Maple and input Physics:-Version(latest).

Austin Roche
Maplesoft

Hi @nm,

Thanks for this report. There was a recursion error in `trig/normal` which has now been fixed:

> `trig/normal`(((-2472*3^(1/2)-4288)*2^(1/2)+3496*3^(1/2)+6064)*(10+7*2^(1/2))^(1/2)+(6008*6^(1/2)+10408*2^(1/2)-8496*3^(1/2)-14720)*cos(1/24*Pi));
Error, (in trig/normal/sincosargs) too many levels of recursion

The call to odetest should now consistently return 0:

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1843 and is the same as the version installed in this computer, created 2025, January 25, 22:5 hours Pacific Time.`

`trig/normal`(((-2472*3^(1/2)-4288)*2^(1/2)+3496*3^(1/2)+6064)*(10+7*2^(1/2))^(1/2)+(6008*6^(1/2)+10408*2^(1/2)-8496*3^(1/2)-14720)*cos(1/24*Pi));

((-2472*3^(1/2)-4288)*2^(1/2)+3496*3^(1/2)+6064)*(10+7*2^(1/2))^(1/2)+(6008*6^(1/2)+10408*2^(1/2)-8496*3^(1/2)-14720)*cos((1/24)*Pi)

sol:=y(x) = 1/2*x*(-1-(1+I*3^(1/2))*((I*2^(1/2)-1+I)*(I*2^(1/2)+1+I)^2)^(2/3)-2*((I*
2^(1/2)-1+I)*(I*2^(1/2)+1+I)^2)^(1/3)-I*((I*2^(1/2)+I)^2-1)*3^(1/2)+(I*2^(1/2)+
I)^2)/((I*2^(1/2)-1+I)*(I*2^(1/2)+1+I)^2)^(1/3)/(I*2^(1/2)+I):
ode:=x^3+3*x*y(x)^2+(y(x)^3+3*x^2*y(x))*diff(y(x),x) = 0:

odetest(sol,ode,y(x));

0

Download trig_normal2.mw

The fix is distributed for everybody using Maple 2024 within the Maplesoft Physics Updates v.1843 or newer. To install the Updates, open Maple and input Physics:-Version(latest).

Austin Roche
Maplesoft

Hi @nm,

Thanks for this report. The problem as mentioned by
@ecterrab was a non-idempotency in 'factor': Repeated calls to factor produced unstable results:

poly := 12*I*x^2*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*y+8*I*x*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*x1-8*x*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*x1*2^(1/2)+4*I*KummerM(1/8*I*2^(1/2)+7/4,3/2,I*2^(1/2)*x^2)*y+3*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*2^(1/2)*y-7*KummerM(1/8*I*2^(1/2)+7/4,3/2,I*2^(1/2)*x^2)*2^(1/2)*y:

> factor(%);
I*(12*x^2*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*y+8*I*2^(1/2)*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*x*x1+8*x*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*x1-3*I*2^(1/2)*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*y+7*I*2^(1/2)*KummerM(1/8*I*2^(1/2)+7/4,3/2,I*2^(1/2)*x^2)*y+4*KummerM(1/8*I*2^(1/2)+7/4,3/2,I*2^(1/2)*x^2)*y)

> factor(%);
12*I*x^2*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*y+8*I*x*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*x1-8*x*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*x1*2^(1/2)+4*I*KummerM(1/8*I*2^(1/2)+7/4,3/2,I*2^(1/2)*x^2)*y+3*KummerM(3/4+1/8*I*2^(1/2),3/2,I*2^(1/2)*x^2)*2^(1/2)*y-7*KummerM(1/8*I*2^(1/2)+7/4,3/2,I*2^(1/2)*x^2)*2^(1/2)*y

That problem has now been fixed, and consequently there is now a correct result from dsolve:

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1842 and is the same as the version installed in this computer, created 2025, January 25, 15:47 hours Pacific Time.`

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

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

sol := dsolve(ode):

length(sol);

12793

sol2 := simplify(sol);

y(x) = exp(-(233/152)*((Int(x^4*exp(-(1/2)*x^2*(I*2^(1/2)+1))*KummerU(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2), x))*(Int(x*KummerM(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*exp(-(1/2)*x^2*(I*2^(1/2)-1)), x))+(Int(x*KummerM(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*exp(-(1/2)*x^2*(I*2^(1/2)-1)), x))*c__2-(Int(x^4*exp(-(1/2)*x^2*(I*2^(1/2)+1))*KummerM(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2), x))*(Int(x*KummerU(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*exp(-(1/2)*x^2*(I*2^(1/2)-1)), x))-(Int(x*KummerU(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*exp(-(1/2)*x^2*(I*2^(1/2)-1)), x))*c__1-(Int(x^4*exp(-(1/2)*x^2*(I*2^(1/2)+1))*KummerU(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*(Int(x*KummerM(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*exp(-(1/2)*x^2*(I*2^(1/2)-1)), x)), x))+Int(x^4*exp(-(1/2)*x^2*(I*2^(1/2)+1))*KummerM(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*(Int(x*KummerU(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*exp(-(1/2)*x^2*(I*2^(1/2)-1)), x)), x)-c__3)*((5104/4427)*(I*2^(1/2)-599/638)*KummerU(((1/8)*I)*2^(1/2)-1/4, 3/2, I*2^(1/2)*x^2)*KummerM(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)+(I*2^(1/2)-122/233)*KummerU(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*KummerM(((1/8)*I)*2^(1/2)-1/4, 3/2, I*2^(1/2)*x^2))*exp(I*2^(1/2)*x^2)/((KummerU(((1/8)*I)*2^(1/2)-1/4, 3/2, I*2^(1/2)*x^2)*(((29/19)*I)*2^(1/2)+22/19)*KummerM(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)+(I*2^(1/2)+5/4)*KummerU(3/4+((1/8)*I)*2^(1/2), 3/2, I*2^(1/2)*x^2)*KummerM(((1/8)*I)*2^(1/2)-1/4, 3/2, I*2^(1/2)*x^2))^2*x))

length(sol2);

2249

odetest(sol2, ode);

0

Download Kummer_solution.mw

As shown, the result unfortunately still requires simplify to get it down to reasonable size. I'll keep investigating why that is and see if it can be improved.

The fix is distributed for everybody using Maple 2024 within the Maplesoft Physics Updates v.1842 or newer. To install the Updates, open Maple and input Physics:-Version(latest).

Austin Roche
Maplesoft

Hi @nm,

Thanks for this important report. Your analysis was spot on: The Cauchy-Euler solver was attempted despite the ODE not being in that class. The conditions were not being checked properly and that has now been fixed. The new result is an error telling that the ODE is not supported by the Student:-ODEs package:

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1840 and is the same as the version installed in this computer, created 2024, December 26, 12:58 hours Pacific Time.`

ode:=diff(diff(y(x),x),x)*sin(x)^2 = 2*y(x);
Student:-ODEs:-ODESteps(ode);

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

Error, (in Student:-ODEs:-OdeSolveOrder2) ODE is not supported

Download NotEuler.mw


By the way, regarding the remark by @Alfred_F, dsolve gets an equivalent solution that needs a bit of massaging to get the desired form:

dsolve(ode);

y(x) = c__1*cot(x)+c__2*(I*ln(cos(2*x)+sin(2*x)*I)*sin(2*x)-2*cos(2*x)+2)/(-1+cos(2*x))

simplify(convert(%, exp), symbolic);

y(x) = (2*x*c__2+c__1)*cot(x)-2*c__2

Download dsolveNotEuler.mw


The fix is distributed for everybody using Maple 2024 within the Maplesoft Physics Updates v.1840 or newer. To install the Updates, open Maple and input Physics:-Version(latest).

Austin Roche
Maplesoft

Hi @nm,

Thank you for this helpful report! The bug has been fixed and we now get the expected answer of [0,0] for the result of odetest comparing the solution with the ode and the IC:

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1839 and is the same as the version installed in this computer, created 2024, December 2, 10:11 hours Pacific Time.`

ode:=1+x*y(x)*(1+y(x)^2*x)*diff(y(x),x) = 0:
IC:=y(1) = 0:
sol:=x = 1/(3*exp(y(x)^2/2) - y(x)^2 - 2):

odetest(sol,ode);

0

odetest(sol,[ode,IC]);

[0, 0]

Download odetest_with_IC.mw

A note about what was going wrong: In the presence of an IC, implicit solutions in certain forms were wrongly being classified as explicit, and then the explicit tester was being used which was not effective. So in fact the order of the results was not switched! The 0 result was indeed a verification that the IC was satisfied, and the non-0 result was actually a failure to verify that the ODE itself was satisfied. This can be checked by providing a different IC as part of the test, and noticing that in that case both results are now non-0 (note that I am removing the fix to make this test):

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1839. The version installed in this computer is 1838 created 2024, December 2, 10:11 hours Pacific Time, found in the directory C:\Users\Austin\maple\toolbox\2024\Physics Updates\lib\`

ode:=1+x*y(x)*(1+y(x)^2*x)*diff(y(x),x) = 0:
IC:=y(1) = 0:
sol:=x = 1/(3*exp(y(x)^2/2) - y(x)^2 - 2):

odetest(sol,ode);

0

wrong_IC := y(1) = 1;

y(1) = 1

odetest(sol,[ode,wrong_IC]);

[(y(x)^4-y(x)^2*y(-1/(y(x)^2-3*exp((1/2)*y(x)^2)+2))*(D(y))(-1/(y(x)^2-3*exp((1/2)*y(x)^2)+2))+y(-1/(y(x)^2-3*exp((1/2)*y(x)^2)+2))^3*(D(y))(-1/(y(x)^2-3*exp((1/2)*y(x)^2)+2))-6*y(x)^2*exp((1/2)*y(x)^2)+3*exp((1/2)*y(x)^2)*y(-1/(y(x)^2-3*exp((1/2)*y(x)^2)+2))*(D(y))(-1/(y(x)^2-3*exp((1/2)*y(x)^2)+2))+4*y(x)^2-2*y(-1/(y(x)^2-3*exp((1/2)*y(x)^2)+2))*(D(y))(-1/(y(x)^2-3*exp((1/2)*y(x)^2)+2))+9*exp(y(x)^2)-12*exp((1/2)*y(x)^2)+4)/(y(x)^2-3*exp((1/2)*y(x)^2)+2)^2, 1-(-2*LambertW(_Z2, -(3/2)*exp(-3/2))-3)^(1/2)]

Download previous_odetest_with_bad_IC.mw

The fix is distributed for everybody using Maple 2024 within the Maplesoft Physics Updates v.1839 or newer. To install the Updates, open Maple and input Physics:-Version(latest).

Austin Roche
Maplesoft

Hi @nm,

Thanks again for finding this bug. The bug has been fixed and now after finding a polynomial solution via the series method, this particular solution is used to reduce the order and the reduced order ODE can also be solved, leading to the general solution of the original problem.

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1836 and is the same as the version installed in this computer, created 2024, December 2, 10:11 hours Pacific Time.`

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

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

Student:-ODEs:-ODESteps(ode,y(x));

"[[,,"Let's solve"],[,,3 ((ⅆ)^2)/(ⅆx^2) y(x)+x ((ⅆ)/(ⅆx) y(x))-4 y(x)=0],["•",,"Highest derivative means the order of the ODE is" 2],[,,((ⅆ)^2)/(ⅆx^2) y(x)],["•",,"Isolate 2nd derivative"],[,,((ⅆ)^2)/(ⅆx^2) y(x)=-(x ((ⅆ)/(ⅆx) y(x)))/3+(4 y(x))/3],["•",,"Group terms with" y(x) "on the lhs of the ODE and the rest on the rhs of the ODE; ODE is linear"],[,,((ⅆ)^2)/(ⅆx^2) y(x)+(x ((ⅆ)/(ⅆx) y(x)))/3-(4 y(x))/3=0],["•",,"Multiply by denominators"],[,,3 ((ⅆ)^2)/(ⅆx^2) y(x)+x ((ⅆ)/(ⅆx) y(x))-4 y(x)=0],["•",,"Assume series solution for" y(x)],[,,y(x)=(∑)a[k] x^k],["▫",,"Rewrite DE with series expansions"],[,"?","Convert" x*((ⅆ)/(ⅆx) y(x)) "to series expansion"],[,,[]=(∑)a[k] k x^k],[,"?","Convert" ((ⅆ)^2)/(ⅆx^2) y(x) "to series expansion"],[,,((ⅆ)^2)/(ⅆx^2) y(x)=(∑)a[k] k (k-1) x^(k-2)],[,"?","Shift index using" k "->" k+2],[,,((ⅆ)^2)/(ⅆx^2) y(x)=(∑)a[k+2] (k+2) (k+1) x^k],[,,"Rewrite DE with series expansions"],[,,(∑)(3 a[k+2] (k+2) (k+1)+a[k] (k-4)) x^k=0],["•",,"Each term in the series must be 0, giving the recursion relation"],[,,(3 k^2+9 k+6) a[k+2]+a[k] (k-4)=0],["•",,"Recursion relation; series terminates at" k=4],[,,a[k+2]=-(a[k] (k-4))/(3 (k^2+3 k+2))],["•",,"Apply recursion relation for" k=0],[,,a[2]=(2 a[0])/3],["•",,"Apply recursion relation for" k=2],[,,a[4]=(a[2])/18],["•",,"Express in terms of" a[0]],[,,a[4]=(a[0])/27],["•",,"Terminating series solution of the ODE. Use reduction of order to find the second linearly independent solution"],[,,y(x)=a[0] (1+2/3 x^2+1/27 x^4)],["•",,"Use this particular solution to reduce the order of the ODE and find a complete solution"],[,,y(x)=(1+2/3 x^2+1/27 x^4) (∫((e)^(-(x^2)/6+c__1))/((x^4+18 x^2+27)^2) ⅆx+c__2)]]6""

Download steps.mw
The fix is distributed for everybody using Maple 2024 within the Maplesoft Physics Updates v.1836 or newer. To install the Updates, open Maple and input Physics:-Version(latest).

Austin Roche
Maplesoft

 

 

Hi @nm,

This appears to be a problem in the RegularChains library and is currently under investigation.

Thank you for the report!

Austin Roche
Maplesoft

Hi Dmitry,

Thank you very much for this helpful report!

As mentioned by @ecterrab, there was an issue in `simplify/RootOf` that was encountered during the solving process for this problem. This issue has now been fixed, and the ode is now solvable via dsolve, returning a large answer. The answer is verifiable with odetest, and can be simplified to something of a more reasonable size by calling simplify:

Physics:-Version()

`The "Physics Updates" version in the MapleCloud is 1817 and is the same as the version installed in this computer, created 2024, October 3, 12:7 hours Pacific Time.`

sys := diff(S(t), t) = -b*(-alpha*u__1+c)*S(t)*K(t)/N-u__2*a*M, diff(K(t), t) = b*(-alpha*u__1+c)*S(t)*K(t)/N

inc := S(0) = S0, K(0) = K0

ans := dsolve({inc, sys})

`[Length of output exceeds limit of 1000000]`

odetest(ans, {inc, sys})

{0}

simplified_ans := simplify(ans)

length(simplified_ans)

77415

odetest(simplified_ans, {inc, sys})

{0}

Download dsolve_solve_RootOf_issue2.mw

Moreover, it should be noted that the alternative approach mentioned by @dharr actually leads to an even more convenient answer.

The fix is distributed for everybody using Maple 2024.1 within the Maplesoft Physics Updates v.1816 or newer. To install the Updates, open Maple and input Physics:-Version(latest)

Austin Roche
Maplesoft

Hi,

Thank you for finding this bug! It's been fixed, but as mentioned by @Thomas Richard, the ODE is beyond the scope of what the Student package can handle, so the new result is just an error message saying that this ODE is not supported:

Physics:-Version();

`The "Physics Updates" version in the MapleCloud is 1811 and is the same as the version installed in this computer, created 2024, September 21, 11:10 hours Pacific Time.`

ode:=sin(x)*diff(y(x),x$2)+cos(x)*diff(y(x),x)+(sin(x)-cos(x))*y(x)=0:

Student:-ODEs:-ODESteps(ode);

Error, (in Student:-ODEs:-OdeSolveOrder2) ODE is not supported

Download Physicsv1811.mw

The fix is distributed for everybody using Maple 2024 within the Maplesoft Physics Updates v.1811 or newer. To install the Updates, open Maple and input Physics:-Version(latest)

Austin Roche
Maplesoft

Hi,

Thanks for this report. A fix has been implemented internally and is expected to be avaiable in the next Physics update (edit: it's there already in v.1793, see comment below), as well as in the next full release of Maple.

The new answer is 'true'.

Austin Roche
Software Architect
Mathematical Software
Maplesoft

Hi @nm,

Just to let you know that I've made some changes and now the derivative is being solved for first, so for this example y(x)*y'(x) = 0 the solution is now the simpler y(x) = c as expected:

Student:-ODEs:-ODESteps(y(x)*diff(y(x),x)=0);

"[[,,"Let's solve"],[,,y(x) ((ⅆ)/(ⅆx) y(x))=0],["•",,"Highest derivative means the order of the ODE is" 1],[,,(ⅆ)/(ⅆx) y(x)],["•",,"Separate variables"],[,,(ⅆ)/(ⅆx) y(x)=0],["•",,"Integrate both sides with respect to" x],[,,∫((ⅆ)/(ⅆx) y(x)) ⅆx=∫0 ⅆx+`c__1`],["•",,"Evaluate integral"],[,,y(x)=`c__1`],["•",,"Solve for" y(x)],[,,y(x)=`c__1`]]"

Download 238382_Ans1.mw

As usual, the fix is included within the Maplesoft Physics Updates v.1758 or newer. To install the Updates, open Maple and input Physics:-Version(latest)

Austin Roche
Maplesoft

1 2 3 Page 2 of 3