Expansion of a plane wave in spherical waves

Click For Summary
SUMMARY

The discussion focuses on the expansion of a plane wave into spherical waves using the equation e^{i\vec{k}\cdot\vec{r}}. A MATLAB code was provided to visualize the equivalence of both sides of the equation, but discrepancies were noted in the resulting graphs. The issue was identified as the incorrect use of the ordinary Bessel function (besselj) instead of the spherical Bessel function (j_n) in the MATLAB implementation. Correcting this to use spherical Bessel functions will resolve the discrepancies in the output.

PREREQUISITES
  • Understanding of wave functions and their mathematical representations
  • Familiarity with spherical Bessel functions and their properties
  • Proficiency in MATLAB programming and plotting
  • Knowledge of Legendre polynomials and their application in wave expansions
NEXT STEPS
  • Learn about spherical Bessel functions and their derivation from ordinary Bessel functions
  • Explore MATLAB's implementation of spherical Bessel functions and related functions
  • Study the mathematical principles behind wave function expansions in spherical coordinates
  • Investigate the use of Legendre polynomials in physical applications and their computational methods
USEFUL FOR

Students and researchers in physics, particularly those studying wave mechanics, as well as MATLAB users looking to implement wave function expansions accurately.

clive
Messages
118
Reaction score
0
I have to expand a plane wave in spherical waves by using

e^{i\vec{k}\cdot\vec{r}}=\sum_{n=0}^{\infty}i^n (2n+1)P_n(cos \theta) j_n(kr)

I wrote a MATLAB code (pasted below) in order to check this by plotting the two sides of the eq above. The graphs are similar but different. I do not know what is wrong with this ... I suppose there are some missing coefficients somewhere...?

clear all;
close all;
clc;

kr=0.1*i+6;

x=linspace(-1, 1, 100);

for(ii=1:100)
F_plane(ii)=exp(i*abs(kr)*x(ii));
end

for(ii=1:100)
F_approx(ii)=0;
for(order=0:150)
ASSOCLEG=legendre(order, x(ii));
F_approx(ii)=F_approx(ii)+i^order*(2*order+1)*besselj(order, abs(kr))*ASSOCLEG(1);
end
end

plot(x, real(F_plane), 'or', x, imag(F_plane), 'ob', x, real(F_approx), '-r', x, imag(F_approx), '-b')
 
Last edited:
Physics news on Phys.org
I have the same problem, does anyone what is missing here?
 
Is this for school or for work? I can move the thread to the Homework Help forums if its homework/coursework.
 
This is for school
 
Last edited:
I figured out that the problem is that in your code you are using besselj in MATLAB which is ordinary bessel function of first kind (J_n). You should have used spherical bessel functions j_n instead in this expansion.

The spherical Bessel functions j_n are given in terms of ordinary Bessel functions J_n by:

j_n(x) = sqrt(pi/(2*x)) J_{n+1/2}(x)

This would solve it
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
3
Views
4K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K