---
title: "AsymptoticSolve"
language: "en"
type: "Symbol"
summary: "AsymptoticSolve[eqn, y -> b, x -> a] computes asymptotic approximations of solutions y[x] of the equation eqn passing through {a, b}. AsymptoticSolve[eqn, {y}, x -> a] computes asymptotic approximations of solutions y[x] of the equation eqn for x near a. AsymptoticSolve[eqns, {y1, y2, ...} -> {b1, b2, ...}, {x1, x2, ...} -> {a1, a2, ...}] computes asymptotic approximations of solutions {y1[x1, x2, ...], y2[x1, x2, ...], ...} of the system of equations eqns. AsymptoticSolve[eqns, ..., {{x1, x2, ...}, {a1, a2, ...}, n}] computes the asymptotic approximation to order n. AsymptoticSolve[..., Reals] computes only solutions that are real valued for real argument values."
keywords: 
- approximate equation solving
- asymptotic equation solving
- series solutions
- series solutions to equations
- singular curves
- singular surfaces
- parametric dependence of equations
canonical_url: "https://reference.wolfram.com/language/ref/AsymptoticSolve.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Asymptotics"
    link: "https://reference.wolfram.com/language/guide/Asymptotics.en.md"
  - 
    title: "Equation Solving"
    link: "https://reference.wolfram.com/language/guide/EquationSolving.en.md"
  - 
    title: "Polynomial Algebra"
    link: "https://reference.wolfram.com/language/guide/PolynomialAlgebra.en.md"
related_functions: 
  - 
    title: "Solve"
    link: "https://reference.wolfram.com/language/ref/Solve.en.md"
  - 
    title: "Asymptotic"
    link: "https://reference.wolfram.com/language/ref/Asymptotic.en.md"
  - 
    title: "Reduce"
    link: "https://reference.wolfram.com/language/ref/Reduce.en.md"
  - 
    title: "FindInstance"
    link: "https://reference.wolfram.com/language/ref/FindInstance.en.md"
  - 
    title: "FindRoot"
    link: "https://reference.wolfram.com/language/ref/FindRoot.en.md"
  - 
    title: "Series"
    link: "https://reference.wolfram.com/language/ref/Series.en.md"
  - 
    title: "AsymptoticDSolveValue"
    link: "https://reference.wolfram.com/language/ref/AsymptoticDSolveValue.en.md"
  - 
    title: "AsymptoticRSolveValue"
    link: "https://reference.wolfram.com/language/ref/AsymptoticRSolveValue.en.md"
---
# AsymptoticSolve

AsymptoticSolve[eqn, y -> b, x -> a] computes asymptotic approximations of solutions y[x] of the equation eqn passing through {a, b}.

AsymptoticSolve[eqn, {y}, x -> a] computes asymptotic approximations of solutions y[x] of the equation eqn for x near a.

AsymptoticSolve[eqns, {y1, y2, …} -> {b1, b2, …}, {x1, x2, …} -> {a1, a2, …}] computes asymptotic approximations of solutions {y1[x1, x2, …], y2[x1, x2, …], …} of the system of equations eqns.

AsymptoticSolve[eqns, …, {{x1, x2, …}, {a1, a2, …}, n}] computes the asymptotic approximation to order n. 

AsymptoticSolve[…, Reals] computes only solutions that are real valued for real argument values.

## Details and Options

* Asymptotic approximations are typically used to solve problems for which no exact solution can be found or to get simpler answers for computation, comparison and interpretation.

* ``AsymptoticSolve[eqn, …, x -> a]`` computes the leading term in an asymptotic expansion for ``eqn``. Use ``SeriesTermGoal`` to specify more terms.

* The asymptotic approximation ``yn[x]`` is often given as a sum ``yn[x] == ∑k = 1nαkϕk[x]``, where ``{ϕ1[x], …, ϕn[x]}`` is an asymptotic scale ``ϕ1[x]≻ϕ2[x]≻⋯ > ϕn[x]`` as ``x -> a``. Then the result satisfies ``AsymptoticLess[y[x] - yn[x], ϕn[x], x -> a]`` or ``y[x] - yn[x]∈o[ϕn[x]]`` as ``x -> a``.

* Common asymptotic scales include:

|                                                                                           |                           |
| ----------------------------------------------------------------------------------------- | ------------------------- |
| $(x-a)^0\succ (x-a)^1\succ (x-a)^2\succ \cdots$             | Taylor scale when x -> a   |
| $(x-a)^{-3}\succ (x-a)^{-2}\succ (x-a)^{-1}\succ \cdots$    | Laurent scale when x -> a  |
| $x^{-1}\succ x^{-2}\succ x^{-3}\succ \cdots$                | Laurent scale when x -> ±∞ |
| $(x-a)^{1/p}\succ (x-a)^{2/p}\succ (x-a)^{3/p}\succ \ldots$ | Puiseux scale when x -> a  |

* The scales used to express the asymptotic approximation are automatically inferred from the problem and can often include more exotic scales.

* The center coordinates ``a`` and ``b`` can be any finite or infinite real or complex numbers.

* The order ``n`` must be a positive integer and specifies order of approximation for the asymptotic solution. It may not be related to polynomial degree.

* The system of equations ``eqns`` can be any logical combination of equations.

* The following options can be given:

|                     |                   |                                                                    |
| ------------------- | ----------------- | ------------------------------------------------------------------ |
| Assumptions         | \$Assumptions     | assumptions to make about parameters                               |
| Direction           | Automatic         | direction in which x approaches a                                  |
| GenerateConditions  | Automatic         | whether to generate answers that involve conditions on parameters  |
| Method              | Automatic         | method to use                                                      |
| PerformanceGoal     | \$PerformanceGoal | aspects of performance to optimize                                 |
| SeriesTermGoal      | Automatic         | number of terms in the approximation                               |

* Possible settings for ``Direction`` include:

|                     |                                                         |
| ------------------- | ------------------------------------------------------- |
| Reals or "TwoSided" | from both real directions                               |
| "FromAbove" or  -1  | from above or larger values                             |
| "FromBelow" or +1   | from below or smaller values                            |
| Complexes           | from all complex directions                             |
| Exp[I θ]            | in the direction $\theta$ |
| {dir1, …, dirn}     | use direction diri for variable xi independently        |

* ``Direction -> Exp[I θ]`` at ``x^ * `` indicates the direction tangent of a curve approaching the limit point ``x^ * ``.

[image]

* For finite values of ``a``, the ``Automatic`` setting means from above.

* When domain ``Reals`` is specified, the solutions are real valued when ``x`` approaches ``a`` in the indicated ``Direction``.

* Possible settings for ``GenerateConditions`` include:

|           |                                             |
| --------- | ------------------------------------------- |
| Automatic | nongeneric conditions only                  |
| True      | all conditions                              |
| False     | no conditions                               |
| None      | return unevaluated if conditions are needed |

* Possible settings for ``PerformanceGoal`` include ``\$PerformanceGoal``, ``"Quality"`` and ``"Speed"``. With the ``"Quality"`` setting, ``AsymptoticSolve`` typically solves more problems or produces simpler results, but it potentially uses more time and memory.

---

## Examples (44)

### Basic Examples (5)

Find asymptotic approximations of solutions passing through the point ``{0, 0}`` :

```wl
In[1]:= AsymptoticSolve[E^y - Cos[x y] + x == 0, {y, 0}, {x, 0, 7}]

Out[1]= {{y -> -x - (x^2/2) - (x^3/3) - (3 x^4/4) - (6 x^5/5) - (13 x^6/8) - (141 x^7/56)}}
```

---

Find asymptotic approximations of solutions for ``x`` near ``0`` :

