Asymptotics: The Art of Approximation

Devendra Kapadia 
Wolfram Research, Inc.

Plan for the Talk

What Is Asymptotics?

Historical Development

Differential Equations and Integrals

Difference Equations and Sums

Algebraic Equations

What Is Asymptotics?

Asymptotics is a powerful alternative to exact and numerical methods.

In practice, asymptotic methods provide a useful approximate formula for a problem.

The asymptotic formula is usually a part of an infinite series.

The infinite series is often divergent, and hence finding the correct approximation is an art.

History of Asymptotic Expansions

17th century—exploration of calculus using infinite series

18th century—pragmatic use of divergent series

19th century—rigorous understanding of convergence

Modern era—asymptotic expansions

Ordinary Points for Linear ODEs

Compute a Taylor polynomial approximation for Cos:

deqn={y''[x]+y[x]==0,y[0]==1,y'[0]==0};

sol=AsymptoticDSolveValue[deqn,y[x],{x,0,8}]

Plot the solution for various orders:

nsol[n_]:=Callout[AsymptoticDSolveValue[{y''[x]+y[x]==0,y[0]==1,y'[0]==0},y[x],{x,0,n}],n]Plot[Evaluate[{nsol[4],nsol[8],nsol[12],nsol[16],nsol[20],Cos[x]}],{x,0,3 π},PlotRange->{-2,5}]

Regular Singular Points for Linear ODEs

Solve Bessel's equation of order 1/2 around the regular singular point x=0:

besseleqn=(x^2) y''[x]+x y'[x]+((x^2)-(1/4)) y[x]==0;

sol=AsymptoticDSolveValue[besseleqn,y[x],{x,0,6}]

Plot the regular and singular solutions:

sol=AsymptoticDSolveValue[besseleqn,y[x],{x,0,24}];Plot[Evaluate[{sol/. {(C[1])->1,(C[2])->0},sol/. {(C[1])->0,(C[2])->1}}],{x,0,3 π},PlotRange->{-2,2},WorkingPrecision->20,PlotLegends->{"regular solution","singular solution"}]

Irregular Singular Points for Linear ODEs

Solve the Airy equation at Infinity:

AsymptoticDSolveValue[y''[x]-x y[x]==0,y[x],{x,∞,3}]

Plot the approximations and the Airy functions:

s1=Normal[Series[AiryAi[x],{x,∞,4}]];s2=Normal[Series[AiryBi[x],{x,∞,4}]];Plot[Evaluate[{AiryAi[x],AiryBi[x],s1,s2}],{x,-3,3},PlotLegends->{AiryAi[x],AiryBi[x],"s1","s2"},PlotStyle->Thickness[0.008]]

Nonlinear Differential Equations

Compute a polynomial approximation for a nonlinear first-order ODE:

eqn={3 ((y'[x])^2)+4 x y'[x]-y[x]+(x^2)==0,y[0]==1};

sol=Quiet[AsymptoticDSolveValue[eqn,y[x],{x,0,37}]]

Verify that this is an exact solution of the ODE:

Simplify[eqn/. {y->Function[{x},Evaluate[sol]]}]

Boundary Layer Problems

Solve a singular perturbation problem:

eqn={ϵ y''[x]+2 y'[x]+y[x]==0,y[0]==0,y[1]==(1/2)};

psol=AsymptoticDSolveValue[eqn,y[x],x,{ϵ,0,1}]

Compare with the exact solution:

dsol=DSolveValue[eqn,y[x],x]

Plot[Evaluate[{psol,dsol+0.011}/. {ϵ->(1/30)}],{x,0,1},PlotStyle->{Red,Blue}]

Laplace Method for Integrals

Define a function involving an exponential kernel that has a maximum at x=1:

f[x_]:=(E^(-ω ((x^2)-2 x))) (((1+x))^(5/2))

Plot[f[x]/. {ω->30},{x,0,10},PlotRange->All,Filling->Axis,FillingStyle->Yellow]

Find the leading term in the expansion of the integral using Laplace's method:

AsymptoticIntegrate[f[x],{x,0,∞},{ω,∞,1}]

Compare with the numerical result:

%/. {ω->30.}

NIntegrate[Exp[-30 ((x^2)-2 x)] (((1+x))^(5/2)),{x,0,∞}]

Obtain a better approximation by computing an extra term:

AsymptoticIntegrate[f[x],{x,0,∞},{ω,∞,2}]

%/. {ω->30.}

Method of Stationary Phase

Find the leading term approximation for the integral of an oscillatory function:

f[x_]:=(E^(I ω Sin[t]))

Plot[Re[f[x]/. {ω->50}],{t,0,π},Filling->Axis,FillingStyle->Yellow]

The approximation is computed using the method of stationary phase:

int=AsymptoticIntegrate[f[t],{t,0,π},{ω,∞,1}]

Compare with a numerical approximation:

int/. ω->5000.

NIntegrate[Exp[I 5000 Sin[t]],{t,0,π},MinRecursion->20,MaxRecursion->20]

Divergent Series and Asymptotics

Consider the following series expansion:

aint=AsymptoticIntegrate[((E^(-t))/(1+x t)),{t,0,∞},{x,0,8}]

The series diverges for all nonzero values of x.

A numerical comparison shows that the expansion is fairly accurate:

aint/. x->0.05

NIntegrate[((E^(-t))/(1+0.05 t)),{t,0,∞}]

The approximation is no longer accurate with a larger number of terms:

AsymptoticIntegrate[((E^(-t))/(1+x t)),{t,0,∞},{x,0,150}]/. {x->0.05`20}

Exact Value of a Definite Integral

Use AsymptoticIntegrate to approximate a definite integral:

AsymptoticIntegrate[Log[1 - 2a Cos[x] + a^2], {x, 0, Pi}, 
   {a, Infinity, 8}]//Timing

The higher-order terms do not contribute to the approximation:

Series[Log[1-2 a Cos[x]+a^2],{a,Infinity,3}]//Normal

Integrate[%,{x,0,Pi}]

Hence, the approximation is actually the exact value of the integral:

Integrate[Log[1-2 a Cos[x]+a^2],{x,0,Pi},Assumptions->a>1]//Timing

Difference Equations

Find an asymptotic approximation for the sequence of involutions:

seq ={1,2,4,10,26,76,232,764,2620,9496,35696,140152,568504};

Obtain a difference equation for the general term:

FindSequenceFunction[seq][[1]][y,n]

Compute the leading asymptotic term:

rec={y[n+1]==y[n]+n y[n-1],y[1]==1,y[2]==2.};

AsymptoticRSolveValue[rec,y[n],{n,∞,1}]

Compare the approximate and actual values:

%/.{n-> 1000}

RSolveValue[rec,y[1000],n]

Sums

Asymptotic expansion for an infinite harmonic sum:

AsymptoticSum[(((-1))^k) k (E^(-(k^2) x)),{k,1,∞},{x,0,3}]

Compare with a numerical approximation:

%/.x->0.07

NSum[(((-1))^k) k (E^(-(k^2) 0.07)),{k,1,∞}]

Algebraic Equations

The following algebraic curve has a singular point at the origin:

curve=((x^3)-3 x (y^2))+((((x^2)+(y^2)))^2)==0;

Show[ContourPlot[Evaluate[curve==0],{x,-1,9/16},{y,-1,1},PlotPoints->100,ContourLabels->False,Epilog->{PointSize[.04],Red,Point[{0,0}]},ContourStyle->Thickness[0.015]]]

Find real asymptotic approximations for x->(SuperPlus[0]):

AsymptoticSolve[curve,{y,0},{x,0,3},(Reals),Direction->"FromAbove"]

Find real asymptotic approximations for x->(SuperMinus[0]):

AsymptoticSolve[curve,{y,0},{x,0,3},(Reals),Direction->"FromBelow"]

Visualize the curve along with the asymptotic approximations:

rs=AsymptoticSolve[curve,{y,0},{x,0,3},(Reals),Direction->"FromAbove"];ls=AsymptoticSolve[curve,{y,0},{x,0,3},(Reals),Direction->"FromBelow"];
lp=ParametricPlot[Evaluate[{x,y}/. ls],{x,-1,0},PlotStyle->{{Thickness[0.015],Red,Dashed}}];
rp=ParametricPlot[Evaluate[{x,y}/. rs],{x,0,1},PlotStyle->{{Thickness[0.015],Red,Dashed}}];
ep=ContourPlot[((x^3)-3 x (y^2))+((((x^2)+(y^2)))^2)==0,{x,-1,9/16},{y,-1,1},PlotPoints->100,Epilog->{PointSize[.04],Red,Point[{0,0}]},ContourStyle->Thickness[0.015]];
Show[{ep,lp,rp}]

Final Remarks

Asymptotics provides a powerful third mode of computation in the Wolfram Language™.

There are plans to implement a general Asymptotic function in the near future.