Search code examples
matlabequation-solvingbessel-functions

How to solve a zero order Bessel function equation in Matlab?


The equation is I0(a*x)=b, where a,b are constants, and I0(y) is zero order bessel function.

I0(x)=1/(2*pi)*integral(x*cos(t)) dt [from 0 ->2*pi]

I want to get the value of x when a and b are given. I just want the result, so it's not necessary to implement the solving procedure all by Matlab, and an approximate answer is fine, too.


Solution

  • You can use (http://nl.mathworks.com/help/matlab/ref/besselj.html, http://nl.mathworks.com/help/optim/ug/fsolve.html)

    x = fsolve(@(x)(besselj(0,a*x)-b),x0);
    

    or using a simpler solver as pointed in the comment below (http://nl.mathworks.com/help/optim/ug/fzero.html)

    x = fzero(@(x)(besselj(0,a*x)-b),x0);