```wl
In[1]:= AsymptoticSolve[x y^4 - (x + 1) y^2 + x == 1, {y}, {x, 0, 3}]

Out[1]= {{y -> -I + (3 I x/2) - (27 I x^2/8) + (207 I x^3/16)}, {y -> I - (3 I x/2) + (27 I x^2/8) - (207 I x^3/16)}, {y -> -(1/Sqrt[x]) - Sqrt[x] + 2 x^3 / 2}, {y -> (1/Sqrt[x]) + Sqrt[x] - 2 x^3 / 2}}
```

---

Find the leading terms of asymptotic approximations of solutions as $x\to \infty$ :

```wl
In[1]:= AsymptoticSolve[y ^ 3 + E ^ x y + x Log[x] == 0, y, x -> Infinity]

Out[1]= {{y -> -E^-x x Log[x]}, {y -> -I E^x / 2}, {y -> I E^x / 2}}
```

---

Find only the solutions that are real valued when ``x`` approaches ``0`` from above:

```wl
In[1]:= AsymptoticSolve[x y^4 - (x + 1) y^2 + x == 1, {y}, {x, 0, 3}, Reals]

Out[1]= {{y -> -(1/Sqrt[x]) - Sqrt[x] + 2 x^3 / 2}, {y -> (1/Sqrt[x]) + Sqrt[x] - 2 x^3 / 2}}
```

---

Find asymptotic approximations of solutions of a system of equations:

```wl
In[1]:= AsymptoticSolve[x^2 - u (y + 1) == y^2 - v (x + 1) && u^2 - u (x + 1) == v^2 + v (y + 1), {{u, v}, {0, 0}}, {{x, y}, {0, 0}, 3}]

Out[1]= {{u -> (x^2/2) - (x^3/2) - (y^2/2) + (x y^2/2), v -> -(x^2/2) + (x^2 y/2) + (y^2/2) - (y^3/2)}}
```

### Scope (18)

#### One-Dimensional Solutions in 2D (8)

Power series solutions of polynomial equations passing through a specified point:

```wl
In[1]:= AsymptoticSolve[y ^ 3 - x y == 24, {y, 3}, {x, 1, 3}]

Out[1]= {{y -> 3 + (3/26) (-1 + x) - (3 (-1 + x)^2/17576) - (309 (-1 + x)^3/5940688)}}
```

Plot the asymptotic solution and the solution it approximates:

```wl
In[2]:=
asympt = First[y /. %];
exact[x_] := Last[y /. NSolve[y ^ 3 - x y == 24, y, Reals]]

In[3]:= Plot[{asympt, exact[x]}, {x, -50, 50}, PlotStyle -> {Dashed, DotDashed}]

Out[3]= [image]
```

---

Power series solutions of analytic equations passing through a specified point:

```wl
In[1]:= f = Erf[x + y] - Log[1 + Sin[x y]];

In[2]:= AsymptoticSolve[f == 0, {y, 0}, {x, 0, 3}]

Out[2]= {{y -> -x - (Sqrt[π] x^2/2) - (π x^3/4)}}
```

Plot the asymptotic solution and the solution it approximates:

```wl
In[3]:=
asympt = First[y /. %];
exact[x_] := y /. FindRoot[f, {y, asympt}]

In[4]:= Plot[{asympt, exact[x]}, {x, -0.4, 0.4}, PlotStyle -> {Dashed, DotDashed}]

Out[4]= [image]
```

---

Puiseux series solutions of polynomial equations passing through a specified point:

```wl
In[1]:= AsymptoticSolve[y ^ 5 - x y + x ^ 2 == 0, {y, 0}, {x, 0, 5}]

Out[1]= {{y -> x + x^4}, {y -> -x^1 / 4 - (x/4) + (5 x^7 / 4/32) - (5 x^5 / 2/32) + (385 x^13 / 4/2048) - (x^4/4) + (23205 x^19 / 4/65536)}, {y -> -I x^1 / 4 - (x/4) - (5/32) I x^7 / 4 + (5 x^5 / 2/32) + (385 I x^13 / 4/2048) - (x^4/4) - (23205 I x^19 / 4/65536)}, {y -> I x^1 / 4 - (x/4) + (5/32) I x^7 / 4 + (5 x^5 / 2/32) - (385 I x^13 / 4/2048) - (x^4/4) + (23205 I x^19 / 4/65536)}, {y -> x^1 / 4 - (x/4) - (5 x^7 / 4/32) - (5 x^5 / 2/32) - (385 x^13 / 4/2048) - (x^4/4) - (23205 x^19 / 4/65536)}}
```

Solutions that are real valued when ``x`` approaches ``0`` from above:

```wl
In[2]:= AsymptoticSolve[y ^ 5 - x y + x ^ 2 == 0, {y, 0}, {x, 0, 5}, Reals]

Out[2]= {{y -> x + x^4}, {y -> -x^1 / 4 - (x/4) + (5 x^7 / 4/32) - (5 x^5 / 2/32) + (385 x^13 / 4/2048) - (x^4/4) + (23205 x^19 / 4/65536)}, {y -> x^1 / 4 - (x/4) - (5 x^7 / 4/32) - (5 x^5 / 2/32) - (385 x^13 / 4/2048) - (x^4/4) - (23205 x^19 / 4/65536)}}
```

Solutions that are real valued when ``x`` approaches ``0`` from below:

```wl
In[3]:= AsymptoticSolve[y ^ 5 - x y + x ^ 2 == 0, {y, 0}, {x, 0, 5}, Reals, Direction -> "FromBelow"]

Out[3]= {{y -> x + x^4}}
```

---

Puiseux series solutions of analytic equations passing through a specified point:

```wl
In[1]:= AsymptoticSolve[Sin[x y] - y ^ 2 + x == 0, {y, 0}, {x, 0, 5}]

Out[1]= {{y -> -Sqrt[x] + (x/2) - (x^3 / 2/8) + (x^5 / 2/128) - (x^7 / 2/1024) - (x^4/12) + (4101 x^9 / 2/32768) - (x^5/12)}, {y -> Sqrt[x] + (x/2) + (x^3 / 2/8) - (x^5 / 2/128) + (x^7 / 2/1024) - (x^4/12) - (4101 x^9 / 2/32768) - (x^5/12)}}
```

---

Asymptotic series solutions passing through a specified point:

```wl
In[1]:= AsymptoticSolve[Sin[y] - y ^ 2 + Cos[y] / Log[x] == 0, {y, 0}, {x, 0, 5}]

Out[1]= {{y -> -(51/5 Log[x]^5) + (23/6 Log[x]^4) - (5/3 Log[x]^3) + (1/Log[x]^2) - (1/Log[x])}}
```

---

Solutions of polynomial equations near a specified value of the independent variable:

```wl
In[1]:= AsymptoticSolve[x y ^ 4 + y ^ 2 - x ^ 2 y == 1, {y}, {x, 0, 3}]

Out[1]= {{y -> -1 + (x/2) - (3 x^2/8) + (17 x^3/16)}, {y -> 1 - (x/2) + (11 x^2/8) - (49 x^3/16)}, {y -> (I/Sqrt[x]) + (I Sqrt[x]/2) - (5/8) I x^3 / 2 - (x^2/2)}, {y -> -(I/Sqrt[x]) - (I Sqrt[x]/2) + (5/8) I x^3 / 2 - (x^2/2)}}
```

---

Real asymptotic series solutions at infinity:

```wl
In[1]:= f = y ^ 5 - y / Sqrt[x] + x Log[x];

In[2]:= AsymptoticSolve[f == 0, {y}, {x, Infinity, 3}, Reals]

Out[2]= {{y -> -(1/25) ((1/x))^21 / 10 (5 x + (25/((1/x))^23 / 10 ((1/Log[x]))^4 / 5) - ((1/x))^3 / 10 ((1/Log[x]))^4 / 5) ((1/Log[x]))^3 / 5}}
```

Plot the asymptotic solution and the solution it approximates:

