7
$\begingroup$

I have function and its output. But output isn't simplified. I have tried Simplify[%, x < 0], but result was been the same.

pdConv[f_] := 
 TraditionalForm[
  f /. Derivative[inds__][g_][vars__] :> 
    Apply[Defer[D[g[vars], ##]] &, 
     Transpose[{{vars}, {inds}}] /. {{var_, 0} :> 
        Sequence[], {var_, 1} :> {var}}]]

Assuming[x < 0, pdConv[Column[
   DChange[
    {        
     D[u[x, y], {x, 2}] + x*D[u[x, y], {y, 2}] == 0
    },
    {ξ == 3/2*y + (Sqrt[-x])^3, η == 3/2*y - (Sqrt[-x])^3},
    {x, y},
    {ξ, η},
    {u[x, y]}
   ]
  ]
 ]
]

Output:

enter image description here

P.S. If it is necessary pdConv from here, DChange from answer.

$\endgroup$
0

1 Answer 1

6
$\begingroup$

The issue behind isn't simplification or output formating, but the ambiguous transformation rule and equation solving in complex domain. If you read the source code of DChange, you'll notice that it internally uses Solve to find the relationship between old variables and new variables like this:

……
variablesReplacements = Solve[transformations, oldVars][[1]]
……

it assumes there's only one representation for the old variables with new variables, which is certainly reasonable, but from your transformation rule, one can find 2 different representations for the old variables:

 sol = Solve[{ξ == (3 y)/2 + Sqrt[-x]^3, η == (3 y)/2 - Sqrt[-x]^3}, {x, y}]
(* {{x -> -(-(1/2))^(2/3) (η - ξ)^(2/3), y -> (η + ξ)/3}, 
   {x -> ((-1)^(1/3) (η - ξ)^(2/3))/2^(2/3), y -> (η + ξ)/3}} *)

Then DChange will select the first solution, which is actually not what you want:

sol[[1]] /. {η -> -1, ξ -> 1} // N
(* {x -> 0.5 + 0.866025 I, y -> 0.} *)

Use a unambiguous transformation will resolve the problem. If you want to simplify the result further with Assuming, Assuming only has effect on functions that accept Assumptions option, and the only function meets the requirement inside DChange is the Simplify in the last step, so you need to provide assumptions for η and ξ rather than x:

Assuming[η - ξ < 0, 
 pdConv[Column[DChange[{D[u[x, y], {x, 2}] + x*D[u[x, y], {y, 2}] == 0}, 
        {(ξ - 3 y/2)^(1/3) == Sqrt[-x], (-η + 3 y/2)^(1/3) == 
            Sqrt[-x]}, {x, y}, {ξ, η}, {u[x, y]}]]]]

Mathematica graphics

$\endgroup$
2
  • $\begingroup$ thanks a lot for great explanation of trouble!!! Great answer :) Good luck! $\endgroup$
    – Woland
    Commented Oct 9, 2016 at 12:16
  • 1
    $\begingroup$ I could automatically pass Assumtions/$Assumptions to Solve, but you can check that it only make this case worse. Your preprocessing of transformation is needed too. Any tips how this can be generalized are wellcomed. I don't have experience with Solving and it will take time before I figure it out by myself, time I don't have atm :( $\endgroup$
    – Kuba
    Commented Oct 9, 2017 at 22:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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