Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: Summer A ODEs
Views: 89
Visibility: Unlisted (only visible to those who know the link)
Image: ubuntu2004
Kernel: SageMath 9.2

Hypergeometric and Bessel Functions

We have seen that the (generalized) hypergeometric functions pFq(α1,,αpβ1,,βq;x)=n=0(α1)n(αp)nn!(β1)n(βq)nxn_p F_q(\alpha_1, \ldots, \alpha_p | \beta_1, \ldots, \beta_q; x) = \sum_{n=0}^\infty \frac {(\alpha_1)_n \cdots (\alpha_p)_n}{n!(\beta_1)_n \cdots (\beta_q)_n} x^n where (a)n=a(a+1)(a+2)(a+n1)(a)_n = a(a+1)(a+2) \cdots (a+n-1) naturally give solutions to a wide variety of differential equations with regular singular points after some change of variables. In particular the case p=2,q=1p = 2, q = 1 corresponding to the hypergeometric function 2F1(α,βγ;x)=n=0(α)n(β)nn!(γ)nxn_2 F_1(\alpha, \beta | \gamma; x) = \sum_{n=0}^\infty \frac {(\alpha)_n(\beta)_n}{n!(\gamma)_n} x^n is the expansion around x=0x = 0 of one of the solutions of the hypergeometric equation x(1x)y+(γ(1+α+β)x)yαβy=0x(1-x)y'' + (\gamma - (1+ \alpha + \beta )x) y' -\alpha\beta y =0 and any 2nd order linear ODE with 3 regular singular points (including at \infty ) at x1,x2x_1,x_2 and x3x_3 can be transformed into this equation via a change of coordinates given by a mobius transformation x(ax+b)/(cx+d)x \mapsto (ax+b)/(cx+d). Specifically the transformation is x=(xx1)(x2x3)(xx3)(x2x1)x' = \frac{(x-x_1)(x_2-x_3)}{(x-x_3)(x_2-x_1)} sending x1,x2,x3x_1,x_2,x_3 to 0,1,0,1,\infty.

We'll focus on two examples of limits of these functions: Chebyshev polynomials and Bessel functions.

Chebyshev polynomials

These are solutions to the Chebyshev equation for integral nn (1x2)yxy+n2y=0,nZ(1-x^2)y'' -xy' + n^2 y = 0, \qquad n \in \mathbb{Z} which are additionally required to be polynomials and satisfy a normalization requirement. The first examples are

nnTn(x)T_n(x)
011
1xx
22x212x^2 -1
34x33x4x^3 - 3x
48x48x2+18x^4 - 8x^2 + 1
516x520x3+5x16x^5 - 20x^3 + 5x

The Chebyshev equation has regular singular points at 1,11, -1 and \infty so the relevant Mobius transformation sends 1,1,1,-1, \infty to 0,1,0,1,\infty is x12(1x)x\mapsto \frac 1 2(1-x). Since our solution actually has integral powers of xx, it follows that 2F1(α,βγ;12(1x))_2F_1(\alpha, \beta | \gamma;\frac 1 2(1-x) ) is a solution to the Chebyshev equation for some α,β,γ\alpha, \beta,\gamma and it is not hard to show the right values are α=n,β=n,γ=1/2\alpha = n, \beta = -n, \gamma = 1/2. It also turns out to be the case that the constants match correctly and so Tn(x)=2F1(n,n12;12(1x))\boxed{T_n(x) = {}_2F_1(n, -n |\frac 1 2;\frac 1 2(1-x) )}.

Below we plot 2F1(α,βγ;z)_2 F_1(\alpha, \beta | \gamma; z) for chosen values of the parameters and chosen expression for zz. Pick appropriate values to see how it matches the Chebyshev polynomials.

@interact def hypergeometric_chebyshev( a = slider(-10,10,default = 0, step_size = .1, label = '$\\alpha$'), b = slider(-10,10,default = 0, step_size = .1, label = '$\\beta$'), g = slider(-10,10,default = .2, step_size = .1, label = '$\\gamma$'), n = ("$T_n(x)$", slider([0,1,2,3,4,5,6,7,8,9,10])), z = input_box(default = 1/2*(1-x), label = "$z = f(x)$") ): x = var('x') chebyshev = chebyshev_T(n,x) zstr = latex(simplify(z(x=x))) title = '$T_{' + str(n) + '}(x)$ and $_2F_1(\\alpha, \\beta | \\gamma;' + zstr + ')$' ch_plot = plot(chebyshev, (x,-1,1), color = 'blue', title = title, legend_label = '$T_{' + str(n) + '}(x)$') hyperplot = plot(hypergeometric([a,b], [g], z(x =x)), (x,-1,1), color = 'red', thickness = .6, legend_label = "$_2F_1(\\alpha, \\beta | \\gamma;" + zstr + ')$', ymin = -1, ymax = 1) show(ch_plot + hyperplot, figsize = 7)