```wl
In[3]:=
asympt = First[y /. %];
exact[x_] := First[y /. NSolve[f == 0, y, Reals]]

In[4]:= Plot[{asympt, exact[x]}, {x, 1, 5}, PlotStyle -> {Dashed, DotDashed}]

Out[4]= [image]
```

---

Equations with symbolic parameters:

```wl
In[1]:= AsymptoticSolve[Sin[x y] - y Log[a + y] + x == 0, {y, 0}, {x, 0, 3}]

Out[1]= {{y -> (x/Log[a]) + (x^2 (-1 + a Log[a])/a Log[a]^3) + (x^3 (4 + Log[a] - 6 a Log[a] + 2 a^2 Log[a]^2)/2 a^2 Log[a]^5)}}
```

Conditions on parameters may be generated:

```wl
In[2]:= AsymptoticSolve[y ^ 4 + a y ^ 3 + a x y - x ^ 2 + a x ^ 2 == 0, {y, Root[# ^ 4 + a # ^ 3&, 1]}, {x, 0, 3}]

Out[2]=
{{y -> ConditionalExpression[-a - x/a + ((1 + a)*x^2)/a^3 + ((-2 - 5*a)*x^3)/a^5, 
 a + Root[a*#1^3 + #1^4 & , 1] == 0]}}
```

#### One-Dimensional Solutions in nD (5)

Power series solutions of polynomial systems passing through a specified point:

```wl
In[1]:= eqns = y ^ 3 - t x y == 21 && x ^ 2 - t ^ 2 y == 1;

In[2]:= AsymptoticSolve[eqns, {{x, y}, {2, 3}}, {t, 1, 3}]

Out[2]= {{x -> 2 + (156/97) (-1 + t) + (345195 (-1 + t)^2/912673) - (618244515 (-1 + t)^3/8587340257), y -> 3 + (42/97) (-1 + t) + (212997 (-1 + t)^2/912673) + (247596072 (-1 + t)^3/8587340257)}}
```

Plot the asymptotic solution and the solution it approximates:

```wl
In[3]:=
asympt = First[{t, x, y} /. %];
exact = {t, x, y} /. Solve[eqns, {x, y}, Reals][[2]];

In[4]:= ParametricPlot3D[{asympt, exact}, {t, 0, 2}, PlotStyle -> {Dashed, DotDashed}]

Out[4]= [image]
```

---

Power series solutions of analytic systems passing through a specified point:

```wl
In[1]:= eqns = Sin[t + x] + Cos[y] == t + 1 && Log[1 + x + y] - Sin[t] == 0;

In[2]:= AsymptoticSolve[eqns, {{x, y}, {0, 0}}, {t, 0, 5}]

Out[2]= {{x -> (t^2/2) + (t^3/6) + (t^4/24) + (t^5/30), y -> t - (t^3/6) - (t^4/6) - (t^5/10)}}
```

Plot the asymptotic solution and the solution it approximates:

```wl
In[3]:=
asympt = First[{t, x, y} /. %];
exact[t_] := {t, x, y} /. FindRoot[eqns, {{x, asympt[[2]]}, {y, asympt[[3]]}}]

In[4]:= ParametricPlot3D[{asympt, exact[t]}, {t, -0.9, 0.9}, PlotStyle -> {Dashed, DotDashed}]

Out[4]= [image]
```

---

Puiseux series solutions of polynomial systems passing through a specified point:

```wl
In[1]:= AsymptoticSolve[y ^ 2 - t  x + t == 0 && x ^ 2 + t y == 0, {{x, y}, {0, 0}}, {t, 0, 2}]

Out[1]= {{x -> -(-1)^1 / 4 t^3 / 4 - (1/4) I t^3 / 2, y -> -I Sqrt[t] - (1/2) (-1)^3 / 4 t^5 / 4}, {x -> (-1)^1 / 4 t^3 / 4 - (1/4) I t^3 / 2, y -> -I Sqrt[t] + (1/2) (-1)^3 / 4 t^5 / 4}, {x -> -(-1)^3 / 4 t^3 / 4 + (1/4) I t^3 / 2, y -> I Sqrt[t] - (1/2) (-1)^1 / 4 t^5 / 4}, {x -> (-1)^3 / 4 t^3 / 4 + (1/4) I t^3 / 2, y -> I Sqrt[t] + (1/2) (-1)^1 / 4 t^5 / 4}}
```

None of the solutions are real valued when ``t`` approaches ``0`` from above:

```wl
In[2]:= AsymptoticSolve[y ^ 2 - t  x + t == 0 && x ^ 2 + t y == 0, {{x, y}, {0, 0}}, {t, 0, 2}, Reals]

Out[2]= {}
```

Two of the solutions are real valued when ``t`` approaches ``0`` from below:

```wl
In[3]:= AsymptoticSolve[y ^ 2 - t  x + t == 0 && x ^ 2 + t y == 0, {{x, y}, {0, 0}}, {t, 0, 2}, Reals, Direction -> "FromBelow"]

Out[3]= {{x -> -(-t)^3 / 4 - (1/4) (-t)^3 / 2, y -> Sqrt[-t] + (1/2) (-t)^5 / 4}, {x -> (-t)^3 / 4 - (1/4) (-t)^3 / 2, y -> Sqrt[-t] - (1/2) (-t)^5 / 4}}
```

---

Solutions of polynomial systems near a specified value of the independent variable:

```wl
In[1]:= AsymptoticSolve[y ^ 3 - t x y == 0 && x ^ 2 - t ^ 2 y == 1, {{x, y}}, {t, 0, 3}]

Out[1]= {{x -> -1, y -> 0}, {x -> -1 + (1/2) I t^5 / 2, y -> -I Sqrt[t] - (t^3/4)}, {x -> -1 - (1/2) I t^5 / 2, y -> I Sqrt[t] - (t^3/4)}, {x -> 1, y -> 0}, {x -> 1 - (t^5 / 2/2), y -> -Sqrt[t] + (t^3/4)}, {x -> 1 + (t^5 / 2/2), y -> Sqrt[t] + (t^3/4)}}
```

---

Equations with symbolic parameters:

```wl
In[1]:= AsymptoticSolve[{Sin[t + a x] + Cos[y] == t + 1, Log[1 + x + y] - Sin[t] == 0}, {{x, y}, {0, 0}}, {t, 0, 5}]

Out[1]= {{x -> (t^2/2 a) + ((-3 + 4 a) t^3/6 a^2) + ((15 - 22 a + 8 a^2) t^4/24 a^3) + ((-105 + 180 a - 100 a^2 + 29 a^3) t^5/120 a^4), y -> t + ((-1 + a) t^2/2 a) + ((3 - 4 a) t^3/6 a^2) + ((-15 + 22 a - 8 a^2 - 3 a^3) t^4/24 a^3) + ((105 - 180 a + 100 a^2 - 29 a^3 - 8 a^4) t^5/120 a^4)}}
```

#### Higher-Dimensional Solutions in nD (5)

Power series solutions of polynomial equations passing through a specified point:

```wl
In[1]:= AsymptoticSolve[z ^ 5 - 2z ^ 3 + 2z + x ^ 2 - y == 0, {z, 0}, {{x, y}, {0, 0}, 5}]

Out[1]= {{z -> -(x^2/2) + (y/2) + (3 x^4 y/8) - (3 x^2 y^2/8) + (y^3/8) + (5 y^5/64)}}
```

Plot the asymptotic solution and the solution it approximates:

```wl
In[2]:=
asympt = First[z /. %];
exact[x_, y_] := First[z /. NSolve[z ^ 5 - 2z ^ 3 + 2z + x ^ 2 - y == 0, z, Reals]];

In[3]:= Plot3D[{asympt, exact[x, y]}, {x, -1, 1}, {y, -1, 1}, PlotLegends -> {"Asymptotic", "Exact"}, PlotStyle -> Opacity[0.7], BoxRatios -> 1]

Out[3]= [image]
```

---

Power series solutions of analytic equations passing through a specified point:

