aroche

Dr. Austin Roche

880 Reputation

11 Badges

13 years, 33 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, @dharr, @acer.

I was curious about this restriction at x=1, what goes wrong there? It turns out nothing. This already worked:

odetest(maple_sol,ode) assuming x = 1;

0

It was just a weakness that it didn't work under the assumption x::real. That's been fixed now:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 22 and is the same as the version installed in this computer, created May 28, 2025, 23:36 hours Eastern Time.`

ode:=diff(y(x),x)*(x-ln(diff(y(x),x))) = 1:

maple_sol:=dsolve(ode);

y(x) = -(1+LambertW(-exp(-x))*x+LambertW(-exp(-x))^2)/LambertW(-exp(-x))+c__1

odetest(maple_sol,ode) assuming x::real;

0

Download 240377.mw

FWIW, from the plot it looks like the residue is 0 for all x with Im(x) between -Pi and Pi. I'm not going to bother trying to prove that though.

This improvement is distributed for everybody using Maple 2025 within the Maple Customer Support Updates v.22 or newer. 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 this important report. This bug has been fixed in `trig/normal` and simplify now returns immediately (as expected!) with this simple input:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 21 and is the same as the version installed in this computer, created May 28, 2025, 23:36 hours Eastern Time.`

simplify(tan(Pi/5) + sin(Pi/15) - sqrt(15));

tan((1/5)*Pi)+sin((1/15)*Pi)-15^(1/2)

Download 240389.mw

By the way, I'm considering adjusting the code to get the radical result below instead. As a matter of opinion, would you consider this result in radical form "simpler"? Is this the answer you were hoping for? It's longer and perhaps messier, but radicals instead of trig functions can be considered simpler.

simplify(convert(%, radical));

(1/8)*(-2*5^(1/2)+7)*2^(1/2)*(5+5^(1/2))^(1/2)+(1/8)*(-9*5^(1/2)+1)*3^(1/2)

Download 240389_radical.mw


In any case, the fix mentioned above is distributed for everybody using Maple 2025 within the Maple Customer Support Updates v.21 or newer. Please refer to the announcement of the new Maple Customer Support Updates for more detailed installation and usage instructions.

Austin Roche
Maplesoft

Hi @nm,

Thanks for this report! @ecterrab was kindly able to provide a fix in `assuming`:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 20 and is the same as the version installed in this computer, created May 23, 2025, 23:34 hours Eastern Time.`

Physics:-Setup(assumingusesAssume = true):

pde := diff(u(r, t), t) = k*diff(u(r, t), r$2):
ic  := u(r,0)=r*f(r):
bc  := u(0,t)=0,u(a,t)=a*phi(t):
sol:= pdsolve({pde, ic, bc}, u(r, t));

u(r, t) = Sum(2*sin(Pi*n*r/a)*exp(-k*Pi^2*n^2*t/a^2)*(Int(r*(f(r)-phi(0))*sin(Pi*n*r/a), r = 0 .. a))/a, n = 1 .. infinity)+Int(Sum(2*sin(Pi*n*r/a)*exp(-k*Pi^2*n^2*(t-tau)/a^2)*(diff(phi(tau), tau))*a*(-1)^n/(Pi*n), n = 1 .. infinity), tau = 0 .. t)+r*phi(t)

Download 240396.mw

The fix is distributed for everybody using Maple 2025 within the Maple Customer Support Updates v.20 or newer. 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 this report! In this case simplify was wrongly rejecting an intermediate form of the answer before a secondary simplification which needed this form could take effect. I've adjusted the logic:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 18 and is the same as the version installed in this computer, created May 20, 2025, 16:34 hours Eastern Time.`

A := -x*(x - 4*exp(x/2) + 2):
B := x*sqrt((-8*x - 16)*exp(x/2) + x^2 + 4*x + 16*exp(x) + 4):

simplify(A-B) assuming x::real;

0

Download 240306.mw

The fix is distributed for everybody using Maple 2025 within the Maple Customer Support Updates v.18 or newer. Please refer to the announcement of the new Maple Customer Support Updates for more detailed installation and usage instructions.

Austin Roche
Maplesoft

Hi @nm,

I've put in a fix for the error, so that now dsolve returns NULL instead of an error:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 17 and is the same as the version installed in this computer, created May 5, 2025, 12:37 hours Eastern Time.`

