热线用户 发表于 2007-5-29 20:44

请问关于Bessel简单函数的零点

请问用matlab怎么求 Bessel 函数的零点?
比如在0到100范围内mathematica: Plot, {x, 0, 100}]
并且怎么以表的形势列出所有的零点呢?

多谢指教$握手$

recbio 发表于 2007-5-29 23:38

用单句语句,自己是没有想出来。用一段语句,还是可以实现的,关键的是函数是
fzero(inline('besselj(0,x)'),)
这里,函数将返回a1 a2之中的离a1最近的零点。如果f(a1) 和f(a2)符号相同,即使a1 a2中间有零,函数也会出错,所以,用一个范围先粗粗的得到一些值,比如

y=besselj(0,1:0.1:100);

这样可以先得到0 到100之间,间隔为0.1的函数的值,然后判断相邻的符号为负的点

i=find(y(1:1000).*y(2:1001)<0);

然后,循环,得到每一个i对应的范围,求出精确值。

完整的步骤见下面;为了方便,用表示范围,b表示粗算精度:

a=0;c=100;b=0.1;
x=;
y=besselj(0,x);
i=find(y(1 : (c-a)/b).*y(2 : (c-a)/b+1)<0);
for j=1:size(i,2);
   r(j) = fzero(inline('besselj(0,x)'),);
end

执行结果:

>>r

r =

Columns 1 through 9

    2.4048    5.5201    8.6537   11.7915   14.9309   18.0711   21.2116   24.3525   27.4935

Columns 10 through 18

   30.6346   33.7758   36.9171   40.0584   43.1998   46.3412   49.4826   52.6241   55.7655

Columns 19 through 27

   58.9070   62.0485   65.1900   68.3315   71.4730   74.6145   77.7560   80.8976   84.0391

Columns 28 through 32

有更好的,欢迎再贴!
   87.1806   90.3222   93.4637   96.6053   99.7468

[ 本帖最后由 recbio 于 2007-5-30 00:40 编辑 ]

leiwang81 发表于 2007-5-30 10:33

$高$$高$

wn258 发表于 2007-6-4 09:14

ganz herzlichen Dank!!:)
页: [1]
查看完整版本: 请问关于Bessel简单函数的零点