```wl
In[1]:= AsymptoticSolve[Exp[z + x - y] - Cos[x y] + x - y == 0, {z, 0}, {{x, y}, {0, 0}, 3}]

Out[1]= {{z -> -2 x - (x^2/2) - (x^3/3) + 2 y + x y + x^2 y - (y^2/2) - x y^2 + (y^3/3)}}
```

Plot the asymptotic solution and the solution it approximates:

```wl
In[2]:=
asympt = First[z /. %];
exact[x_, y_] := z /. FindRoot[Exp[z + x - y] - Cos[x y] + x - y == 0, {z, asympt}]

In[3]:= Plot3D[{asympt, exact[x, y]}, {x, -1, 1}, {y, -1, 1}, PlotLegends -> {"Asymptotic", "Exact"}, PlotStyle -> Opacity[0.7], BoxRatios -> 1]

Out[3]= [image]
```

---

Power series solutions of polynomial systems passing through a specified point:

```wl
In[1]:= AsymptoticSolve[x ^ 2 - u (y + 1) == y ^ 2 - v (x + 1) + w && u ^ 2 - u (x + 1) == v ^ 2 + v (y + 1) - w && x + y == u + v + w, {{u, v, w}, {0, 0, 0}}, {{x, y}, {0, 0}, 3}]

Out[1]= {{u -> (5 x^2/8) - (5 x^3/16) - (x y/4) + (9 x^2 y/16) - (7 y^2/8) + (13 x y^2/16) - (y^3/16), v -> (x/2) - (3 x^2/4) + (3 x^3/8) + (y/2) - (x y/4) + (7 x^2 y/16) + (y^2/2) - (3 x y^2/8) - (7 y^3/16), w -> (x/2) + (x^2/8) - (x^3/16) + (y/2) + (x y/2) - x^2 y + (3 y^2/8) - (7 x y^2/16) + (y^3/2)}}
```

---

Power series solutions of analytic systems passing through a specified point:

```wl
In[1]:= AsymptoticSolve[{Sin[u + x] + Cos[y] == v + 1, Log[1 + x + y] - u - Sin[u v] == 0}, {{u, v}, {0, 0}}, {{x, y}, {0, 0}, 3}]

Out[1]= {{u -> x - (5 x^2/2) + (47 x^3/6) + y - 4 x y + 18 x^2 y - (3 y^2/2) + 14 x y^2 + (23 y^3/6), v -> 2 x - (5 x^2/2) + (13 x^3/2) + y - 4 x y + 16 x^2 y - 2 y^2 + 13 x y^2 + (11 y^3/3)}}
```

---

Power series solutions of polynomial systems near specified values of independent variables:

```wl
In[1]:= AsymptoticSolve[x ^ 2 - u == y ^ 2 - v(x + 1) - u ^ 2 && u ^ 2 - u(x + 1) == v ^ 2 + v, {{u, v}}, {{x, y}, {0, 0}, 2}]

Out[1]= {{u -> -1 - (7 x/6) + (83 x^2/216) - (y^2/2), v -> -2 - (3 x/2) + (7 x^2/24) - (y^2/2)}, {u -> (x^2/2) - (y^2/2), v -> -(x^2/2) + (y^2/2)}, {u -> 1 + (x/2) - (x^2/8) + (y^2/2), v -> -(x/2) - (5 x^2/8) + (y^2/2)}, {u -> 2 + (2 x/3) - (41 x^2/54) + (y^2/2), v -> -2 + (5 x^2/6) - (y^2/2)}}
```

### Options (9)

#### Assumptions (1)

Specify conditions on parameters using ``Assumptions`` :

```wl
In[1]:= AsymptoticSolve[y ^ 3 - a y + x ^ 2y + x == 0, {y}, {x, 0, 3}, Reals, Assumptions -> a > 0]

Out[1]= {{y -> (x/a) + ((1 + a^2) x^3/a^4)}, {y -> -Sqrt[a] - (x/2 a) + ((3 + 4 a^2) x^2/8 a^5 / 2) + ((-1 - a^2) x^3/2 a^4)}, {y -> Sqrt[a] - (x/2 a) + ((-3 - 4 a^2) x^2/8 a^5 / 2) + ((-1 - a^2) x^3/2 a^4)}}
```

Different assumptions can produce different results:

```wl
In[2]:= AsymptoticSolve[y ^ 3 - a y + x ^ 2y + x == 0, {y}, {x, 0, 3}, Reals, Assumptions -> a < 0]

Out[2]= {{y -> (x/a) + ((1 + a^2) x^3/a^4)}}
```

#### Direction (3)

By default, ``AsymptoticSolve`` gives solutions valid when ``x`` approaches ``0`` from above:

```wl
In[1]:= AsymptoticSolve[y ^ 3 + x ^ 2y + x == 0, {y}, {x, 0, 3}, Reals]

Out[1]= {{y -> -x^1 / 3 + (x^5 / 3/3)}}
```

This finds the solutions valid when ``x`` approaches ``0`` from below:

```wl
In[2]:= AsymptoticSolve[y ^ 3 + x ^ 2y + x == 0, {y}, {x, 0, 3}, Reals, Direction -> "FromBelow"]

Out[2]= {{y -> (-x)^1 / 3 - (1/3) (-x)^5 / 3}}
```

---

Complex solutions may also depend on the direction:

```wl
In[1]:= AsymptoticSolve[y ^ 2 + E ^ (-2 / x) y + E ^ (-1 / x) == 0, {y, 0}, {x, 0, 5}, Direction -> "FromAbove"]

Out[1]= {{y -> -(1/2) E^-2 / x - I Sqrt[E^-1 / x] + (1/8) I (E^-1 / x)^7 / 2}, {y -> -(1/2) E^-2 / x + I Sqrt[E^-1 / x] - (1/8) I (E^-1 / x)^7 / 2}}

In[2]:= AsymptoticSolve[y ^ 2 + E ^ (-2 / x) y + E ^ (-1 / x) == 0, {y, 0}, {x, 0, 5}, Direction -> "FromBelow"]

Out[2]= {{y -> -E^(1/x) - E^4 / x}}
```

---

This gives solutions that are real when ``x`` approaches ``0`` from a complex direction:

```wl
In[1]:= AsymptoticSolve[x y ^ 7 + 2 x ^ 4 y ^ 6 + 3 x ^ 4 y ^ 3 - 2 x ^ 7 y ^ 2 - x ^ 10 == 0, {y, 0}, {x, 0, 3}, Reals, Direction -> E ^ (2 I Pi / 3)]

Out[1]= {{y -> (E^(2 I π/3) x^2/3^1 / 3) + (2 x^3/9)}, {y -> -(2 x^3/3) - 3^1 / 4 (-E^-(2 I π/3) x)^3 / 4}, {y -> -(2 x^3/3) + 3^1 / 4 (-E^-(2 I π/3) x)^3 / 4}}
```

#### GenerateConditions (3)

By default, ``AsymptoticSolve`` gives conditions it assumed to obtain the result:

```wl
In[1]:= AsymptoticSolve[y ^ 3 + a y ^ 2 - x == 0, {y}, {x, 0, 3}, Reals]

Out[1]= {{y -> ConditionalExpression[-a + x/a^2 + (2*x^2)/a^5 + (7*x^3)/a^8, a < 0]}}
```

This gives the result without the assumed conditions:

```wl
In[2]:= AsymptoticSolve[y ^ 3 + a y ^ 2 - x == 0, {y}, {x, 0, 3}, Reals, GenerateConditions -> False]

Out[2]= {{y -> -Sqrt[(1/a)] Sqrt[x] - (x/2 a^2) - (5/8) ((1/a))^7 / 2 x^3 / 2 - (x^2/a^5) - (231/128) ((1/a))^13 / 2 x^5 / 2 - (7 x^3/2 a^8)}, {y -> Sqrt[(1/a)] Sqrt[x] - (x/2 a^2) + (5/8) ((1/a))^7 / 2 x^3 / 2 - (x^2/a^5) + (231/128) ((1/a))^13 / 2 x^5 / 2 - (7 x^3/2 a^8)}, {y -> -a + (x/a^2) + (2 x^2/a^5) + (7 x^3/a^8)}}
```

