为什么std :: assoc_laguerre的第二个参数是unsigned int?

Joh*_*oss 5 c++ c++-standard-library c++17

在C++ 17中,标准库中添加了许多特殊功能.一个函数是相关的拉盖尔多项式.第二个参数需要a unsigned int,但数学定义也适用于实数.是否有任何理由仅限于非负整数?是否仅仅是因为当n和k都是正整数时,二项式(n,k)更容易/更快/更简单?

thb*_*thb 4

据我所知,C++ 特殊函数之父 Walter E. Brown 从未明确回答过您的 Laguerre 问题。然而,当人们阅读布朗所写的内容时,一个可能的动机就会变得清晰:

\n
\n

许多提出的特殊函数具有对部分或全部复平面以及部分或全部实数的定义。此外,其中一些函数甚至可以产生复杂的结果,即使对于实值参数也是如此。目前的提案通过仅考虑实值参数和(相应的)实值结果来限制自身。

\n

我们对替代方案的调查使我们意识到,特殊职能部门的复杂景观象征性地布满了地雷。在提出我们的建议时,我们重视一位受人尊敬的同事的声明,即 \xe2\x80\x9cSeveral Ph.D. 论文将[或可能]通过在复杂域上实现这组功能的努力而产生。\xe2\x80\x9d这使我们采取这样的立场:该领域没有足够的现有技术来作为标准化的基础,因此,这种标准化还为时过早……

\n
\n

当然,你问的是实数而不是复数,所以我不能证明原因是相同的,但是 Abramowitz 和 Stegun(布朗的建议主要基于他们的手册)为整数的一些特殊函数提供了额外的支持命令。奇怪的是,在我的 Abramowitz 和 Stegun 的第 13 章中,我没有看到任何额外的支持,所以你说得有道理,不是吗?也许 Brown 只是出于谨慎,不希望一次性将太多内容推入 C++ 标准库,但在我看来,并没有任何明显的理由说明为什么在这种情况下不应该支持浮点参数。

\n

我并不是想对布朗进行事后猜测。

\n

正如您可能知道的,您可以使用 Abramowitz 和 Stegun 的第 13 章来获得您想要的效果,而不需要太多麻烦。也许布朗本人会这么说:你不用太麻烦就能得到你想要的效果。可以肯定的是,人们需要问布朗本人。

\n

作为信息,Brown 的提案(之前链接)明确将assoc_laguerreC++ 引用到 Abramowitz 和 Stegun,sect。13.6.9。

\n

总而言之,当 C++ 首次获得特殊函数支持时,需要谨慎对待。图书馆不想进步太远、太快。看来这个因素很可能是您所注意到的缺陷的主要原因。

\n