算个东西,需要用到bessel函数的根。找到了一个maple的算法,然后改成matlab的。如下:
代码:
> ZerosBesselJ := proc (maxv, maxs)
> local j, incr, v, h, s;
>
> j := array(0..maxv, 1..maxs);
> incr := 4.0;
> for v from 0 to maxv do
> h := evalf(v + 1.9*v^(1/3) + 1);
> if v = 0 then
> j[v,1] := fsolve(BesselJ(v,x), x, 2.0 .. 3.0)
> else
> j[v,1] := fsolve(BesselJ(v,x), x, 2.0 .. h)
> fi;
> for s from 2 to maxs do
> j[v,s] := fsolve(BesselJ(v,x), x, j[v,s-1] .. j[v,s-1]+incr)
> od
> od;
> RETURN( eval(j) )
> end:
改成matlab之后的代码如下:
clear all;
maxv = 10;
maxs = 10;
<