---

By default, assumed conditions that are generically true are not reported:

```wl
In[1]:= AsymptoticSolve[y ^ 3 + a y ^ 2 - x == 0, {y}, {x, 0, 2}]

Out[1]= {{y -> -Sqrt[(1/a)] Sqrt[x] - (x/2 a^2) - (5/8) ((1/a))^7 / 2 x^3 / 2 - (x^2/a^5)}, {y -> Sqrt[(1/a)] Sqrt[x] - (x/2 a^2) + (5/8) ((1/a))^7 / 2 x^3 / 2 - (x^2/a^5)}, {y -> -a + (x/a^2) + (2 x^2/a^5)}}
```

With ``GenerateConditions -> True``, all conditions are reported:

```wl
In[2]:= AsymptoticSolve[y ^ 3 + a y ^ 2 - x == 0, {y}, {x, 0, 2}, GenerateConditions -> True]

Out[2]=
{{y -> ConditionalExpression[(-Sqrt[1/a])*Sqrt[x] - x/(2*a^2) - (5/8)*(1/a)^(7/2)*x^(3/2) - x^2/a^5, 
 a != 0]}, {y -> ConditionalExpression[Sqrt[1/a]*Sqrt[x] - x/(2*a^2) + (5/8)*(1/a)^(7/2)*x^(3/2) - x^2/a^5, a != 0]}, {y -> ConditionalExpression[-a + x/a^2 + (2*x^2)/a^5, a != 0]}}
```

---

With ``GenerateConditions -> None``, ``AsymptoticSolve`` returns only generically valid results:

```wl
In[1]:= AsymptoticSolve[y ^ 3 + a y ^ 2 - x == 0, {y}, {x, 0, 2}, GenerateConditions -> None]

Out[1]= {{y -> -Sqrt[(1/a)] Sqrt[x] - (x/2 a^2) - (5/8) ((1/a))^7 / 2 x^3 / 2 - (x^2/a^5)}, {y -> Sqrt[(1/a)] Sqrt[x] - (x/2 a^2) + (5/8) ((1/a))^7 / 2 x^3 / 2 - (x^2/a^5)}, {y -> -a + (x/a^2) + (2 x^2/a^5)}}
```

If nongeneric conditions are needed, ``AsymptoticSolve`` returns unevaluated:

```wl
In[2]:= AsymptoticSolve[y ^ 3 + a y ^ 2 - x == 0, {y}, {x, 0, 2}, Reals, GenerateConditions -> None]

Out[2]= AsymptoticSolve[-x + a y^2 + y^3 == 0, {y}, {x, 0, 2}, ℝ, GenerateConditions -> None]
```

#### Method (1)

Return a series whenever the result is a power series or a Puiseux series:

```wl
In[1]:= AsymptoticSolve[Tan[x + y] ^ 3 - y ^ 2 + x == 0, {y, 0}, {x, 0, 3}, Method -> {"SeriesOutput" -> Automatic}]

Out[1]=
{{y -> SeriesData[x, 0, {-1, Rational[1, 2], Rational[-17, 8], 6, Rational[-2399, 128], 
  Rational[958, 15]}, 1, 7, 2]}, {y -> SeriesData[x, 0, {1, Rational[1, 2], Rational[17, 8], 6, Rational[2399, 128], Rational[958, 15]}, 
 1, 7, 2]}}
```

Check that the series solutions satisfy the equation:

```wl
In[2]:= Tan[x + y] ^ 3 - y ^ 2 + x /. %

Out[2]= {SeriesData[x, 0, {}, 8, 8, 2], SeriesData[x, 0, {}, 8, 8, 2]}
```

#### SeriesTermGoal (1)

By default, ``AsymptoticSolve[eqn, …, x -> a]`` computes the leading terms of the solutions:

```wl
In[1]:= AsymptoticSolve[Cos[x y] - Exp[y ^ 2 - 2x ^ 2] == 0, y -> 0, x -> 0]

Out[1]= {{y -> -Sqrt[2] x}, {y -> Sqrt[2] x}}
```

Use ``SeriesTermGoal`` to obtain more terms:

```wl
In[2]:= AsymptoticSolve[Cos[x y] - Exp[y ^ 2 - 2x ^ 2] == 0, y -> 0, x -> 0, SeriesTermGoal -> 5]

Out[2]= {{y -> -Sqrt[2] x + (x^3/2 Sqrt[2]) - (3 x^5/16 Sqrt[2])}, {y -> Sqrt[2] x - (x^3/2 Sqrt[2]) + (3 x^5/16 Sqrt[2])}}
```

### Applications (12)

#### Implicit Functions (3)

The equation $y^2=x$ implicitly defines two different functions $y(x)$ near each $x>0$. Compute third-order asymptotic approximations for these two functions near $x=4$ :

```wl
In[1]:= AsymptoticSolve[y^2 == x, y, {x, 4, 3}]

Out[1]= {{y -> -2 + (4 - x/4) + (1/64) (-4 + x)^2 - (1/512) (-4 + x)^3}, {y -> 2 + (1/4) (-4 + x) - (1/64) (-4 + x)^2 + (1/512) (-4 + x)^3}}
```

Define functions based on these expansions:

```wl
In[2]:= {yA1[x_], yA2[x_]} = y /. %;
```

At the point $x=4$, these two functions have different values:

```wl
In[3]:= {yA1[4], yA2[4]}

Out[3]= {-2, 2}
```

However, both exactly satisfy the equation $y^2=x$ at $x=4$ :

```wl
In[4]:= {yA1[4] ^ 2 == 4, yA2[4] ^ 2 == 4}

Out[4]= {True, True}
```

Visualize the equation and the approximations to its two branches:

```wl
In[5]:= ContourPlot[{y^2 == x, y == yA1[x], y == yA2[x]}, {x, -1, 6}, {y, -3, 3}, Epilog -> {PointSize[Large], Point[{{4, -2}, {4, 2}}]}]

Out[5]= [image]
```

In this case, it is easy to solve exactly for the two implicitly defined functions:

```wl
In[6]:= {y1[x_], y2[x_]} = y /. Solve[y ^ 2 == x, y]

Out[6]= {-Sqrt[x], Sqrt[x]}
```

The two expressions returned by ``AsymptoticSolve`` are the series of the exact solutions:

```wl
In[7]:= Series[yA1[x] - y1[x], {x, 4, 3}]//Normal

Out[7]= 0

In[8]:= Series[yA2[x] - y2[x], {x, 4, 3}]//Normal

Out[8]= 0
```

---

Compute the second-order asymptotic approximations to the unit circle $x^2+y^2=1$ at $x=0$ :

```wl
In[1]:= {yR1[x_], yR2[x_]} = y /. AsymptoticSolve[y ^ 2 + x ^ 2 == 1, y, {x, 0, 2}]

Out[1]= {-1 + (x^2/2), 1 - (x^2/2)}
```

The approximations closely track the circle of both larger and smaller values of $x$ at these regular points:

```wl
In[2]:= ContourPlot[{y ^ 2 + x ^ 2 == 1, y == yR1[x], y == yR2[x]}, {x, -3 / 2, 3 / 2}, {y, -3 / 2, 3 / 2}, Epilog -> {PointSize[Large], Point[{{0, 1}, {0, -1}}]}]

Out[2]= [image]
```

At the singular point $x=1$, the approximation uses fractional powers:

