#2440·mathjs

mathjs 函数的广播运算符?

作者: gwhitney创建于 2022年2月22日更新于 2026年3月19日
标签questiondesign decision

对于应用于方阵的伽玛函数有一个标准的含义(参见 https://arxiv.org/abs/1806.10554),这并不是将伽玛函数逐个成分应用的情况,就像 mathjs 中 `gamma(M)` 的当前行为。 此外,逐个成分的应用已经有了另一个非常简短的表达式,即 `map(M, gamma)`。 为了避免潜在的混淆,是否应该取消 `gamma(M)` 作为逐个成分应用的当前矩阵解释,并要求使用 `map(M, gamma)`?这样,就不会有人在误以为他们正在获得常规的矩阵伽玛函数时,意外地调用 `gamma` 来处理方阵。 (如果有人选择实现常规的矩阵伽玛函数,那么可以将其重载到伽玛符号上,或者通过类比 `expm` 来称为 `gammam`。) 事实上,与 `exp` 的类比非常强烈。 一个 (方阵) 的常规数学含义是非逐个成分的指数,而是矩阵指数。 显然,mathjs 中曾经做出了一个特定的决定,将该操作称为 `expm`,我并不建议重新审视这个决定。 但我建议禁用 `exp(M)` 的逐个成分含义,并修改 `exp` 的文档,将其指向 `expm` 用于矩阵指数,以及 `map(M, exp)` 用于逐个成分指数。 同样,这里的动机是避免有人调用 `exp(M)` 以为他们正在获得 `expm(M)` 的潜在混淆。

内容来源: josdejong/mathjs