17
$\begingroup$

Is there any possibility that Mathematica could give asymptotic behavior(s) of a differential equation as it independent variable tends to a certain value?

Because I didn't know how to decompose this hard problem, I just tried the naive code to find a trial solution to the 3rd-order nonlinear ODE:

$$H^2(H_{\eta\eta\eta}-\eta^{-2}H_\eta+\eta^{-1}H_{\eta\eta})-\frac{\eta}{10}=0,$$

which is subject to the boundary conditions: $H(0)=1$ and $H_{\eta\eta}(0)=-c$ with $c$ being a constant. If one wants to seek a solution $H(\eta)$ that is an even function in $\eta$.

DSolve[{H[\[Eta]]^2*(H'''[\[Eta]] - \[Eta]^-2 H'[\[Eta]] + 
   1/\[Eta] H''[\[Eta]]) - \[Eta]/10 == 0, H[0] == 1, 
   H''[0] == -c, H[\[Eta]] == H[-\[Eta]]}, H[\[Eta]], \[Eta]]

Mathematica complains that:

DSolve::litarg: To avoid possible ambiguity, the arguments of the dependent variable in {...} should literally match the independent variables.

Obviously, the error results from the even function condition, H[\[Eta]] == H[-\[Eta]]. If I comment this condition, the code just repeats itself without any solution. Another minor question is:

How to impose an even or odd function requirement in DSolve?

Motivation: The reason why I arise this problem is that the asymptotic behavior of $H(\eta)$ has been shown (I guess by perturbation method which is powerful math tool) as follows. That can be used to check the desired code/method with MMA. I really want to consult superiors of MMA here for some suggestion about how to solve an exactly unsolvable differential equation with the asymptotic method. Thank you in advance!

$H \sim 1-\frac{1}{2}c\eta^2 \quad \text{as} \quad \eta \to 0$

$H(\eta)=\tilde{h}F\left(\eta_0-\eta \right)$ near $\eta_0$, where $H(\eta)$ reaches its minmum value for a given constant $c$, denoted by $\tilde{h}=H(\eta_0)$, $F(x)\sim x^2$ as $x\ll0$ and $F(x)\sim x(\log x)^{1/3}$ for large $x\gg0$.

$\endgroup$
5
  • $\begingroup$ If H[η] is well behaved near η == 0, then the symmetry requirement can be given by H'[0] == 0. This being the case, it is straightforward to obtain a power series solution of the ODE near η == 0. However, if you want an approximate solution at a value η0 outside the radius of convergence of the power series at η == 0, then I see no way even in principle to apply the η == 0 boundary conditions to the approximate solution at that η0. $\endgroup$
    – bbgodfrey
    Jan 27, 2018 at 17:29
  • $\begingroup$ Incidentally, -(3/(4 5^(1/3))) η^(4/3) satisfies the ODE identically but not the boundary condition H[0] == 1. $\endgroup$
    – bbgodfrey
    Jan 27, 2018 at 17:31
  • $\begingroup$ @bbgodfrey, Thanks. For comment1: At $\eta=\eta_0$, could we impose these boundary conditions for the ODE: $H_\eta(\eta_0)=0$, $\tilde{h}=H(\eta_0)$ and $H_{\eta\eta}(\eta_0)>0$, since it reaches its min $\tilde{h}$ at $\eta_0$? $\endgroup$
    – W. Robin
    Jan 28, 2018 at 2:46
  • $\begingroup$ @bbgodfrey, Thanks. For comment2: for your trial solution the boundary condition at $\eta=0$ is $H(0)=0$? $\endgroup$
    – W. Robin
    Jan 28, 2018 at 2:48
  • $\begingroup$ With respect to your two responses, (1) You can, in principle, impose the boundary conditions at η0, but how do you know what value η0 has? (2) Yes. $\endgroup$
    – bbgodfrey
    Jan 28, 2018 at 5:44

3 Answers 3

8
$\begingroup$

It is possible to roll one's own asymptotic solver with the help of Series. As a demonstration, here we show how to obtain an asymptotic power series solution around zero.

The equations in OP, except the even function condition H[η] == H[-η] (which will turned out to be redundant for this particular problem), can be rearranged to (omit the == 0 parts):

eqs = {
       H[η]^2*(H'''[η]-η^-2 H'[η]+1/η H''[η])-η/10,
       H[0] - 1,
       H''[0] + c
      };

If we assume the existence of power expansion about $x=0$:

$$H(x) = \sum_{k=0}^\infty h_k x^k$$

then a series representation of $H$ and its derivatives can be straightforwardly defined through following rules:

seriesRules = RightComposition[
    ReplaceAll[{
          H[x_] :>
                (Inactive[Series][H[η], {η, 0, max}] // Inactive[ReplaceAll][η -> x]),
          Derivative[s_Integer?Positive][H][x_] :>
                (Inactive[Series][Derivative[s][H][η], {η, 0, max}] // Inactive[ReplaceAll][η -> x])
        }],
    (* the odd/even function constraint can be described as following rule *)
    (* Inactive[ReplaceAll][{
          (* odd: *)(* H[0] :> 0,Derivative[s_Integer?EvenQ][H][0] :> 0 *)
          (* even: *)Derivative[s_Integer?OddQ][H][0] :> 0
        }], *)
    Inactive[ReplaceAll][{H[0] :> h[0], Derivative[s_Integer][H][0] :> h[s]}]
];

Applying it on eqs gives us its series version:

series = eqs // seriesRules;

For a given series order max, series can be Activated to become algebra equations serieseqs about $h_0,h_1,...$:

asymptoticOrder = 10;
serieseqs = series //
               ReplaceAll[max -> asymptoticOrder] // Activate //
               Map[
                   If[Head[#] === SeriesData, #[[3]], #] &
                  ] //
               Flatten // Thread[# == 0] & // DeleteCases[True];

Luckily the equations we got here are all nice and easy to solve:

seriessol = Inactive[Solve][serieseqs, 
                            Union[Cases[serieseqs, _h, ∞]][[;; UpTo[Length@serieseqs]]]
                ] // Activate;
seriessol // Apply[List, #, {2}] & // Map[Grid[#, Frame -> All] &] // Row

series coefficient solution

Thus the corresponding approximate solution for $H$

H[η] // seriesRules //
        ReplaceAll[max -> asymptoticOrder] // Activate //
        ReplaceAll[seriessol]

finite series solution for H

(But do be aware this is only a formal series solution. The convergence is yet to prove.)

$\endgroup$
4
  • $\begingroup$ What is "UpTo" ? I get an error message: "1;;UpTo[13] is not a valid Span specification" $\endgroup$ Mar 3, 2018 at 18:28
  • $\begingroup$ @VaclavKotesovec It's a handy function introduced in version 10.3. Should be easy to replace with something involving Min. $\endgroup$
    – Silvia
    Mar 4, 2018 at 13:24
  • $\begingroup$ @Silvia Should we end up your final equation with $O(\eta^{12})$? $\endgroup$
    – W. Robin
    Mar 12, 2018 at 6:36
  • $\begingroup$ @W.Robin The calculation rules on SeriesData are built-in. They decided the exponent of $O(\eta^{11})$. In this case, there maybe the coefficient for the $\eta^{11}$ term stored at position {3,12} of SeriesData[...], but it's the penultimate argument of it decides to which term to show in a StandardForm / TraditionalForm. $\endgroup$
    – Silvia
    Mar 12, 2018 at 17:37
12
$\begingroup$

Mathematica 11.3? Will have AsymptoticDSolve and support for these

Mathematica graphics

And WKB also

Mathematica graphics

It will also finally have series solution for DSolve

Mathematica graphics

Mathematica graphics

See Asymptotic Expansions at http://www.wolfram.com/broadcast/video.php?c=104&p=3&v=2091

$\endgroup$
5
  • $\begingroup$ thanks for the information. I only have access to v9 and v10. Is there any workaround for this AsymptoticDSolve on the lower version? $\endgroup$
    – W. Robin
    Jan 27, 2018 at 16:31
  • $\begingroup$ @W.Robin I do not know of any Mathematica package which does this. You could wait for next version of M, and upgrade then. $\endgroup$
    – Nasser
    Jan 27, 2018 at 16:36
  • 1
    $\begingroup$ @W.Robin Just to clarify: Mathematica 11.3 is not released yet. $\endgroup$
    – QuantumDot
    Jan 27, 2018 at 17:49
  • $\begingroup$ @QuantumDot, thanks for the information. So I'd like to find a method to achieve this aim with a lower version :) $\endgroup$
    – W. Robin
    Jan 28, 2018 at 7:06
  • $\begingroup$ It did come out in 12? reference.wolfram.com/language/ref/… $\endgroup$
    – chris
    Jul 8, 2020 at 6:30
3
$\begingroup$

It's not a answer of Yours question,only a info if Mathematica 11.3 can solve or not.

Using Mathematica 11.3,it seems can't find solution.

enter image description here

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