```wl
In[3]:= {yS1[x_], yS2[x_]} = y /. AsymptoticSolve[y ^ 2 == 1 - x ^ 2, y, {x, 1, 2}]

Out[3]= {-I Sqrt[2] Sqrt[-1 + x] - (I (-1 + x)^3 / 2/2 Sqrt[2]), I Sqrt[2] Sqrt[-1 + x] + (I (-1 + x)^3 / 2/2 Sqrt[2])}
```

Visually, the approximations seem to only be defined for values of $x<1$ :

```wl
In[4]:= ContourPlot[{y ^ 2 + x ^ 2 == 1, y == yS1[x], y == yS2[x]}, {x, -3 / 2, 3 / 2}, {y, -3 / 2, 3 / 2}, Epilog -> {PointSize[Large], Point[{1, 0}]}]

Out[4]= [image]
```

This is because at $x=1$ the functions switch from being real to purely imaginary:

```wl
In[5]:= Plot[{Im[yS1[x]], Im[yS2[x]]}, {x, 0, 2}, PlotTheme -> {"Detailed", "DashedLines"}]

Out[5]= [image]
```

Trying to find solutions over the reals will therefore fail:

```wl
In[6]:= AsymptoticSolve[y ^ 2 + x ^ 2 == 1, y, {x, 1, 2}, Reals]

Out[6]= {}
```

However, it is possible to find purely real expressions if restricting to smaller values of $x$ :

```wl
In[7]:= AsymptoticSolve[y ^ 2 == 1 - x ^ 2, y, {x, 1, 2}, Reals, Direction -> "FromBelow"]

Out[7]= {{y -> -Sqrt[2] Sqrt[1 - x] + ((1 - x)^3 / 2/2 Sqrt[2])}, {y -> Sqrt[2] Sqrt[1 - x] - ((1 - x)^3 / 2/2 Sqrt[2])}}
```

---

The curve $\sin (y)=x$ crosses the line $x=0$ infinitely many times. On any section that passes the vertical line test—any vertical line intersects the curve only once; no vertical line intersects the section more than once—a function is implicitly defined:

```wl
In[1]:= ContourPlot[{Sin[y] == x, x == 0}, {x, -1, 1}, {y, -3π, 3π}, PlotTheme -> "DashedLines"]

Out[1]= [image]
```

Compute an approximation for the section that goes through the origin:

```wl
In[2]:= AsymptoticSolve[Sin[y] == x, {y, 0}, {x, 0, 3}]

Out[2]= {{y -> x + (x^3/6)}}
```

Note that this matches the Taylor series of $\sin ^{-1}(x)$, the inverse function of $\sin (y)$ :

```wl
In[3]:= Series[ArcSin[x], {x, 0, 3}]

Out[3]= SeriesData[x, 0, {1, 0, Rational[1, 6]}, 1, 4, 1]
```

Compute an approximation for the section that goes through the point $(0,\pi )$ :

```wl
In[4]:= AsymptoticSolve[Sin[y] == x, {y, Pi}, {x, 0, 3}]

Out[4]= {{y -> π - x - (x^3/6)}}
```

Visualize the curve and the two approximations:

```wl
In[5]:= ContourPlot[{Sin[y] == x, x == 0, y == x + (x^3/6), y == π - x - (x^3/6)}, {x, -1.5, 1.5}, {y, -π, 2π}, IconizedObject[«ContourPlot options»]]

Out[5]= [image]
```

#### Perturbed Equations (2)

Find solutions of a perturbed polynomial equation:

```wl
In[1]:= f = x ^ 3 - (6 + ϵ)x ^ 2 + (11 + ϵ)x - 6 + ϵ;

In[2]:= AsymptoticSolve[f == 0, {x}, {ϵ, 0, 3}]

Out[2]= {{x -> 1 - (ϵ/2) + (ϵ^2/8) + (ϵ^3/16)}, {x -> 2 - ϵ + 3 ϵ^2 - 11 ϵ^3}, {x -> 3 + (5 ϵ/2) - (25 ϵ^2/8) + (175 ϵ^3/16)}}
```

Plot the asymptotic solutions and the solutions they approximate:

```wl
In[3]:=
asympt = x /. %;
exact = x /. Solve[f == 0, x];

In[4]:= Plot[{asympt, exact}, {ϵ, 0, 0.5}, PlotStyle -> {Dashed, DotDashed}]

Out[4]= [image]
```

---

Investigate the behavior of solutions of an analytic equation under a small perturbation:

```wl
In[1]:= f = Cos[x] - 1 + ϵ E ^ x;

In[2]:= AsymptoticSolve[f == 0, {x, 0}, {ϵ, 0, 3}]

Out[2]= {{x -> -Sqrt[2] Sqrt[ϵ] + ϵ - (5 ϵ^3 / 2/3 Sqrt[2]) + (5 ϵ^2/3) - (221 ϵ^5 / 2/60 Sqrt[2]) + (13 ϵ^3/3)}, {x -> Sqrt[2] Sqrt[ϵ] + ϵ + (5 ϵ^3 / 2/3 Sqrt[2]) + (5 ϵ^2/3) + (221 ϵ^5 / 2/60 Sqrt[2]) + (13 ϵ^3/3)}}
```

Plot the asymptotic solutions and the solutions they approximate:

```wl
In[3]:=
asympt = x /. %;
exact[s_] := x /. FindRoot[f, {x, s}]

In[4]:= Show[Plot[{#, exact[#]}, {ϵ, 0, 0.2}, PlotStyle -> {Dashed, DotDashed}]& /@ asympt, PlotRange -> All]

Out[4]= [image]
```

#### Series Solutions of Equations (2)

Find a series solution of an equation at a nonsingular point:

```wl
In[1]:= f = Cos[x + y] - x + y - 1;
```

The derivative of $f$ with respect to $y$ does not vanish at $0$ :

```wl
In[2]:= D[f, y] /. {x -> 0, y -> 0}

Out[2]= 1
```

Find the series solution up to order five:

```wl
In[3]:= AsymptoticSolve[f == 0, {y, 0}, {x, 0, 5}]

Out[3]= {{y -> x + 2 x^2 + 4 x^3 + (28 x^4/3) + 24 x^5}}
```

The result satisfies the equation:

```wl
In[4]:= Series[f /. %[[1]], {x, 0, 5}]

Out[4]= SeriesData[x, 0, {}, 6, 6, 1]
```

---

Find a multivariate series solution of a system of equations at a nonsingular point:

```wl
In[1]:=
f = Sin[x + y + u + v] - u x + v y;
g = Exp[x - u] + Exp[y - v] - 2 Cos[x - v] + y - u;
```

The Jacobian of $\{f,g\}$ with respect to $\{x,y\}$ does not vanish at $0$ :

```wl
In[2]:= Det[D[{f, g}, {{x, y}}]] /. {x -> 0, y -> 0, u -> 0, v -> 0}

Out[2]= 1
```

Find the series solution up to order three:

```wl
In[3]:= AsymptoticSolve[f == 0 && g == 0, {{x, y}, {0, 0}}, {{u, v}, {0, 0}, 3}]

Out[3]= {{x -> -4 u + 25 u^2 - (1135 u^3/3) - 3 v + 38 u v - 829 u^2 v + 17 v^2 - 639 u v^2 - (517 v^3/3), y -> 3 u - 29 u^2 + (1210 u^3/3) + 2 v - 44 u v + 896 u^2 v - 19 v^2 + 700 u v^2 + (574 v^3/3)}}
```

The result satisfies the equations:

```wl
In[4]:= Series[{f, g} /. %[[1]] /. {u -> t u, v -> t v}, {t, 0, 3}]

Out[4]= {SeriesData[t, 0, {}, 4, 4, 1], SeriesData[t, 0, {}, 4, 4, 1]}
```

#### Asymptotic Approximations of Curves (3)

Find Puiseux series solutions in a neighborhood of a singular point of an algebraic plane curve:

