MathOverflow is a question and answer site for professional mathematicians. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is there a way to scale Bessel J(n,.) (Bessel of first kind) and Bessel H(n,.) (Bessel of third kind or Hankel)? I am having computer problems with higher orders (higher vlaues of n) and small arguments. I am using Matlab. The problem is in elastic wave propagation and scattering. The solution of the differential equations of potential is the cylindrical Bessel:

$ <math>r^2 \frac{d^2 R}{dr^2} + r \frac{dR}{dr} + (r^2 - \alpha^2)R = f(r)</math>$

for an arbitrary real integer number α (the '''order''' of the Bessel function). In solving problems in cylindrical coordinate systems, Bessel functions are of integer order (α = ''n''). Since this is a second-order differential equation, there must be two [[linearly independent]] solutions. My solutions use Bessel J(n,.) and Hankel H(n,.) (as previously mentioned)

The '''inhomogeneous Helmholtz equation''' is the equation:

$ <math>\nabla^2 A(r) + k^2 A(r) = -f(r) \mbox { in } \mathbb R^n</math>$

Each set of equations are solved separately in the nth order. I am having problems while solving the set of linear equations when n is high and argument is small.

for example the set of linear equations can be written as:





such that b1, b2, b3 b4 are known boundary conditions, while A=[a1 a2 a3 a4] is the vector of unknowns and T=[Tij] is a matrix of knowns.

If I can scale or normalize J(n,.) and H(n,.)

in small arguments and big n J(n,.) is a very small ~0 while H(n,.) is very big of the order 1e40. The matrix becomes ill conditioned

Thanks Sorry guys I will give an example of the problem. Let us say: - I am solving a scattered wave problem. I have full knowledge of an incident wave (displacements, stresses) that is the boundary, and I know the properties of the different medias. I am trying to find the displacement and stresses in different media. The scattered wave. In other words I am trying to find the amplitudes in different medias.

The potential is assumed for each media to be:

$<math>\phi=\left(a_{1}J_{n}(K*r)+a_{2}*H_{n}(K*r)\right)*e^{in\theta} ,</math>$

$<math>\psi(t) = \left(a_{3}J_{n}(k*r)+a_{4}*H_{n}(k*r)\right)*e^{in\theta} \,</math> $

I am differentiating the potential to get displacements and stresses in terms of the unknowns.

share|cite|improve this question
I don't think I understood correctly what you're trying to do, but if your matrix is ill-conditioned because the entries in factor of a1 and a2 are much smaller than the ones in factor of a3 and a4, why not scale them? Ie set a'1 = 1e-40 a1, same for a2, and keep a'3 and a'4 equal to a3 and a4, and solve in the prime variables. But anyway, if the difference is that large, you probably can neglect a1 and a2 altogether. Also, there are asymptotics available for J and H for large n (or small x), you might want to look into that, maybe with a matched asymptotic expansion (see wikipedia) – Antoine Levitt Nov 30 '11 at 21:27
To follow up on Antoine's comment, if the problem lies with evaluating and appropriately scaling the functions J and H, you may want to take a look at the book "Numerical Methods for Special Functions" by Gil, Segura and Temme. Also, as Antoine said, it would be useful if you could clarify exactly what you're trying to do. – Ben Adcock Nov 30 '11 at 21:57
I have added more hopefully it will clarify. In response to Antoine a1 and a2 have small coefficients while a3 and a4 has big coefficients. I expect a3 and a4 to be zero if not approach zero. However this is a program and it needs to be very carefully set up at first. Then i won't have to interfer and let it do the calculation. – Chad Dec 1 '11 at 5:39
My remark still applies. Note that you can perform the scaling automatically by, essentially, preconditioning with the diagonal. Say you want to solve $Ax = b$. Set $x' = D x$. Then, $A D^{-1} x' = b$, and $A D^{-1}$ has nice conditioning. But what you're trying to solve is singular by nature, so do take the time to figure out what's going on and try an asymptotic solution. I'm assuming you're expanding a true solution in $n$, it might be useful to figure out beforehand where you need to stop to avoid getting in singular regimes. – Antoine Levitt Dec 1 '11 at 8:29
Here is what I found out from a research paper: -They normalize the potential for each layer and for each nth iteration The potential will have Hankel function equal to 1 at the inner radius, while Bessel J will be multiplied by Hankel at outer radius. @ Antoine your idea is great but as you said what I'm trying to solve is singular by nature. It needed some good understanding of the physics of the problem. – Chad Dec 1 '11 at 16:06

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.