7
$\begingroup$

Bug introduced in 6.0 or earlier and fixed in 10.1


Consider this set of PDE $$\left( x^{2}+y^{2}\right) \dfrac {\partial u}{\partial x}+n x y\dfrac{\partial u}{\partial y}=0$$ have general solution $$u\left( x,y\right) =f\left( \dfrac {1}{n-1}\dfrac {\left( n-1\right) x^{2}-y^{2}}{y^{\dfrac{2}{n}}}\right)$$for $n\in Z$ and $n\geq 2$, where $f$ is an arbitrary function.

However, in Mathematica, only solution for $n=2$ can be given. For $n=3$ and $n=4$, Mathematica calculates for a long time (I didn't wait for the result).

The key point is when $n\geq 5$, Mathematica starts giving strange error messages and refuse to solve the PDE. For example,

DSolve[(x^2 + y^2) D[u[x, y], x] + 5 x y D[u[x, y], y] == 0, u[x, y], {x, y}]
(*{{c[x, y] -> C[1][DSolve`DSolvePDEDump`const$19959[1]]}}*)

I get

Function::slot: Slot[DSolveDSolvePDEDumpiPowerExpand[1]] (in DSolveDSolvePDEDumpiPowerExpand[DSolveDSolvePDEDumpiPowerExpand[DSolveDSolvePDEDumpiPowerExpand[-1024] DSolveDSolvePDEDumpiPowerExpand[DSolveDSolvePDEDumpiPowerExpand[<<1>>]^DSolveDSolvePDEDumpiPowerExpand[<<1>>]]]+<<1>>+<<3>>+DSolveDSolvePDEDumpiPowerExpand[<<33>>[Slot[<<33>>[<<1>>]]]^<<33>>[5]]]&) should contain a non-negative integer. >>

Root::npoly: (DSolveDSolvePDEDumpiPowerExpand[DSolveDSolvePDEDumpiPowerExpand[DSolveDSolvePDEDumpiPowerExpand[-1024] DSolveDSolvePDEDumpiPowerExpand[DSolveDSolvePDEDumpiPowerExpand[<<1>>]^DSolveDSolvePDEDumpiPowerExpand[<<1>>]]]+<<4>>+DSolveDSolvePDEDumpiPowerExpand[<<33>>[Slot[<<33>>[<<1>>]]]^<<33>>[5]]]&)[#1] is not a polynomial in #1. >>

I understand that Mathematica may not always be able to solve a PDE, but why am I getting those error messages? What do they mean?

$\endgroup$
  • $\begingroup$ I wonder what form has that f in the "general" solution ... Can you share some info about it? $\endgroup$ – Dr. belisarius Mar 13 '15 at 12:40
  • $\begingroup$ @belisarius f is an arbitrary function. In other words, no matter what f you choose, $u \left( x,y\right)$ is a solution to the PDE. To simplify the problem, you can ignore the $f$ function and just use what is inside. $\endgroup$ – happy fish Mar 13 '15 at 12:43
  • $\begingroup$ @belisarius Linear and quasilinear first-order PDEs have such a solution. In DSolve[D[u[x, y], x] + D[u[x, y], y] == 1, u, {x, y}] and DSolve[D[u[x, y], x] + u[x, y] D[u[x, y], y] == 1, u, {x, y}] the f shows up as C[1]. $\endgroup$ – Michael E2 Mar 13 '15 at 13:52
  • 1
    $\begingroup$ @belisarius I just learned that a few months ago myself :) -- never had a course in PDEs. I think of it like this: An ordinary antiderivative is defined up to a function of no variables (i.e. a constant); an anti-partial-derivative is defined up to a function n-1 variables, where n is the number of variables in the fn./PDE being integrated. $\endgroup$ – Michael E2 Mar 13 '15 at 14:07
  • 1
    $\begingroup$ OK, it is confirmed as a bug by Wolfram technical support. $\endgroup$ – happy fish Mar 17 '15 at 16:11
3
$\begingroup$

This bug is fixed in Mathematica 10.1.0. (Mac OS X 10.10.3)

DSolve[(x^2 + y^2) D[u[x, y], x] + 5 x y D[u[x, y], y] == 0, u[x, y], {x, y}]// AbsoluteTiming

Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information. >>

{0.086166,{{u[x, y] -> C[1][Log[-((4 x^2 - y^2)^(5/8)/y^(1/4))]]}, 
{u[x, y] -> C[1][Log[-((I (4 x^2 - y^2)^(5/8))/y^(1/4))]]}, 
{u[x, y] -> C[1][Log[(I (4 x^2 - y^2)^(5/8))/y^(1/4)]]},
{u[x, y] -> C[1][Log[(4 x^2 - y^2)^(5/8)/y^(1/4)]]}, 
{u[x, y] -> C[1][Log[-(((-1)^(1/4) (4 x^2 - y^2)^(5/8))/y^(1/4))]]}, 
{u[x, y] -> C[1][Log[((-1)^(1/4) (4 x^2 - y^2)^(5/8))/y^(1/4)]]}, 
{u[x, y] -> C[1][Log[-(((-1)^(3/4) (4 x^2 - y^2)^(5/8))/y^(1/4))]]}, 
{u[x, y] -> C[1][Log[((-1)^(3/4) (4 x^2 - y^2)^(5/8))/y^(1/4)]]}}}

Similarly, it worked with all $n\geq5$, but for $n=4$ and $n=3$, the evaluation is still quite long.

$\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.