Can we find derivative of bessel functions in matlab directly?

7 visualizaciones (últimos 30 días)
Javeria
Javeria el 3 de Jul. de 2025
Movida: Torsten el 3 de Jul. de 2025
For example if i have x can be any value. I need to know how we can find the derivative directly in MATLAb. for m=0,1.

Respuesta aceptada

Torsten
Torsten el 3 de Jul. de 2025
Movida: Torsten el 3 de Jul. de 2025
You can compute it symbolically first and insert the result as a numerical expression in your code.
syms x
diff(besselj(0,x),x)
ans = 
diff(besselj(1,x),x)
ans = 

Más respuestas (1)

David Goodmanson
David Goodmanson el 3 de Jul. de 2025
Editada: David Goodmanson el 3 de Jul. de 2025
Hi Javeria,
Here is a function that produces J'm(x) for integer m.
function y = besseljd(n,x,opt)
% derivative of bessel function of integer order.
% input s is optional.
% if s = 1, result is scaled by exp(-abs(imag(z))), same as with besselj.
% default is 0, no scaling.
% note that there is another available expression besides the one used below:
% y = besselj(n-1,x,s) - n*besselj(n,x,s)./x;
%
% y = besseljd(n,x,s);
if nargin == 3
s = opt;
else
s = 0;
end
y = -besselj(n+1,x,s) + n*besselj(n,x,s)./x;
% get rid of nans, integer order
if n==1
y(x==0) = 1/2;
else
y(x==0) = 0;
end
  2 comentarios
Javeria
Javeria el 3 de Jul. de 2025
Can we make use of only one line which calculate the derivative of bessel functions just we only switch cases i.e mode m= 0, 1.
David Goodmanson
David Goodmanson el 3 de Jul. de 2025
I'm not sure exactly what you mean but if scaling is not needed then the single line
y = -besselj(n+1,x) + n*besselj(n,x)./x;
works unless x = 0. If x = 0 then you still need the four last lines in the code above.

Iniciar sesión para comentar.

Categorías

Más información sobre Bessel functions en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by