```wl
In[1]:= f = y ^ 6 - 5x y ^ 4 + 3x ^ 2 y ^ 4 + 10x ^ 3 y ^ 2 + 3x ^ 4 y ^ 2 - x ^ 5 + x ^ 6;

In[2]:= ls = AsymptoticSolve[f == 0, {y, 0}, {x, 0, 3}, Reals, Direction -> "FromBelow"]

Out[2]= {{y -> Sqrt[(1/5) (5 - 2 Sqrt[5])] x + (8 (-5 + 2 Sqrt[5]) x^2/25 Sqrt[5 - 2 Sqrt[5]]) - (16 (-5 + 2 Sqrt[5]) (-5 + 3 Sqrt[5]) x^3/625 Sqrt[5 - 2 Sqrt[5]])}, {y -> -Sqrt[(1/5) (5 - 2 Sqrt[5])] x - (8 (-5 + 2 Sqrt[5]) x^2/25 Sqrt[5 - 2 Sqrt[5]]) + ( ... }, {y -> Sqrt[(1/5) (5 + 2 Sqrt[5])] x + (8/25) Sqrt[5 + 2 Sqrt[5]] x^2 + (16/625) Sqrt[5 + 2 Sqrt[5]] (5 + 3 Sqrt[5]) x^3}, {y -> -Sqrt[(1/5) (5 + 2 Sqrt[5])] x - (8/25) Sqrt[5 + 2 Sqrt[5]] x^2 - (16/625) Sqrt[5 + 2 Sqrt[5]] (5 + 3 Sqrt[5]) x^3}}

In[3]:= rs = AsymptoticSolve[f == 0, {y, 0}, {x, 0, 3}, Reals, Direction -> "FromAbove"]

Out[3]= {{y -> -Sqrt[(1/5) (5 - 2 Sqrt[5])] x - (8 (-5 + 2 Sqrt[5]) x^2/25 Sqrt[5 - 2 Sqrt[5]]) + (16 (-5 + 2 Sqrt[5]) (-5 + 3 Sqrt[5]) x^3/625 Sqrt[5 - 2 Sqrt[5]])}, {y -> Sqrt[(1/5) (5 - 2 Sqrt[5])] x + (8 (-5 + 2 Sqrt[5]) x^2/25 Sqrt[5 - 2 Sqrt[5]]) - ( ... t[5])] x + (8/25) Sqrt[5 + 2 Sqrt[5]] x^2 + (16/625) Sqrt[5 + 2 Sqrt[5]] (5 + 3 Sqrt[5]) x^3}, {y -> -Sqrt[5] Sqrt[x] + (1/2) Sqrt[5] x^3 / 2 + (381 x^5 / 2/200 Sqrt[5])}, {y -> Sqrt[5] Sqrt[x] - (1/2) Sqrt[5] x^3 / 2 - (381 x^5 / 2/200 Sqrt[5])}}
```

Plot the asymptotic solutions and the curve they approximate near 0:

```wl
In[4]:= lp = ParametricPlot[Evaluate[{x, y} /. ls], {x, -1, 0}, PlotStyle -> {{Red, Dashed}}];

In[5]:= rp = ParametricPlot[Evaluate[{x, y} /. rs], {x, 0, 1}, PlotStyle -> {{Red, Dashed}}];

In[6]:= exact = ContourPlot[f == 0, {x, -1, 1}, {y, -1, 1}, PlotPoints -> 100];

In[7]:= Show[{exact, lp, rp}]

Out[7]= [image]
```

---

Find Puiseux series solutions in a neighborhood of a singular point of an algebraic space curve:

```wl
In[1]:= eqns = z ^ 2 - y ^ 2 + x y z + x ^ 2 z + x == 0 && x ^ 2 z ^ 2 + x y ^ 2 + y z + x y + x ^ 2 == 0;

In[2]:= ls = AsymptoticSolve[eqns, {{y, z}, {0, 0}}, {x, 0, 3}, Reals, Direction -> "FromBelow"]

Out[2]= {{y -> (-x)^3 / 2 + 2 (-x)^5 / 2 - x^2 + (5 x^3/2), z -> -Sqrt[-x] - (x^2/2) - (x^3/2)}, {y -> -(-x)^3 / 2 - 2 (-x)^5 / 2 - x^2 + (5 x^3/2), z -> Sqrt[-x] - (x^2/2) - (x^3/2)}}

In[3]:= rs = AsymptoticSolve[eqns, {{y, z}, {0, 0}}, {x, 0, 3}, Reals, Direction -> "FromAbove"]

Out[3]= {{y -> -Sqrt[x] - (x^3 / 2/2) + (3 x^2/2) - (3 x^5 / 2/8) - 2 x^3, z -> -x + 2 x^3 / 2}, {y -> Sqrt[x] + (x^3 / 2/2) + (3 x^2/2) + (3 x^5 / 2/8) - 2 x^3, z -> -x - 2 x^3 / 2}}
```

Plot the asymptotic solutions:

```wl
In[4]:=
lasym = {x, y, z} /. ls;
rasym = {x, y, z} /. rs;
lp = ParametricPlot3D[lasym, {x, -0.3, 0}, PlotStyle -> {{Red, Dashed}}];
rp = ParametricPlot3D[rasym, {x, 0, 0.3}, PlotStyle -> {{Red, Dashed}}];
```

Find numeric solutions using asymptotic solution values as starting points:

```wl
In[5]:= nsol[s_] := {x, y, z} /. FindRoot[eqns, {{y, s[[2]]}, {z, s[[3]]}}]

In[6]:=
lpn = ParametricPlot3D[nsol /@ lasym, {x, -0.3, 0}, PlotStyle -> Blue];
rpn = ParametricPlot3D[nsol /@ rasym, {x, 0, 0.3}, PlotStyle -> Blue];
```

Compare the numeric solutions and the asymptotic solutions:

```wl
In[7]:= Show[{lpn, rpn, lp, rp}, PlotRange -> All, BoxRatios -> 1]

Out[7]= [image]
```

Show the curve as an intersection of two surfaces:

```wl
In[8]:= surf = ContourPlot3D[Evaluate[List@@eqns], {x, -0.3, 0.3}, {y, -0.6, 0.6}, {z, -0.6, 0.6}, Mesh -> None, ContourStyle -> {Directive[Orange, Opacity[0.3]], Directive[Yellow, Opacity[0.3]]}];

In[9]:= Show[{surf, lpn, rpn, lp, rp}, PlotRange -> All, BoxRatios -> 1]

Out[9]= [image]
```

---

Approximate Fermat's spiral near 0:

```wl
In[1]:= AsymptoticSolve[x == r Cos[r ^ 2] && y == r Sin[r ^ 2], {{y, r}, {0, 0}}, {x, 0, 12}]

Out[1]= {{y -> x^3 + (4 x^7/3) + (19 x^11/5), r -> x + (x^5/2) + (29 x^9/24)}}
```

Compare plots:

```wl
In[2]:=
asympt = First[y /. %];
ap = Plot[asympt, {x, 0, 1}, PlotStyle -> {Red, DotDashed}];
spiral = ParametricPlot[{r Cos[r ^ 2], r Sin[r ^ 2]}, {r, 0, 5}, PlotStyle -> Dashed];

In[3]:= Show[{ap, spiral}, PlotRange -> All, AspectRatio -> Automatic]

Out[3]= [image]
```

#### Asymptotic Solutions of Physics Problems (2)

Solve Kepler's equation for the eccentric anomaly $E$ in terms of the mean anomaly $M$ :

```wl
In[1]:= AsymptoticSolve[M == Ε - e Sin[Ε], {Ε, 0}, {M, 0, 7}]

Out[1]= {{Ε -> (M/1 - e) - (e M^3/6 (-1 + e)^4) - (e (1 + 9 e) M^5/120 (-1 + e)^7) + ((-e - 54 e^2 - 225 e^3) M^7/5040 (-1 + e)^10)}}
```

