在 MATLAB 中使用贝塞尔函数

Using bessel functions in MATLAB

我正在尝试将 Excel 工作簿中的所有函数放入 MATLAB。我在 MATLAB 中使用贝塞尔函数时遇到问题。我从 MATLAB 中得到的结果与我在 excel 中得到的结果完全不同。

例如,在excel中如果我执行

=0.32*BESSELI(0.32,0)/2/BESSELI(0.32,1)

我得到 1.012。

当我在 MATLAB 中使用相同的方法时

0.32*besseli(0.32,0)/2/besseli(0.32,1)

我只是零分。

有人可以帮我将贝塞尔函数集成到我的 MATLAB 脚本中,以便它们提供与在 excel 中使用时相同的答案吗?

documentation 显示了公式并表明如果您使用 Z=0,这是您在第一个 besseli 中使用的,您应该得到 0,而您确实这样做了。第二次调用 besseli 不应该让你归零,事实上它不会:

besseli(0.32,1)
ans =
    1.0744

我从上述文档中复制了以下内容:

这表明 除非 你的 nu(希腊语中看起来像 v 的东西)为零,否则你在 Z=0 处的第一类修正贝塞尔函数实际上是零。 旁注:你为什么要双重划分而不是简单地写

0.32*besseli(0.32,0)*besseli(0.32,1)/2

MATLAB 和 Excel 的 besseli 函数的参数顺序不同。

以下表达式(注意参数的顺序已更改):

0.32*besseli(0, 0.32)/2/besseli(1, 0.32)

将产生:

> ans =  1.0127

在 MATLAB 中。