Bessel functions

Bessel functions are solutions to Bessel's equation x2y+xy+(x2ν2)y=0x^2y'' +xy' + (x^2 - \nu^2)y = 0 Which has just one regular singular point, at x=0x=0 but an irregular singular point at x=x = \infty. The solution to the Bessel equation which is bounded at x=0x = 0 is denoted Jν(x).J_\nu(x). This is called the Bessel function of the first kind of order ν\mathbf{\nu}.

The other solution can be found using the Frobenius method but it is convenient to take a particular normalization called the Bessel function of the second kind of order ν\mathbf{\nu} which is denoted Yν(x)Y_{\nu}(x). (See wikipedia for various formulas for it, and it's description in terms of the Frobenius method). But in particular it blows up at x=0x = 0: we have limx0Yν(x)=\lim_{x \to 0}Y_{\nu}(x) = -\infty.

The general solution to Bessel's equation is c1Jν(x)+c2Yν(x).c_1 J_{\nu}(x) + c_2 Y_{\nu}(x).

We want to investigate the solution to this equation in terms of hypergeometric functions, and so we seek a way to find a transformation that gives a hypergeometric equation an irregular singular point. A great way to produce irregular singluar points is to collide two regular singular points. If we want to produce an irregular singular point at infinity we can consider the a transformation of the hypergeometric equation where take the Mobius trasformation sending 0,1,0,1,\infty to 0,β,0,\beta,\infty and then send β\beta \to \infty. Our hypergeometric ODE from before becomes xy+(γx)yαy=0xy'' + (\gamma - x)y' - \alpha y = 0 and one solution is limβ2F1(α,βγ;xβ)=1F1(αγ;x).\lim_{\beta \to \infty} {}_2 F_1(\alpha, \beta | \gamma; \frac {x} {\beta}) = {}_1 F_1(\alpha | \gamma;x).

The other independent solution is easy to express in terms of 1F1{}_1 F_1 when 1γ1-\gamma is not an integer, and has another expression when it is. This function 1F1{}_1F_1 is called the confluent hypergeometric function (of the first kind).

To make contact with Bessel functions, we have to make a few additional transformations. First we must take an additional limit in order to get a constant coefficient for yy. Namely we take the transformation xx/αx\mapsto x/\alpha and take α\alpha \to \infty: our equation becomes xy+γyy=0xy'' + \gamma y' - y = 0 with first solution limα1F1(βγ;xα)=0F1(γ;x).\lim_{\alpha \to \infty} {}_1 F_1(\beta | \gamma; \frac {x} {\alpha}) = {}_0 F_1( | \gamma;x). The other solution can be reproduced similarly. This function 0F1(γ;x){}_0 F_1( | \gamma; x) is called the confluent hypergeometric limit function because it is a limit of the confluent hypergeometric function. After some work (see the bottom of this notebook) we can show that the change of variables z=(x/2)2z = -(x/2)^2 reduces the previous equation into the Bessel equation and in particular we get Jν(x)=cxν0F1(ν+1;14x2)\boxed{J_\nu(x) = c x^{\nu}{}_0 F_1(| \nu + 1; -\frac{1}{4} x^2)} for a constant cc which, to coincide with usual conventions, is taken to be c=2νΓ(ν+1).c = \frac{2^{-\nu}}{\Gamma(\nu + 1)}.

Use the interaction below to notice that this hypergeometric expression actually coincides with the Bessel function when you plug in γ=ν+1\gamma = \nu + 1. Below the interactive demo, see details on the rest of the derivation of the equivalence between the Bessel and hypergeometric equation.

import warnings warnings.filterwarnings("ignore", category=DeprecationWarning) @interact def hypergeometric_Bessel( nu = slider(-10,10,default = 0, step_size = .1, label = '$\\nu$'), g = slider(-10,10,default = .2, step_size = .1, label = '$\\gamma$'), z = input_box(default = -1/4*x^2, label = "$z = f(x)$"), second = checkbox(label = "Also plot $Y_{\\nu}(x)$?", default = False), auto_update = False ): x = var('x') nu = nu.numerical_approx(digits = 2) zstr = latex(simplify(z(x=x))) title = '$J_{' + str(nu) + '}(x)$ and $cx^{\\nu}{}_0F_1( | \\gamma;' + zstr + ')$' j_plot = plot(bessel_J(nu,x), (x,0,10), color = 'blue', title = title, legend_label = '$J_{' + str(nu) + '}(x)$') gamma_nu_p_1_inv = 1/(factorial(nu + 1 - 1)) hyperplot = plot(2^(-nu)*x^nu*gamma_nu_p_1_inv*hypergeometric([], [g], z(x =x)), (x,0,10), color = 'red', thickness = .6, legend_label = '$cx^{\\nu}{}_0F_1( | \\gamma;' + zstr + ')$') show(LatexExpr("\\text{Try setting }\\gamma = \\nu + 1")) out = j_plot + hyperplot if second: out += plot(bessel_Y(nu, x), (x,0,10), color = 'magenta', legend_label = '$Y_{' + str(nu) + '}(x)$', thickness = .3) show(out, figsize = 7)

Derivation of relation between Bessel and hypergeometric equation

We know that the Bessel equation of order ν\nu (from above) x2y+xy+(x2ν2)y=0x^2y'' +xy' + (x^2 - \nu^2)y = 0 has Indicial equaiton I(r)=r2ν2I(r) = r^2 -\nu^2 whose roots are ν\nu and ν-\nu. We could apply the Frobeinus method and find a solution but instead let's just look for solutions of the form y(x)=xνu(x)y(x) = x^\nu u(x) since the Frobenius ansatz indicates we will find a solution this way. Then y=νxν1u(x)+xνu(x)=xν(x1u(x)+u(x))y=(ν1)νxν2u(x)+2νxν1u(x)+xνu(x)=xν(ν(ν1)x2u(x)+2νx1u(x)+u(x))\begin{aligned}y' &= \nu x^{\nu -1}u(x) + x^\nu u'(x)\\ &= x^\nu(x^{-1} u(x) + u'(x))\\ y'' &= (\nu -1)\nu x^{\nu -2} u(x) + 2\nu x^{\nu -1} u'(x) + x^\nu u''(x)\\ &= x^{\nu} (\nu (\nu-1)x^{-2} u(x) + 2 \nu x^{-1} u'(x) + u''(x))\end{aligned} and plugging this into the Bessel equation and dividing both sides by xνx^{\nu} we get ν(ν1)u(x)+2νxu(x)+x2u(x)+νu(x)+xu(x)+(x2ν2)u(x)=0,\nu (\nu-1) u(x) + 2 \nu x u'(x) + x^2 u''(x) + \nu u(x) + xu'(x) + (x^2 - \nu^2) u(x) = 0, or combining like terms and dividing by xx we get xu+(2ν+1)u+xu=0.x u'' + (2\nu + 1)u' + xu = 0.

Now we want to make the substitution z=(x/2)2z = -(x/2)^2. So dz/dx=x/2dz/dx = -x/2, dudx=dzdxdudz=x2u(z)d2udx2=ddx(x2dudz)=12dudzx2(dzdxddz)dudz=12u(z)+x24u(z).\begin{aligned}\frac{du}{dx} &= \frac{dz}{dx} \frac{du}{dz}\\ &= -\frac{x}{2}u'(z)\\ \frac{d^2 u}{dx^2} &= \frac{d}{dx} (-\frac{x}{2} \frac{du}{dz})\\ &= -\frac{1}{2} \frac{du}{dz} -\frac{x}{2} \left(\frac{dz}{dx} \frac{d}{dz}\right) \frac{du}{dz}\\ &= -\frac{1}{2}u'(z) + \frac{x^2}{4} u''(z).\end{aligned}

Plugging this in gives the equation for u(x)u(x) we get x(1/2u(z)+x2/4u(z))+(2ν+1)(x/2)u(z)+xu(z)=0x(-1/2u'(z) + x^2/4 u''(z)) + (2\nu + 1)(-x/2)u'(z) + xu(z) = 0 which readliy simplifies (dividing by x-x and using z=x2/4 z= -x^2/4) to zu+(ν+1)uu=0zu'' + (\nu+1) u' - u = 0 which is our equation xy+γyy=0xy'' + \gamma y' - y = 0 for the confluent hypergeometric limit function 0F1(γ;x){}_0 F_1(|\gamma; x) with x=zx = z and γ=ν+1\gamma = \nu + 1. Thus it follows that u=0F1(γ;z)u = {}_0 F_1(|\gamma; z) is a solution to this equation and so xνu(x)=xν0F1(ν+1;x2/4)x^\nu u(x) = x^\nu {}_0 F_1(| \nu + 1 ; -x^2/4) is a solution to the Bessel equation.

Modified Bessel functions

Once we have done this technique once, where we change variables to express a singular ODE in terms of a hypergeometric ODE or one of its limits we can often deduce a range of other interesting results as well. For example we will also solve the modified Bessel equation x2y+xy(x2+ν2)y=0x^2 y'' + xy' - (x^2 + \nu^2)y = 0 This equation arises by the substitution z=ixz = ix in the same way that we get sinh(x)\sinh(x) and cosh(x)\cosh(x) from cos(it)\cos(it) and sin(it)\sin(it) - since their defining equations are y+y=0y'' + y = 0 and yy=0y'' - y = 0 respectively. The solutions so the modified Bessel equation are called the modified Bessel functions where we have the modified Bessel function of the first kind Iν(x)=iνJν(ix)I_\nu(x) = i^{-\nu}J_\nu(ix) and the modified Bessel function of the second kind Kν(x)=π/2(Iν(x)Inu(x))/(sin(νπ))K_\nu(x) = \pi/2(I_\nu(x) - I_{-nu}(x))/(\sin(\nu\pi)) (for ν∉Z\nu \not\in \mathbb{Z}, otherwise the limit at νn\nu \to n is taken as before).

Sometimes these are called hyperbolic Bessel functions because of the strength of the analogy between the Bessel and modified Bessel functions and between trigonometric and hyperbolic trigonometric functions.

We immediately get a series expansion for the Modified Bessel equation of the first kind, namely Iν(x)=iνJν(ix)=iν2νΓ(ν+1)(ix)ν0F1(ν+1;(ix)2/4)=2νΓ(ν+1)xν0F1(ν+1;x2/4)\begin{aligned}I_{\nu}(x) &= i^{-\nu}J_{\nu}(ix)\\ &= i^{-\nu}\frac{2^\nu}{\Gamma(\nu + 1)}(ix)^\nu {}_0 F_1(| \nu + 1; -(ix)^2/4)\\ & = \boxed{\frac{2^\nu}{\Gamma(\nu + 1)}x^\nu {}_0 F_1(| \nu + 1; x^2/4)}\end{aligned} which remarkably omits any ii. Finally below we have plots of these confluent hypergeometric limit functions and the modified Bessel functions. These grow exponentially, just like cosh(x)\cosh(x) and sinh(x)\sinh(x).

import warnings warnings.filterwarnings("ignore", category=DeprecationWarning) @interact def hypergeometric_hyperbolic_Bessel( nu = slider(-10,10,default = 0, step_size = .1, label = '$\\nu$'), g = slider(-10,10,default = .2, step_size = .1, label = '$\\gamma$'), z = input_box(default = 1/4*x^2, label = "$z = f(x)$"), second = checkbox(label = "Also plot $K_{\\nu}(x)$?", default = False), auto_update = False ): x = var('x') nu = nu.numerical_approx(digits = 2) zstr = latex(simplify(z(x=x))) title = '$I_{' + str(nu) + '}(x)$ and $cx^{\\nu}{}_0F_1( | \\gamma;' + zstr + ')$' i_plot = plot(bessel_I(nu,x), (x,0,3), color = 'blue', title = title, legend_label = '$I_{' + str(nu) + '}(x)$') gamma_nu_p_1_inv = 1/(factorial(nu + 1 - 1)) hyperplot = plot(2^(-nu)*x^nu*gamma_nu_p_1_inv*hypergeometric([], [g], z(x =x)), (x,0,3), color = 'red',thickness = .6, legend_label = '$cx^{\\nu}{}_0F_1( | \\gamma;' + zstr + ')$') show(LatexExpr("\\text{Try setting }\\gamma = \\nu + 1")) out = i_plot + hyperplot if second: out += plot(bessel_K(nu, x), (x,0,3), color = 'magenta', legend_label = '$K_{' + str(nu) + '}(x)$', thickness = .3, ymax = 10) show(out, figsize = 7)