Compare with the exact solution for eccentricity $e=\frac{1}{2}$ :

```wl
In[2]:=
asympt = First[Ε /. %] /. e -> 1 / 2;
exact[M_] := First[Ε /. Solve[M == Ε - 1 / 2Sin[Ε], Ε, Reals]//Quiet]

In[3]:= Plot[{asympt, exact[M]}, {M, 0, 0.7}, PlotStyle -> {Dashed, DotDashed}]

Out[3]= [image]
```

---

Study the energy levels of a particle of mass $m$ in a one-dimensional box of width $L$ and depth $V$. Solutions $\psi _1$, $\psi _2$ and $\psi _3$ of the time-independent Schrödinger equation to the left of the box, inside the box, and to the right of the box are given by:

```wl
In[1]:=
α = (Sqrt[2 m (V - Ε)]/ℏ);k = (Sqrt[2 m Ε]/ℏ);
Subscript[ψ, 1] = g Exp[α x];Subscript[ψ, 2] = a Sin[k x] + b Cos[k x];Subscript[ψ, 3] = h Exp[-α x];
```

The solution must be continuously differentiable on the boundary of the box:

```wl
In[2]:= bconds = {(Subscript[ψ, 1] /. x -> -L / 2) == (Subscript[ψ, 2] /. x -> -L / 2), (Subscript[ψ, 2] /. x -> L / 2) == (Subscript[ψ, 3] /. x -> L / 2), (Subscript[∂, x]Subscript[ψ, 1] /. x -> -L / 2) == (Subscript[∂, x]Subscript[ψ, 2] /. x -> -L / 2), (Subscript[∂, x]Subscript[ψ, 2] /. x -> L / 2) == (Subscript[∂, x]Subscript[ψ, 3] /. x -> L / 2)}

Out[2]= {E^-(L Sqrt[m (V - Ε)]/Sqrt[2] ℏ) g == b Cos[(L Sqrt[m Ε]/Sqrt[2] ℏ)] - a Sin[(L Sqrt[m Ε]/Sqrt[2] ℏ)], b Cos[(L Sqrt[m Ε]/Sqrt[2] ℏ)] + a Sin[(L Sqrt[m Ε]/Sqrt[2] ℏ)] == E^-(L Sqrt[m (V - Ε)]/Sqrt[2] ℏ) h, (Sqrt[2] E^-(L Sqrt[m (V - Ε)]/Sqrt[2] ℏ) ... /Sqrt[2] ℏ)]/ℏ) + (Sqrt[2] b Sqrt[m Ε] Sin[(L Sqrt[m Ε]/Sqrt[2] ℏ)]/ℏ), (Sqrt[2] a Sqrt[m Ε] Cos[(L Sqrt[m Ε]/Sqrt[2] ℏ)]/ℏ) - (Sqrt[2] b Sqrt[m Ε] Sin[(L Sqrt[m Ε]/Sqrt[2] ℏ)]/ℏ) == -(Sqrt[2] E^-(L Sqrt[m (V - Ε)]/Sqrt[2] ℏ) h Sqrt[m (V - Ε)]/ℏ)}
```

The homogenous linear equations admit nonzero solutions if their coefficient matrix is singular:

```wl
In[3]:= eqn = Det[CoefficientArrays[bconds, {a, b, g, h}][[2]]] == 0

Out[3]= (4 E^-(Sqrt[2] L Sqrt[m (V - Ε)]/ℏ) Sqrt[m (V - Ε)] Sqrt[m Ε] Cos[(L Sqrt[m Ε]/Sqrt[2] ℏ)]^2/ℏ^2) + (4 E^-(Sqrt[2] L Sqrt[m (V - Ε)]/ℏ) m V Cos[(L Sqrt[m Ε]/Sqrt[2] ℏ)] Sin[(L Sqrt[m Ε]/Sqrt[2] ℏ)]/ℏ^2) - (8 E^-(Sqrt[2] L Sqrt[m (V - Ε)]/ℏ) m Ε Cos[(L Sqrt[m Ε]/Sqrt[2] ℏ)] Sin[(L Sqrt[m Ε]/Sqrt[2] ℏ)]/ℏ^2) - (4 E^-(Sqrt[2] L Sqrt[m (V - Ε)]/ℏ) Sqrt[m (V - Ε)] Sqrt[m Ε] Sin[(L Sqrt[m Ε]/Sqrt[2] ℏ)]^2/ℏ^2) == 0
```

Assume that $m$ and $L$ are 1 and the units are chosen so that $\hbar =1$ :

```wl
In[4]:= m = 1;L = 1; ℏ = 1;
```

Find the possible energy levels for $V=1$ :

```wl
In[5]:= e1 = Ε /. Solve[(eqn /. V -> 1) && Ε > 0, Ε, Reals]

Out[5]=
{Root[{Sqrt[1 - #1]*Sqrt[#1] + 2*Tan[(Rational[1, 2]*1/Sqrt[2])*Sqrt[#1]] - 
    (4*#1)*Tan[(Rational[1, 2]*1/Sqrt[2])*Sqrt[#1]] - ((6*Sqrt[1 - #1])*Sqrt[#1])*
     Tan[(Rational[1, 2]*1/Sqrt[2])*Sqrt[#1]]^2 - 2*Tan[(Rational[1, 2]*1/Sqrt[2])*Sqrt[#1]]^3 + 
    (4*#1)*Tan[(Rational[1, 2]*1/Sqrt[2])*Sqrt[#1]]^3 + (Sqrt[1 - #1]*Sqrt[#1])*
     Tan[(Rational[1, 2]*1/Sqrt[2])*Sqrt[#1]]^4 & , 
  0.69207840729638742868601466337493310476`23.30102999566577}]}
```

Compute the asymptotic solution near $V=1$ :

```wl
In[6]:= AsymptoticSolve[eqn, {Ε, N[e1[[1]], 20]}, {V, 1, 5}]

Out[6]= {{Ε -> 0.69207840729638742869 + 0.4970476525435086 (-1 + V) - 0.1272320183888753 (-1 + V)^2 + 0.041676873535878 (-1 + V)^3 - 0.015417958054398 (-1 + V)^4 + 0.006132936093113 (-1 + V)^5}}
```

Compare the asymptotic solution and the minimum exact solution:

```wl
In[7]:=
asympt = First[Ε /. %];
exact = Table[{V, Min[Ε /. Solve[eqn && Ε ≥ 1 / 1000, Ε, Reals]]}, {V, 1 / 4, 4, 1 / 4}];

In[8]:= Show[{Plot[asympt, {V, 0.25, 4}], ListPlot[exact, PlotStyle -> Red]}]

Out[8]= [image]
```

## See Also

* [`Solve`](https://reference.wolfram.com/language/ref/Solve.en.md)
* [`Asymptotic`](https://reference.wolfram.com/language/ref/Asymptotic.en.md)
* [`Reduce`](https://reference.wolfram.com/language/ref/Reduce.en.md)
* [`FindInstance`](https://reference.wolfram.com/language/ref/FindInstance.en.md)
* [`FindRoot`](https://reference.wolfram.com/language/ref/FindRoot.en.md)
* [`Series`](https://reference.wolfram.com/language/ref/Series.en.md)
* [`AsymptoticDSolveValue`](https://reference.wolfram.com/language/ref/AsymptoticDSolveValue.en.md)
* [`AsymptoticRSolveValue`](https://reference.wolfram.com/language/ref/AsymptoticRSolveValue.en.md)

## Related Guides

* [`Asymptotics`](https://reference.wolfram.com/language/guide/Asymptotics.en.md)
* [Equation Solving](https://reference.wolfram.com/language/guide/EquationSolving.en.md)
* [Polynomial Algebra](https://reference.wolfram.com/language/guide/PolynomialAlgebra.en.md)

## History

* [Introduced in 2019 (12.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn120.en.md) \| [Updated in 2020 (12.1)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn121.en.md)