ode:=x^2+3*x*diff(y(x),x)=y(x)^3+2*y(x):
dsolve([ode,y(1)=1],[Abel]);
         # Returns NULL

Download 240219_preliminary_fix.mw


I'm still working on a better approach that will get a more useful answer for this example instead.

As usual, the fix is distributed for everybody using Maple 2025 within the Maple Customer Support Updates v.17 or newer. 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 this report! There was a problem in the process of solving to remove/undo the RootOf notation, i.e. converting r = RootOf(f(_Z) = 0) to the form f(r) = 0, but I was able to fix it. 'odetest' now returns 0:

SupportTools:-Version();

`The Customer Support Updates version in the MapleCloud is 16 and is the same as the version installed in this computer, created April 30, 2025, 09:39 hours Eastern Time.`

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

R := RootOf(-exp(_Z)^2*ln(x*(exp(_Z) - 2)) + 2*_C7*exp(_Z)^2 + _Z*exp(_Z)^2 + 4*exp(_Z)*ln(x*(exp(_Z) - 2)) - 8*_C7*exp(_Z) - 4*exp(_Z)*_Z - 2*exp(_Z) - 4*ln(x*(exp(_Z) - 2)) + 8*_C7 + 4*_Z + 6):

sol := y(x) = (-exp(R)^2/2 + 3*exp(R) - 6 + 2*sqrt(exp(R)^2 - 6*exp(R) + 9))*x/(exp(R)^2/2 - 3*exp(R)):

odetest(sol,ode);

0

Download 240275_fixed.mw


The fix is distributed for everybody using Maple 2025 within the Maple Customer Support Updates v.16 or newer. 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 this report! There was an oversight in the new code in `simplify/trig` for Maple 2025 that caused this recursion. That has been fixed in the latest Maple Customer Support Update. Unfortunately your computation still runs a long time (I changed the timelimit to 180 s) and I didn't wait for it to finish, but as far as I can tell there is no longer a recursion error:

SupportTools:-Version();

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

eq:=2*A[6]*exp(-2*t)*cos(t)+2*A[3]*exp(-2*t)*sin(t)-2*A[4]*exp(-2*t)*cos(t)-4*A[7]*exp(-t)*sin(2*t)+4*A[8]*exp(-t)*cos(2*t)-2*A[5]*exp(-2*t)*sin(t)+4*A[2]*exp(-t)+4*A[1]*t*exp(-t)+4*A[3]*exp(-2*t)*cos(t)+4*A[4]*exp(-2*t)*sin(t)+2*A[9]*exp(-t)*cos(2*t)-8*A[9]*t*exp(-t)*sin(2*t)+2*A[10]*exp(-t)*sin(2*t)+8*A[10]*t*exp(-t)*cos(2*t)-2*A[5]*exp(-2*t)*cos(t)+2*A[5]*t*exp(-2*t)*sin(t)-2*A[6]*exp(-2*t)*sin(t)-2*A[6]*t*exp(-2*t)*cos(t)+4*A[5]*t*exp(-2*t)*cos(t)+4*A[6]*t*exp(-2*t)*sin(t) = 3*t*exp(-t)*cos(2*t)-2*t*exp(-2*t)*cos(t):

trial_solution_constants:=[A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9], A[10]]:

timelimit(180,[solve(identity(eq,t),trial_solution_constants) ]);

Error, (in property/ConvertRelation/do) time expired

Download 240262.mw

The fix is distributed for everybody using Maple 2025 within the Maple Customer Support Updates v.15 or newer. 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 this report!

This regression was due to a new answer from solve. In Maple 2024 the answer was NULL:

_EnvAllSolutions := true:

solve(ln(x+1)-(1/2)*ln(y(x)-1)+(1/6)*ln(y(x)+1)+(1/3)*ln(y(x)-2)-(4/3)*ln(2)+((1/6)*I)*Pi, y(x));

Warning, solutions may have been lost

Download 240238_solve_2024.mw


There is a new large answer in Maple 2025 in terms of a RootOf:

restart;

Define an alias for more compact display of the RootOf:

alias(R = RootOf(256 + (x^6 + 6*x^5 + 15*x^4 + 20*x^3 + 15*x^2 + 6*x + 257)*_Z^9 + (3*x^6 + 18*x^5 + 45*x^4 + 60*x^3 + 45*x^2 + 18*x + 771)*_Z^6 + 768*_Z^3)):

_EnvAllSolutions := true:

ans := solve(ln(x+1)-(1/2)*ln(y(x)-1)+(1/6)*ln(y(x)+1)+(1/3)*ln(y(x)-2)-(4/3)*ln(2)+((1/6)*I)*Pi, y(x));

(1/2)*(exp(I*Pi*_Z3))^4*2^(1/3)*(-(1/16)*2^(2/3)*(-R^7*x^6*2^(2/3)-6*R^7*x^5*2^(2/3)-15*R^7*x^4*2^(2/3)-20*R^7*x^3*2^(2/3)-3*R^4*x^6*2^(2/3)-15*R^7*x^2*2^(2/3)-18*R^4*x^5*2^(2/3)-6*R^7*x*2^(2/3)-45*R^4*x^4*2^(2/3)-257*R^7*2^(2/3)-60*R^4*x^3*2^(2/3)-45*R^4*x^2*2^(2/3)-18*R^4*x*2^(2/3)-771*R^4*2^(2/3)-512*R*2^(2/3))^(1/2)*R^4-(1/16)*2^(2/3)*(-R^7*x^6*2^(2/3)-6*R^7*x^5*2^(2/3)-15*R^7*x^4*2^(2/3)-20*R^7*x^3*2^(2/3)-3*R^4*x^6*2^(2/3)-15*R^7*x^2*2^(2/3)-18*R^4*x^5*2^(2/3)-6*R^7*x*2^(2/3)-45*R^4*x^4*2^(2/3)-257*R^7*2^(2/3)-60*R^4*x^3*2^(2/3)-45*R^4*x^2*2^(2/3)-18*R^4*x*2^(2/3)-771*R^4*2^(2/3)-512*R*2^(2/3))^(1/2)*R)^(2/3)+1, (1/2)*(exp(I*Pi*_Z3))^4*2^(1/3)*((1/16)*2^(2/3)*(-R^7*x^6*2^(2/3)-6*R^7*x^5*2^(2/3)-15*R^7*x^4*2^(2/3)-20*R^7*x^3*2^(2/3)-3*R^4*x^6*2^(2/3)-15*R^7*x^2*2^(2/3)-18*R^4*x^5*2^(2/3)-6*R^7*x*2^(2/3)-45*R^4*x^4*2^(2/3)-257*R^7*2^(2/3)-60*R^4*x^3*2^(2/3)-45*R^4*x^2*2^(2/3)-18*R^4*x*2^(2/3)-771*R^4*2^(2/3)-512*R*2^(2/3))^(1/2)*R^4+(1/16)*2^(2/3)*(-R^7*x^6*2^(2/3)-6*R^7*x^5*2^(2/3)-15*R^7*x^4*2^(2/3)-20*R^7*x^3*2^(2/3)-3*R^4*x^6*2^(2/3)-15*R^7*x^2*2^(2/3)-18*R^4*x^5*2^(2/3)-6*R^7*x*2^(2/3)-45*R^4*x^4*2^(2/3)-257*R^7*2^(2/3)-60*R^4*x^3*2^(2/3)-45*R^4*x^2*2^(2/3)-18*R^4*x*2^(2/3)-771*R^4*2^(2/3)-512*R*2^(2/3))^(1/2)*R)^(2/3)+1

Download 240238_solve_2025.mw

 

Unfortunately, the dsolve code was not able to handle this new large answer from solve without getting stuck. We've put in a workaround so that it can deal with answers such as these more appropriately. The new behaviour with this fix is the same as in Maple 2024. 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.`

tt := time():

ode:=diff(y(x),x)+((y(x)+1)*(y(x)-1)*(y(x)-2))/(x+1)=0:
IC:=y(1)=0:
infolevel[dsolve]:=5:
dsolve([ode,IC]);

 -> Computing symmetries using: way = 3

Methods for first order ODEs:

--- Trying classification methods ---

trying a quadrature

trying 1st order linear

trying Bernoulli

trying separable

<- separable successful

y(x) = RootOf(-2048+(x^6+6*x^5+15*x^4+20*x^3+15*x^2+6*x+257)*_Z^18+(-6*x^6-36*x^5-90*x^4-120*x^3-90*x^2-36*x-1542)*_Z^12+(9*x^6+54*x^5+135*x^4+180*x^3+135*x^2+54*x+3081)*_Z^6)^6-1

time_elapsed := time() - tt;

10.203

Download 240255_fixed.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,

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

1 2 3 4 Page 2 of 4