22
$\begingroup$

I run Kamke differential equations in version 11 and compared the result to version 10.4. Found 29 differential equations that are no longer solved in version 11. Actually v11 hangs on these, eating more and more RAM with 100% cpu. At least I waited too long to find if it will finish. in v10.4 each one is solved in less than 5 minutes.

With 10.4, Mathematica solved 75.93% of the problems, with version 11, it solved 74.43%. So the performance went down.

There are 1940 differential equations. When I looked at the ones not solved in v11, I noticed in 10.4 the solution for them all has Solve in it. So the solution was implicit. Which is OK. I thought may be Mathematica no longer return implicit solutions to an ODE. But I see other ODE's that are solved in v11 that do have implicit solution. So this can't be the reason.

I am posting the ODE's here, to ask if someone can shed some light on why v11 no longer solves these ODE's. May be there is some common reason for this. This looks like regression to me.

First I list the ODE's numbers. These are the ones not solved in v11 but solved in 10.4. When I say not solved, I mean it hanged. It did not actually return the input as normally would happen when it can't solve an ODE.

 {45, 52, 54, 58, 69, 70, 71, 185, 189, 204, 231, 249, 272, 338, 
  430, 459, 495, 501, 554, 571, 608, 622, 796, 815, 971, 983, 984, 
  1602, 1688}

