1

我正在尝试绘制一个函数的根,该函数由在 Matlab 中添加和相乘的多个贝塞尔函数组成。方程为 Jm(omega)*Ik(omega)+Im(omega)*Jk(omega) 其中 Jm 是第一类 m 阶贝塞尔函数 (besselj)。Im 是第一类 m 阶 (besseli) 的修正贝塞尔函数。对于每个模式 m=o,1,2,...和 ​​n=1,2,3... 频率 omega(mn) 是所列方程的相应根。m=0,1,2 n-1,2,3,4。我需要求解 12 个根的方程。我是 Matlab 的新手,这有点不符合我的要求。到目前为止,我有这段代码,但我不确定我是否需要脚本中的变量 omega。我也看过其他人关于这个主题的问题,但没有看到任何类似的问题。我看到的情节与我的完全不同,这告诉我我可能错了。

m=(0:2); k=(1:3); n=(1:4);
Jm=besselj(m,n');
Ik=besseli(k,n');
Jk=besselj(k,n');
Im=besseli(m,n');
g=Jm.*Ik+Im.*Jk
plot(g)
4

1 回答 1

0

绘图

besselj并将besseli您所称omega的作为他们的第二个参数,因此要绘制您的函数,您应该尝试类似

m=0; k=1; omega=0:0.02:10;
Jm=besselj(m,omega);
Ik=besseli(k,omega);
Jk=besselj(k,omega);
Im=besseli(m,omega);
g=Jm.*Ik+Im.*Jk;
plot(omega,g);
hold all;
plot(omega,0,'k');
axis([min(omega) max(omega) -100 100]);

这表明m=1, k=1第一个零点在 3.2、6.3 和 9.4 左右:

matlab截图

用数字求根

您可以为您的 function实现Halley 方法g,类似于在Cheery 链接的 MatlabCentral 文件besselj中确定根的方式。

于 2012-02-18T14:01:37.097 回答