Here are the 29 ODE's

 DSolve[3*b*y[x]^2 + 2*(-(b^2*x) + a^2*x^3)*y[x]^3 + y'[x] == 0, y[x], x]

 DSolve[-(b*x^(n/(1 - n))) - a*y[x]^n + Derivative[1][y][x] == 0,y[x],x]

 DSolve[-((y[x]*Derivative[1][f][x])/f[x]) - f[x]*Derivative[1][g][x]
  - a^n*f[x]^(1 - n)*y[x]^n*Derivative[1][g][x] + 
  Derivative[1][y][x] == 0,y[x],x]

 DSolve[-(b*x) - a*Sqrt[y[x]] + Derivative[1][y][x] == 0,y[x],x]

 DSolve[-Sqrt[(a0 + a1*x + a2*x^2 + a3*x^3 + a4*x^4)*(b0 + b1*y[x] +
  b2*y[x]^2 + b3*y[x]^3 + b4*y[x]^4)] + Derivative[1][y][x] == 0,y[x],x]

 DSolve[-Sqrt[(a0 + a1*x + a2*x^2 + a3*x^3 + a4*x^4)/(b0 + b1*y[x] + 
  b2*y[x]^2 + b3*y[x]^3 + b4*y[x]^4)] + Derivative[1][y][x] == 0,y[x],x]

 DSolve[-Sqrt[(b0 + b1*y[x] + b2*y[x]^2 + b3*y[x]^3 + b4*y[x]^4)/(a0 
  + a1*x + a2*x^2 + a3*x^3 + a4*x^4)] + Derivative[1][y][x] == 0,y[x],x]

 DSolve[5*x^3*y[x]^2 + 2*(1 + x^2)*y[x]^3 + x^7*Derivative[1][y][x] == 0,y[x],x]

 DSolve[-(b*x^((1 + m)*n)) - a*y[x]^n + x^(m*(-1 + n) + n)*
     Derivative[1][y][x] == 0,y[x],x]

 DSolve[x + a*y[x] + y[x]*Derivative[1][y][x] == 0,y[x],x]

 DSolve[EulerGamma + beta*x + alpha*y[x] + (c + b*x + a*y[x])*
     Derivative[1][y][x] == 0,y[x],x]

 DSolve[beta*y[x]^2 + alpha*y[x]^3 + (b*x^n + a*x*y[x])*
     Derivative[1][y][x] == 0,y[x],x]

 DSolve[-y[x]^2 + (x^2 + y[x]^2)*Derivative[1][y][x] == 0,y[x],x]

 DSolve[2*x*Sin[alpha]*y[x] + Cos[alpha]*(-x^2 + y[x]^2) + x*
   Sqrt[x^2 + y[x]^2] + (-2*x*Cos[alpha]*y[x] + Sin[alpha]*
   (-x^2 + y[x]^2) + y[x]*Sqrt[x^2 + y[x]^2])*
   Derivative[1][y][x] == 0,y[x],x]

DSolve[c0 + a0*x + b0*y[x] + (c1 + a1*x + b1*y[x])*
  Derivative[1][y][x] + (c2 + a2*x)*Derivative[1][y][x]^2 == 0,y[x],x]

 DSolve[E^(-2*y[x]) - (-1 + Derivative[1][y][x])^2 + 
   Derivative[1][y][x]^2/E^(2*x) == 0,y[x],x]

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

 DSolve[d*y[x]^2 - b*y[x]*Derivative[1][y][x] + (c + b*x + 
    a*y[x]^2)*Derivative[1][y][x]^2 == 0,y[x],x]

 DSolve[y[x] - n*x*Derivative[1][y][x] + x^(-1 + n)*
      Derivative[1][y][x]^n == 0,y[x],x]

 DSolve[a*x^n*f[Derivative[1][y][x]] - y[x] + x*Derivative[1][y][x] == 0,y[x],x]

 DSolve[Derivative[1][y][x] == Sqrt[y[x]]/(F[(x - y[x])/Sqrt[y[x]]] +
      Sqrt[y[x]]),y[x],x]

 DSolve[Derivative[1][y][x] == (2 + Sqrt[1 + 3*x] + y[x])^(-1),y[x],x]

 DSolve[Derivative[1][y][x] == (x*y[x]^3)/(3*E^((3*x^2)/2)*
     (3*E^((3*x^2)/2) + 3*y[x] + E^((3*x^2)/2)*y[x])),y[x],x]

 DSolve[Derivative[1][y][x] == (E^(3*x^2)*x*(3 + y[x])^3)/
    (81*(3*E^((3*x^2)/2) + 3*y[x] + E^((3*x^2)/2)*y[x])),y[x],x]

 DSolve[Derivative[1][y][x] == (1 + x*y[x])^3/x^5,y[x],x]

 DSolve[Derivative[1][y][x] == (x^2 - x^3 + 3*x^2*y[x] - 3*x*y[x]^2 +
      y[x]^3)/((-1 + x)*(1 + x)),y[x],x]

 DSolve[Derivative[1][y][x] == ((-1 + x)*y[x]*(E^(2*x) + E^x*x*y[x] +
    x^2*y[x]^2))/(E^(2*x)*x),y[x],x]

 DSolve[-y[x] + a^(2*n)*(1 + n)*y[x]^(1 + 2*n) + Derivative[2][y][x] == 0,y[x],x]

 DSolve[4*y[x]^2 - x^2*Derivative[1][y][x]*(x + Derivative[1][y][x]) + 
   x^4*Derivative[2][y][x] == 0,y[x],x]

To see the solutions in v10.4 and compare, here link to actual report. kamke_differential_equations

This is v11 64 bit on windows 7 64 bit. Same platform for v10.4

Question is: Why v11 do not solve these 29 ODE's when it did in v10.4 ?

$\endgroup$
  • 1
    $\begingroup$ I don't have time to track down the reason right now, and certainly not for all 29. For the first one, the solution in V10.4.1 is an implicit solution in terms of Solve[..]. If I paste this Solve[] command into V11, it runs for longer than I can wait. Perhaps, it's a change in Solve that is the difference. $\endgroup$ – Michael E2 Aug 23 '16 at 2:38
  • 3
    $\begingroup$ @Nasser: Excellent testing! This and a bunch of other postings makes you wonder what sort of test harness they are using to verify these purported upgrades! Some of the things I have seen are very annoying and I am not sure why they are considered an improvement. Some other CAS already performed better on DEQs and then to have this regression in ability is disheartening. Maybe MMA updates are getting like the Windows OS, you just skip every other one! $\endgroup$ – Moo Aug 23 '16 at 2:39
  • $\begingroup$ @MichaelE2 thanks for checking. Yes, all these ODE's are solved in 10.4 using implicit result. I expected at least same result from 11. $\endgroup$ – Nasser Aug 23 '16 at 2:41
  • 3
    $\begingroup$ Indeed a trace shows an equivalent Solve[] command is tried inside the V11 DSolve[]. I guess some "advance" in Solve causes it to try harder to solve the equation. $\endgroup$ – Michael E2 Aug 23 '16 at 2:43
  • 1
    $\begingroup$ I enjoyed browsing your comparison website. From your study, it seems Maple solves more ODEs, giving less verbose results and in a shorter amount of time than Mathematica. Have I understood this correctly? $\endgroup$ – QuantumDot Aug 23 '16 at 17:50
21
$\begingroup$

The hangs in DSolve appear to be caused by a change in Solve, which attempts to use a wider variety of methods (based on those available in Reduce) for transcendental equations in Mathematica version 11.

This issue clearly needs to be fixed, but a temporary work around is to set the Method option for Solve as shown below.

In[1]:= SetOptions[Solve, Method -> "Restricted"];

In[2]:= DSolve[-((y[x]*f'[x])/f[x]) - f[x]*g'[x] - 
    a^n*f[x]^(1 - n)*y[x]^n*g'[x] + y'[x] == 0, y[x], x] // Head

Out[2]= Solve

The above Method setting is already used by DSolve internally in version 11 but, unfortunately, it does not help in the case of difficult implicit solutions returned by DSolve.

Thank you for posting these examples, and sorry for the confusion caused by the problem.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.