超几何展开

本页描述了函数 hyperexpand() 及其相关代码的工作原理。关于使用方法,请参阅 symplify 模块的文档。

超几何函数展开算法

本节描述用于展开超几何函数的算法。大部分内容基于论文 [Roach1996][Roach1997]

回想一下,超几何函数最初定义为

\[\begin{split}{}_pF_q\left(\begin{matrix} a_1, \cdots, a_p \\ b_1, \cdots, b_q \end{matrix} \middle| z \right) = \sum_{n=0}^\infty \frac{(a_1)_n \cdots (a_p)_n}{(b_1)_n \cdots (b_q)_n} \frac{z^n}{n!}.\end{split}\]

事实证明,某些微分算子可以通过整数改变 \(a_p\)\(p_q\) 参数。如果已知一系列这样的算子将索引集 \(a_r^0\)\(b_s^0\) 转换为 \(a_p\)\(b_q\),那么我们可以说这对 \(a_p, b_q\) 可以从 \(a_r^0, b_s^0\) 到达。因此,我们的总体策略如下:给定一组参数 \(a_p, b_q\),尝试查找一个已知表达式的起源 \(a_r^0, b_s^0\),然后对已知表达式应用一系列微分算子,以找到我们感兴趣的超几何函数的表达式。

符号

在下文中,符号 \(a\) 将始终表示分子参数,符号 \(b\) 将始终表示分母参数。下标 \(p, q, r, s\) 表示该长度的向量,例如 \(a_p\) 表示长度为 \(p\) 的分子参数向量。下标 \(i\)\(j\) 表示“运行索引”,因此它们通常应与“对于所有 \(i\)”结合使用。例如 \(a_i < 4\) 对于所有 \(i\)。大写下标 \(I\)\(J\) 表示选定的固定索引。因此,例如 \(a_I > 0\) 为真,如果该不等式对我们当前感兴趣的一个索引 \(I\) 成立。

增加和减少索引

假设 \(a_i \ne 0\)。设 \(A(a_i) = \frac{z}{a_i}\frac{\mathrm{d}}{dz}+1\)。那么容易证明 \(A(a_i) {}_p F_q\left({a_p \atop b_q} \middle| z \right) = {}_p F_q\left({a_p + e_i \atop b_q} \middle| z \right)\),其中 \(e_i\) 是第 i 个单位向量。类似地,对于 \(b_j \ne 1\),我们设 \(B(b_j) = \frac{z}{b_j-1} \frac{\mathrm{d}}{dz}+1\),并得到 \(B(b_j) {}_p F_q\left({a_p \atop b_q} \middle| z \right) = {}_p F_q\left({a_p \atop b_q - e_i} \middle| z \right)\)。因此,我们可以随意增加上标和减少下标,只要我们不经过零。\(A(a_i)\)\(B(b_j)\) 被称为移位算子。

同样容易证明 \(\frac{\mathrm{d}}{dz} {}_p F_q\left({a_p \atop b_q} \middle| z \right) = \frac{a_1 \cdots a_p}{b_1 \cdots b_q} {}_p F_q\left({a_p + 1 \atop b_q + 1} \middle| z \right)\),其中 \(a_p + 1\) 是向量 \(a_1 + 1, a_2 + 1, \ldots\)\(b_q + 1\) 类似。结合移位算子,我们得到超几何微分方程的一种形式:\(\left[ \frac{\mathrm{d}}{dz} \prod_{j=1}^q B(b_j) - \frac{a_1 \cdots a_p}{(b_1-1) \cdots (b_q-1)} \prod_{i=1}^p A(a_i) \right] {}_p F_q\left({a_p \atop b_q} \middle| z \right) = 0\)。这成立的前提是所有移位算子都已定义,即没有 \(a_i = 0\) 且没有 \(b_j = 1\)。消去分母并乘以 z,我们得到以下方程:\(\left[ z\frac{\mathrm{d}}{dz} \prod_{j=1}^q \left(z\frac{\mathrm{d}}{dz} + b_j-1 \right) - z \prod_{i=1}^p \left( z\frac{\mathrm{d}}{\mathrm{d}z} + a_i \right) \right] {}_p F_q\left({a_p \atop b_q} \middle| z\right) = 0\)。尽管我们的推导没有显示这一点,但可以检查此方程在 \({}_p F_q\) 定义时总是成立。

注意到,在 \(a_I, b_J\) 的适当条件下,每个算子 \(A(a_i)\)\(B(b_j)\)\(z\frac{\mathrm{d}}{\mathrm{d}z}\) 都可以用 \(A(a_I)\)\(B(b_J)\) 表示。我们的下一个目标是将超几何微分方程写成如下形式:\([X A(a_I) - r] {}_p F_q\left({a_p \atop b_q} \middle| z\right) = 0\),其中 \(X\) 是某个算子,\(r\) 是待确定的某个常数。如果 \(r \ne 0\),那么我们可以将其写成 \(\frac{-1}{r} X {}_p F_q\left({a_p + e_I \atop b_q} \middle| z\right) = {}_p F_q\left({a_p \atop b_q} \middle| z\right)\),因此 \(\frac{-1}{r}X\) 撤销了 \(A(a_I)\) 的移位,因此它将被称为逆移位算子。

现在,如果 \(a_I \ne 0\),则 \(A(a_I)\) 存在,并且 \(z\frac{\mathrm{d}}{\mathrm{d}z} = a_I A(a_I) - a_I\)。还注意到所有算子 \(A(a_i)\)\(B(b_j)\)\(z\frac{\mathrm{d}}{\mathrm{d}z}\) 都相互交换。我们有 \(\prod_{i=1}^p \left( z\frac{\mathrm{d}}{\mathrm{d}z} + a_i \right) = \left(\prod_{i=1, i \ne I}^p \left( z\frac{\mathrm{d}}{\mathrm{d}z} + a_i \right)\right) a_I A(a_I)\),因此这给出了 \(X\) 的前半部分。另一半没有这样好的表达式。我们得到 \(z\frac{\mathrm{d}}{dz} \prod_{j=1}^q \left(z\frac{\mathrm{d}}{dz} + b_j-1 \right) = \left(a_I A(a_I) - a_I\right) \prod_{j=1}^q \left(a_I A(a_I) - a_I + b_j - 1\right)\)。由于前半部分没有常数项,我们推断 \(r = -a_I\prod_{j=1}^q(b_j - 1 -a_I)\)

这告诉我们可以在什么条件下对 \(A(a_I)\) 进行“反移位”,即当 \(a_I e 0\)\(r e 0\) 时。将 \(a_I - 1\) 代入 \(a_I\) 后,告诉我们可以在什么条件下减少索引 \(a_I\)。对 \(B(a_J)\) 进行类似的分析,我们得出以下规则:

  • 如果 \(a_I e 1\) 且对于所有 \(b_j\) 都有 \(a_I e b_j\),则索引 \(a_I\) 可以递减。

  • 如果 \(b_J e -1\) 且对于所有 \(a_i\) 都有 \(b_J e a_i\),则可以递增索引 \(b_J\)

结合上述移位运算符存在的条件,我们已经确立了游戏规则!

阶数的减少

注意到,非常显然地,如果 \(a_I = b_J\),我们有 \({}_p F_q\left({a_p \atop b_q} \middle| z \right) = {}_{p-1} F_{q-1}\left({a_p^* \atop b_q^*} \middle| z \right)\),其中 \(a_p^*\) 表示 \(a_p\) 中省略了 \(a_I\),同样地,\(b_q^*\) 也是如此。我们称之为阶数的约简。

事实上,我们可以做得更好。如果 \(a_I - b_J \in \mathbb{Z}_{>0}\),那么很容易看出 \(\frac{(a_I)_n}{(b_J)_n}\) 实际上是 \(n\) 的多项式。同样容易看出 \((z\frac{\mathrm{d}}{\mathrm{d}z})^k z^n = n^k z^n\)。结合这两点,我们得到:

如果 \(a_I - b_J \in \mathbb{Z}_{>0}\),则存在一个多项式 \(p(n) = p_0 + p_1 n + \cdots`(次数为 `a_I - b_J\))使得 \(\frac{(a_I)_n}{(b_J)_n} = p(n)\)\({}_p F_q\left({a_p \atop b_q} \middle| z \right) = \left(p_0 + p_1 z\frac{\mathrm{d}}{\mathrm{d}z} + p_2 \left(z\frac{\mathrm{d}}{\mathrm{d}z}\right)^2 + \cdots \right) {}_{p-1} F_{q-1}\left({a_p^* \atop b_q^*} \middle| z \right)\)

因此,任何参数集 \(a_p, b_q\) 都可以从参数集 \(c_r, d_s\) 到达,其中 \(c_i - d_j \in \mathbb{Z}\) 意味着 \(c_i < d_j\)。这样的参数集 \(c_r, d_s\) 被称为合适的。我们的已知公式数据库应仅包含合适的起源。原因有二:首先,从合适的起源开始更容易;其次,非合适起源的公式可以从较低阶的公式推导出来,我们应该将这个公式放入数据库中。

在参数空间中移动

还需要研究以下问题:假设 \(a_p, b_q\)\(a_p^0, b_q^0\) 都合适,并且 \(a_i - a_i^0 \in \mathbb{Z}\)\(b_j - b_j^0 \in \mathbb{Z}\)。何时可以从 \(a_p^0, b_q^0\) 到达 \(a_p, b_q\)?显然,我们可以独立处理所有模 1 不一致的参数。因此,假设对于所有 \(i\)\(j\)\(a_i\)\(b_j\) 都与 \(r\) 模 1 同余。那么对于 \(a_i^0\)\(b_j^0\) 也是如此。

如果 \(r e 0\),那么任何这样的 \(a_p, b_q\) 都可以从任何 \(a_p^0, b_q^0\) 到达。要看到这一点,请注意存在常数 \(c, c^0\),它们模1同余,使得对于所有 \(i\)\(j\)\(a_i < c < b_j\),并且类似地 \(a_i^0 < c^0 < b_j^0\)。如果 \(n = c - c^0 > 0\),那么我们首先将所有的 \(b_j^0\) 向上反向移动 \(n\) 次,然后类似地将所有的 \(a_i^0\) 向上移动 \(n\) 次。如果 \(n < 0\),那么我们首先将 \(a_i^0\) 向下反向移动,然后将 \(b_j^0\) 向下移动。这简化为 \(c = c^0\) 的情况。但显然,只要我们保持 \(a_i^0\) 小于 \(c\),我们就可以随意移动或反向移动 \(a_i^0\),对于 \(b_j^0\) 也是如此,只要我们保持它们大于 \(c\)。因此 \(a_p, b_q\) 可以从 \(a_p^0, b_q^0\) 到达。

如果 \(r = 0\),那么问题稍微复杂一些。不失一般性,假设没有参数为零。现在我们有一个额外的复杂性:没有任何参数能够通过零。因此,\(a_p, b_q\) 可以从 \(a_p^0, b_q^0\) 到达,当且仅当 \(a_i < 0\) 的数量等于 \(a_i^0 < 0\) 的数量,并且 \(b_i\)\(b_i^0\) 也是如此。但在合适的参数集合中,所有 \(b_j > 0\)!这是因为如果其中一个 \(b_j\) 是非正整数且所有 \(a_i\) 都小于 \(b_j\),则超几何函数是未定义的。因此,\(b_j \le 0\) 的数量总是零。

因此,我们可以将以下不变量与每个合适的参数集 \(a_p, b_q\) 相关联,其中没有 \(a_i = 0\)

  • 对于每个 \(r \in [0, 1)\),参数 \(a_i \equiv r \pmod{1}\) 的数量为 \(\alpha_r\),同样地,参数 \(b_i \equiv r \pmod{1}\) 的数量为 \(\beta_r\)

  • 整数 \(a_i\)\(a_i < 0\) 的数量 \(\gamma\)

上述推理表明,\(a_p, b_q\) 可以从 \(a_p^0, b_q^0\) 到达,当且仅当不变量 \(\alpha_r, \beta_r, \gamma\) 全部一致。因此,特别是对于没有零的适当参数,“从…可达”是一个对称关系。

应用运算符

如果一切顺利,那么对于一组给定的参数,我们会在数据库中找到一个原点,我们有一个很好的公式。现在我们必须对其应用(可能)许多微分算子。如果我们盲目地这样做,结果将会非常混乱。这是因为对于超几何类型的函数,导数通常表示为两个相邻函数的和。因此,如果我们计算 \(N\) 个导数,那么答案将涉及 \(2N\) 个相邻函数!这显然是不可取的。事实上,根据超几何微分方程,我们最多需要 \(\max(p, q+1)\) 个相邻函数来表示所有导数。

因此,与其盲目求导,我们将使用一个 \(\mathbb{C}(z)\)-模基:对于一个原点 \(a_r^0, b_s^0\),我们或者存储(对于特别漂亮的答案)或者计算一组 \(N\) 个函数(通常 \(N = \max(r, s+1)\)),这些函数具有以下性质:它们的导数是它们自身的 \(\mathbb{C}(z)\)-线性组合。用公式表示,我们存储一个包含 \(N\) 个函数的向量 \(B\),一个矩阵 \(M\) 和一个向量 \(C`(后两者在 `\mathbb{C}(z)\) 中有条目),具有以下性质:

  • \({}_r F_s\left({a_r^0 \atop b_s^0} \middle| z \right) = C B\)

  • \(z\frac{\mathrm{d}}{\mathrm{d}z} B = M B\).

然后我们可以计算任意多的导数,并且我们最终总会得到最多 \(N\) 个特殊函数的 \(\mathbb{C}(z)\)-线性组合。

如上所述,\(B\)\(M\)\(C\) 可以全部存储(对于特别漂亮的答案),或者从单个 \({}_p F_q\) 公式计算得出。

松散的结尾

这描述了超几何函数算法的大部分内容。还有一些进一步的技巧,在 hyperexpand.py 源文件中描述。对 Meijer G-函数的扩展也在那里描述。

有限合流的Meijer G-函数

Slater定理本质上将一个 \(G\) 函数评估为留数之和。如果所有极点都是简单的,则得到级数可以被识别为超几何级数。因此,一个 \(G\) 函数可以被评估为超几何函数之和。

如果极点不是简单的,那么得到级数不是超几何的。这被称为“汇合”或“对数”情况(后者是因为得到的级数往往包含对数)。答案以一种复杂的方式依赖于各种极点的重数,并且据我所知,没有公认的符号来表示它。然而,如果只有有限多个多重极点,我们可以将 \(G\) 函数评估为超几何函数的和,加上有限多个额外项。我找不到任何好的参考资料来解释这一点,这就是为什么我在这里推导它。

回顾一般设置。我们定义

\[G(z) = \frac{1}{2\pi i} \int_L \frac{\prod_{j=1}^m \Gamma(b_j - s) \prod_{j=1}^n \Gamma(1 - a_j + s)}{\prod_{j=m+1}^q \Gamma(1 - b_j + s) \prod_{j=n+1}^p \Gamma(a_j - s)} z^s \mathrm{d}s,\]

其中 \(L\) 是一个从 \(+\infty\) 开始并结束的闭合曲线,沿负方向环绕 \(\Gamma(b_j - s)\) 的所有极点 \(j = 1, \ldots, n\) 一次,且不包含其他极点。同时,假定积分绝对收敛。

在下文中,对于任意复数 \(a, b\),我们记 \(a \equiv b \pmod{1}\) 当且仅当存在整数 \(k\) 使得 \(a - b = k\)。因此,存在双重极点当且仅当对于某些 \(i \ne j \le n\),有 \(a_i \equiv a_j \pmod{1}\)

我们现在假设,每当 \(b_j \equiv a_i \pmod{1}\) 对于 \(i \le m\)\(j > n\) 时,\(b_j < a_i\)。这意味着相关伽马函数的商不是多项式,并且可以通过“降阶”来实现。固定一个复数 \(c\),使得 \(\{b_i | b_i \equiv c \pmod{1}, i \le m\}\) 不为空。将此集合枚举为 \(b, b+k_1, \ldots, b+k_u\),其中 \(k_i\) 是非负整数。类似地,将 \(\{a_j | a_j \equiv c \pmod{1}, j > n\}\) 枚举为 \(b + l_1, \ldots, b + l_v\)。那么对于所有 \(i, j\)\(l_i > k_j\)。为了有限汇流,我们需要假设对于所有这样的 \(c\)\(v \ge u\)

\(c_1, \ldots, c_w\) 是互异的 \(\pmod{1}\),并穷尽 \(b_i\) 的同余类。我断言

\[G(z) = -\sum_{j=1}^w (F_j(z) + R_j(z)),\]

其中 \(F_j(z)\) 是一个超几何函数,\(R_j(z)\) 是一个有限和,两者将在后面指定。确实,对应于每一个 \(c_j\) 都有一个极点序列,其中大多数是有限多个极点,且可能是多重极点。这就是第 \(j\) 项的来源。

因此,再次固定 \(c\),将相关的 \(b_i\) 列举为 \(b, b + k_1, \ldots, b + k_u\)。我们将关注与 \(a + l_1, \ldots, a + l_u\) 对应的 \(a_j\)。其他的 \(a_i\) 不作特殊处理。相应的伽马函数在 \(s = b + r`(其中 `r = 0, 1, \ldots\))处可能有极点。对于 \(r \ge l_u\),被积函数的极点是简单的。因此我们设定

\[R(z) = \sum_{r=0}^{l_u - 1} res_{s = r + b}.\]

我们最终需要研究其他极点。设 \(r = l_u + t\)\(t \ge 0\)。计算表明

\[ \begin{align}\begin{aligned}\frac{\Gamma(k_i - l_u - t)}{\Gamma(l_i - l_u - t)} = \frac{1}{(k_i - l_u - t)_{l_i - k_i}} = \frac{(-1)^{\delta_i}}{(l_u - l_i + 1)_{\delta_i}} \frac{(l_u - l_i + 1)_t}{(l_u - k_i + 1)_t},\\\frac{\Gamma(k_i - l_u - t)}{\Gamma(l_i - l_u - t)} = \frac{1}{(k_i - l_u - t)_{l_i - k_i}} = \frac{(-1)^{\delta_i}}{(l_u - l_i + 1)_{\delta_i}} \frac{(l_u - l_i + 1)_t}{(l_u - k_i + 1)_t},\end{aligned}\end{align} \]

其中 \(\delta_i = l_i - k_i\)

另外

\[ \begin{align}\begin{aligned}\begin{split}\Gamma(b_j - l_u - b - t) = \frac{\Gamma(b_j - l_u - b)}{(-1)^t(l_u + b + 1 - b_j)_t}, \\\end{split}\\\Gamma(1 - a_j + l_u + b + t) = \Gamma(1 - a_j + l_u + b) (1 - a_j + l_u + b)_t\end{aligned}\end{align} \]

\[ \begin{align}\begin{aligned}res_{s = b + l_u + t} \Gamma(b - s) = -\frac{(-1)^{l_u + t}}{(l_u + t)!} = -\frac{(-1)^{l_u}}{l_u!} \frac{(-1)^t}{(l_u+1)_t}.\\res_{s = b + l_u + t} \Gamma(b - s) = -\frac{(-1)^{l_u + t}}{(l_u + t)!} = -\frac{(-1)^{l_u}}{l_u!} \frac{(-1)^t}{(l_u+1)_t}.\end{aligned}\end{align} \]

因此

\[\begin{split}res_{s = b + l_u + t} =& -z^{b + l_u} \\ \frac{(-1)^{l_u}}{l_u!} \\ \prod_{i=1}^{u} \frac{(-1)^{\delta_i}}{(l_u - k_i + 1)_{\delta_i}} \\ \frac{\prod_{j=1}^n \Gamma(1 - a_j + l_u + b) \\ \prod_{j=1}^m \Gamma(b_j - l_u - b)^*} \\ {\prod_{j=n+1}^p \Gamma(a_j - l_u - b)^* \prod_{j=m+1}^q \\ \Gamma(1 - b_j + l_u + b)} \\ \\ &\times \\ z^t \\ \frac{(-1)^t}{(l_u+1)_t} \\ \prod_{i=1}^{u} \frac{(l_u - l_i + 1)_t}{(l_u - k_i + 1)_t} \\ \frac{\prod_{j=1}^n (1 - a_j + l_u + b)_t \\ \prod_{j=n+1}^p (-1)^t (l_u + b + 1 - a_j)_t^*} \\ {\prod_{j=1}^m (-1)^t (l_u + b + 1 - b_j)_t^* \\ \prod_{j=m+1}^q (1 - b_j + l_u + b)_t},\end{split}\]

其中 \(*\) 表示省略我们特别处理的术语。

我们因此得出

\[\begin{split}F(z) = C \times {}_{p+1}F_{q}\left( \begin{matrix} 1, (1 + l_u - l_i), (1 + l_u + b - a_i)^* \\ 1 + l_u, (1 + l_u - k_i), (1 + l_u + b - b_i)^* \end{matrix} \middle| (-1)^{p-m-n} z\right),\end{split}\]

其中 \(C\) 表示残差中与 \(t\) 无关的因子。(这个结果也可以通过将所有的 \(l_u\) 等转换回 \(a_* - b_*\) 来写成稍微简单的形式,但这样做需要更多的符号,并且对计算没有帮助。)

扩展超几何表

向表格中添加新的公式非常简单。在文件 sympy/simplify/hyperexpand.py 的顶部,有一个名为 add_formulae() 的函数。在其中嵌套定义了两个辅助函数 add(ap, bq, res)addb(ap, bq, B, C, M),以及虚拟变量 abcz

添加新公式的第一步是使用 add(ap, bq, res)。这声明了 hyper(ap, bq, z) == res。这里 apbq 可以使用 abc 作为自由符号。例如,众所周知的公式 \(\sum_0^\infty \frac{(-a)_n z^n}{n!} = (1-z)^a\) 可以通过以下行声明:add((-a, ), (), (1-z)**a)

根据提供的信息,矩阵 \(B\)\(C\)\(M\) 将被计算,并且在展开超几何函数时公式现在可用。接下来应运行测试文件 sympy/simplify/tests/test_hyperexpand.py,特别是测试 test_formulae()。这将数值测试新添加的公式。如果测试失败,则(大概)输入的内容中有打字错误。

由于所有新添加的公式可能都比较复杂,自动计算的基础可能相当次优(除了观察非常混乱的输出外,没有好的方法来测试这一点)。在这种情况下,矩阵 \(B\)\(C\)\(M\) 应该手动计算。然后可以使用辅助函数 addb 来声明一个带有手动计算基础的超几何公式。

一个例子

因为到目前为止的解释可能非常理论化且难以理解,我们现在通过一个具体的例子来详细说明。我们采用菲涅尔函数 \(C(z)\),它遵循以下超几何表示:

\[\begin{split}C(z) = z \cdot {}_{1}F_{2}\left.\left( \begin{matrix} \frac{1}{4} \\ \frac{1}{2}, \frac{5}{4} \end{matrix} \right| -\frac{\pi^2 z^4}{16}\right) \,.\end{split}\]

首先,我们尝试使用(更简单的)函数 add(ap, bq, res) 将这个公式添加到查找表中。前两个参数只是包含 \({}_{1}F_{2}\) 参数集的列表。res 参数稍微复杂一些。我们只知道 \(C(z)\) 是以 \({}_{1}F_{2}(\ldots | f(z))\) 的形式表示的,其中 \(f\)\(z\) 的函数,在我们的例子中

\[f(z) = -\frac{\pi^2 z^4}{16} \,.\]

我们需要的是一个公式,其中超几何函数仅以 \(z\) 为参数 \({}_{1}F_{2}(\ldots | z)\)。我们引入新的复数符号 \(w\),并寻找一个函数 \(g(w)\) 使得

\[f(g(w)) = w\]

然后我们可以用 \(g(w)\) 替换 \(C(z)\) 中的每一个 \(z\)。在我们的例子中,函数 \(g\) 可能看起来像

\[g(w) = \frac{2}{\sqrt{\pi}} \exp\left(\frac{i \pi}{4}\right) w^{\frac{1}{4}} \,.\]

我们主要通过猜测和测试结果来获得这些函数。因此,我们通过计算 \(f(g(w))\) (并天真地简化)来进行。

\[\begin{split}f(g(w)) &= -\frac{\pi^2 g(w)^4}{16} \\ &= -\frac{\pi^2 g\left(\frac{2}{\sqrt{\pi}} \exp\left(\frac{i \pi}{4}\right) w^{\frac{1}{4}}\right)^4}{16} \\ &= -\frac{\pi^2 \frac{2^4}{\sqrt{\pi}^4} \exp\left(\frac{i \pi}{4}\right)^4 {w^{\frac{1}{4}}}^4}{16} \\ &= -\exp\left(i \pi\right) w \\ &= w\end{split}\]

并且确实得到了 \(w\)。(在分支函数的情况下,我们必须注意分支切割。在这种情况下,我们将 \(w\) 视为一个正实数并检查公式。如果我们发现的结果对正 \(w\) 有效,那么只需将任何分支函数内的 exp 替换为 exp_polar,我们得到的结果对 \(所有\) \(w\) 都是正确的。)因此,我们可以将公式写为

\[\begin{split}C(g(w)) = g(w) \cdot {}_{1}F_{2}\left.\left( \begin{matrix} \frac{1}{4} \\ \frac{1}{2}, \frac{5}{4} \end{matrix} \right| w\right) \,.\end{split}\]

并且微不足道

\[\begin{split}{}_{1}F_{2}\left.\left( \begin{matrix} \frac{1}{4} \\ \frac{1}{2}, \frac{5}{4} \end{matrix} \right| w\right) = \frac{C(g(w))}{g(w)} = \frac{C\left(\frac{2}{\sqrt{\pi}} \exp\left(\frac{i \pi}{4}\right) w^{\frac{1}{4}}\right)} {\frac{2}{\sqrt{\pi}} \exp\left(\frac{i \pi}{4}\right) w^{\frac{1}{4}}}\end{split}\]

这正是 add 函数中第三个参数 res 所需要的。最后,将此规则添加到表中的整个函数调用看起来像:

add([S(1)/4],
    [S(1)/2, S(5)/4],
    fresnelc(exp(pi*I/4)*root(z,4)*2/sqrt(pi)) / (exp(pi*I/4)*root(z,4)*2/sqrt(pi))
   )

使用这条规则,我们会发现它有效,但在简单性和包含的特殊函数实例数量方面结果并不理想。通过另一种方式将公式添加到查找表中,我们可以获得更好的结果。为此,我们使用(更复杂的)函数 addb(ap, bq, B, C, M)。前两个参数再次是包含 \({}_{1}F_{2}\) 参数集的列表。剩下的三个是本页前面提到的矩阵。

我们知道,\(n = \max{\left(p, q+1\right)}`阶导数可以表示为低阶导数的线性组合。矩阵`B`包含基\){B_0, B_1, ldots}`,形状为`n times 1`。获取`B_i`的最佳方法是取`{}_p F_q`表达式的前`n = max(p, q+1)`阶导数,并提取有用的部分。在我们的例子中,我们发现`n = max{left(1, 2+1right)} = 3`。为了计算导数,我们必须使用算子`zfrac{mathrm{d}}{mathrm{d}z}`。第一个基元素`B_0`被设置为上述`{}_1 F_2`的表达式:

\[B_0 = \frac{ \sqrt{\pi} \exp\left(-\frac{\imath\pi}{4}\right) C\left( \frac{2}{\sqrt{\pi}} \exp\left(\frac{\imath\pi}{4}\right) z^{\frac{1}{4}}\right)} {2 z^{\frac{1}{4}}}\]

接下来我们计算 \(z\frac{\mathrm{d}}{\mathrm{d}z} B_0\)。为此,我们可以直接使用 SymPy!

>>> from sympy import Symbol, sqrt, exp, I, pi, fresnelc, root, diff, expand
>>> z = Symbol("z")
>>> B0 = sqrt(pi)*exp(-I*pi/4)*fresnelc(2*root(z,4)*exp(I*pi/4)/sqrt(pi))/\
...          (2*root(z,4))
>>> z * diff(B0, z)
z*(cosh(2*sqrt(z))/(4*z) - sqrt(pi)*exp(-I*pi/4)*fresnelc(2*z**(1/4)*exp(I*pi/4)/sqrt(pi))/(8*z**(5/4)))
>>> expand(_)
cosh(2*sqrt(z))/4 - sqrt(pi)*exp(-I*pi/4)*fresnelc(2*z**(1/4)*exp(I*pi/4)/sqrt(pi))/(8*z**(1/4))

格式化这个结果,我们得到

\[B_1^\prime = - \frac{1}{4} \frac{ \sqrt{\pi} \exp\left(-\frac{\imath\pi}{4}\right) C\left( \frac{2}{\sqrt{\pi}} \exp\left(\frac{\imath\pi}{4}\right) z^{\frac{1}{4}}\right) } {2 z^{\frac{1}{4}}} + \frac{1}{4} \cosh{\left( 2 \sqrt{z} \right )}\]

计算二阶导数,我们发现

>>> from sympy import (Symbol, cosh, sqrt, pi, exp, I, fresnelc, root,
...                    diff, expand)
>>> z = Symbol("z")
>>> B1prime = cosh(2*sqrt(z))/4 - sqrt(pi)*exp(-I*pi/4)*\
...           fresnelc(2*root(z,4)*exp(I*pi/4)/sqrt(pi))/(8*root(z,4))
>>> z * diff(B1prime, z)
z*(-cosh(2*sqrt(z))/(16*z) + sinh(2*sqrt(z))/(4*sqrt(z)) + sqrt(pi)*exp(-I*pi/4)*fresnelc(2*z**(1/4)*exp(I*pi/4)/sqrt(pi))/(32*z**(5/4)))
>>> expand(_)
sqrt(z)*sinh(2*sqrt(z))/4 - cosh(2*sqrt(z))/16 + sqrt(pi)*exp(-I*pi/4)*fresnelc(2*z**(1/4)*exp(I*pi/4)/sqrt(pi))/(32*z**(1/4))

可以打印为

\[B_2^\prime = \frac{1}{16} \frac{ \sqrt{\pi} \exp\left(-\frac{\imath\pi}{4}\right) C\left( \frac{2}{\sqrt{\pi}} \exp\left(\frac{\imath\pi}{4}\right) z^{\frac{1}{4}}\right) } {2 z^{\frac{1}{4}}} - \frac{1}{16} \cosh{\left(2\sqrt{z}\right)} + \frac{1}{4} \sinh{\left(2\sqrt{z}\right)} \sqrt{z}\]

我们看到常见的模式并可以收集这些部分。因此,选择 \(B_1\)\(B_2\) 如下是有意义的

\[\begin{split}B = \left( \begin{matrix} B_0 \\ B_1 \\ B_2 \end{matrix} \right) = \left( \begin{matrix} \frac{ \sqrt{\pi} \exp\left(-\frac{\imath\pi}{4}\right) C\left( \frac{2}{\sqrt{\pi}} \exp\left(\frac{\imath\pi}{4}\right) z^{\frac{1}{4}}\right) }{2 z^{\frac{1}{4}}} \\ \cosh\left(2\sqrt{z}\right) \\ \sinh\left(2\sqrt{z}\right) \sqrt{z} \end{matrix} \right)\end{split}\]

(这与基 \(B = \left(B_0, B_1^\prime, B_2^\prime\right)\) 形成对比,后者是如果我们仅使用 add(ap, bq, res) 时会自动计算的。)

因为必须满足 \({}_p F_q\left(\cdots \middle| z \right) = C B\),显然 \(C\) 的元素是

\[\begin{split}C = \left( \begin{matrix} 1 \\ 0 \\ 0 \end{matrix} \right)\end{split}\]

最后,我们需要计算矩阵 \(M\) 的元素,使得 \(z\frac{\mathrm{d}}{\mathrm{d}z} B = M B\) 成立。这很简单。我们已经在上面计算了第一部分 \(z\frac{\mathrm{d}}{\mathrm{d}z} B_0\)。这给出了 \(M\) 的第一行。对于第二行,我们有:

>>> from sympy import Symbol, cosh, sqrt, diff
>>> z = Symbol("z")
>>> B1 = cosh(2*sqrt(z))
>>> z * diff(B1, z)
sqrt(z)*sinh(2*sqrt(z))

而对于第三个

>>> from sympy import Symbol, sinh, sqrt, expand, diff
>>> z = Symbol("z")
>>> B2 = sinh(2*sqrt(z))*sqrt(z)
>>> expand(z * diff(B2, z))
sqrt(z)*sinh(2*sqrt(z))/2 + z*cosh(2*sqrt(z))

现在我们已经计算出这个矩阵的条目为

\[\begin{split}M = \left( \begin{matrix} -\frac{1}{4} & \frac{1}{4} & 0 \\ 0 & 0 & 1 \\ 0 & z & \frac{1}{2} \\ \end{matrix} \right)\end{split}\]

注意,\(C\)\(M\) 的条目通常应该是 \(z\) 中的有理函数,具有有理系数。这就是我们为了向 hyperexpand 的查找表添加新公式所需做的全部工作。

实现的Hypergeometric公式

算法的一个重要部分是超几何函数表示的一个相对较大的表格。以下自动生成的列表包含了SymPy中实现的所有表示(当然,还有更多是从它们派生出来的)。这些公式大多来自[Luke1969]_和[Prudnikov1990]_。它们都经过了数值测试。

\[\begin{split}{{}_{0}F_{0}\left(\begin{matrix} \\ \end{matrix}\middle| {z} \right)} = e^{z}\end{split}\]
\[\begin{split}{{}_{1}F_{0}\left(\begin{matrix} a \\ \end{matrix}\middle| {z} \right)} = \left(1 - z\right)^{- a}\end{split}\]
\[\begin{split}{{}_{2}F_{1}\left(\begin{matrix} a, a - \frac{1}{2} \\ 2 a \end{matrix}\middle| {z} \right)} = 2^{2 a - 1} \left(\sqrt{1 - z} + 1\right)^{1 - 2 a}\end{split}\]
\[\begin{split}{{}_{2}F_{1}\left(\begin{matrix} 1, 1 \\ 2 \end{matrix}\middle| {z} \right)} = - \frac{\log{\left(1 - z \right)}}{z}\end{split}\]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{1}\left(\begin{matrix} \frac{1}{2}, 1 \\ \frac{3}{2} \end{matrix}\middle| {z} \right)} = \frac{\operatorname{atanh}{\left(\sqrt{z} \right)}}{\sqrt{z}}\end{split}\\\begin{split}{{}_{2}F_{1}\left(\begin{matrix} \frac{1}{2}, 1 \\ \frac{3}{2} \end{matrix}\middle| {z} \right)} = \frac{\operatorname{atanh}{\left(\sqrt{z} \right)}}{\sqrt{z}}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{1}\left(\begin{matrix} \frac{1}{2}, \frac{1}{2} \\ \frac{3}{2} \end{matrix}\middle| {z} \right)} = \frac{\operatorname{asin}{\left(\sqrt{z} \right)}}{\sqrt{z}}\end{split}\\\begin{split}{{}_{2}F_{1}\left(\begin{matrix} \frac{1}{2}, \frac{1}{2} \\ \frac{3}{2} \end{matrix}\middle| {z} \right)} = \frac{\operatorname{asin}{\left(\sqrt{z} \right)}}{\sqrt{z}}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{1}\left(\begin{matrix} a, a + \frac{1}{2} \\ \frac{1}{2} \end{matrix}\middle| {z} \right)} = \frac{\left(\sqrt{z} + 1\right)^{- 2 a}}{2} + \frac{\left(1 - \sqrt{z}\right)^{- 2 a}}{2}\end{split}\\\begin{split}{{}_{2}F_{1}\left(\begin{matrix} a, a + \frac{1}{2} \\ \frac{1}{2} \end{matrix}\middle| {z} \right)} = \frac{\left(\sqrt{z} + 1\right)^{- 2 a}}{2} + \frac{\left(1 - \sqrt{z}\right)^{- 2 a}}{2}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{1}\left(\begin{matrix} a, - a \\ \frac{1}{2} \end{matrix}\middle| {z} \right)} = \cos{\left(2 a \operatorname{asin}{\left(\sqrt{z} \right)} \right)}\end{split}\\\begin{split}{{}_{2}F_{1}\left(\begin{matrix} a, - a \\ \frac{1}{2} \end{matrix}\middle| {z} \right)} = \cos{\left(2 a \operatorname{asin}{\left(\sqrt{z} \right)} \right)}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{1}\left(\begin{matrix} 1, 1 \\ \frac{3}{2} \end{matrix}\middle| {z} \right)} = \frac{\operatorname{asin}{\left(\sqrt{z} \right)}}{\sqrt{z} \sqrt{1 - z}}\end{split}\\\begin{split}{{}_{2}F_{1}\left(\begin{matrix} 1, 1 \\ \frac{3}{2} \end{matrix}\middle| {z} \right)} = \frac{\operatorname{asin}{\left(\sqrt{z} \right)}}{\sqrt{z} \sqrt{1 - z}}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{1}\left(\begin{matrix} \frac{1}{2}, \frac{1}{2} \\ 1 \end{matrix}\middle| {z} \right)} = \frac{2 K\left(z\right)}{\pi}\end{split}\\\begin{split}{{}_{2}F_{1}\left(\begin{matrix} \frac{1}{2}, \frac{1}{2} \\ 1 \end{matrix}\middle| {z} \right)} = \frac{2 K\left(z\right)}{\pi}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{1}\left(\begin{matrix} - \frac{1}{2}, \frac{1}{2} \\ 1 \end{matrix}\middle| {z} \right)} = \frac{2 E\left(z\right)}{\pi}\end{split}\\\begin{split}{{}_{2}F_{1}\left(\begin{matrix} - \frac{1}{2}, \frac{1}{2} \\ 1 \end{matrix}\middle| {z} \right)} = \frac{2 E\left(z\right)}{\pi}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{3}F_{2}\left(\begin{matrix} - \frac{1}{2}, 1, 1 \\ \frac{1}{2}, 2 \end{matrix}\middle| {z} \right)} = - \frac{2 \sqrt{z} \operatorname{atanh}{\left(\sqrt{z} \right)}}{3} + \frac{2}{3} - \frac{\log{\left(1 - z \right)}}{3 z}\end{split}\\\begin{split}{{}_{3}F_{2}\left(\begin{matrix} - \frac{1}{2}, 1, 1 \\ \frac{1}{2}, 2 \end{matrix}\middle| {z} \right)} = - \frac{2 \sqrt{z} \operatorname{atanh}{\left(\sqrt{z} \right)}}{3} + \frac{2}{3} - \frac{\log{\left(1 - z \right)}}{3 z}\end{split}\end{aligned}\end{align} \]
\[\begin{split}{{}_{3}F_{2}\left(\begin{matrix} - \frac{1}{2}, 1, 1 \\ 2, 2 \end{matrix}\middle| {z} \right)} = \left(\frac{4}{9} - \frac{16}{9 z}\right) \sqrt{1 - z} + \frac{4 \log{\left(\frac{\sqrt{1 - z}}{2} + \frac{1}{2} \right)}}{3 z} + \frac{16}{9 z}\end{split}\]
\[\begin{split}{{}_{1}F_{1}\left(\begin{matrix} 1 \\ b \end{matrix}\middle| {z} \right)} = z^{1 - b} \left(b - 1\right) e^{z} \gamma\left(b - 1, z\right)\end{split}\]
\[\begin{split}{{}_{1}F_{1}\left(\begin{matrix} a \\ 2 a \end{matrix}\middle| {z} \right)} = 4^{a - \frac{1}{2}} z^{\frac{1}{2} - a} e^{\frac{z}{2}} I_{a - \frac{1}{2}}\left(\frac{z}{2}\right) \Gamma\left(a + \frac{1}{2}\right)\end{split}\]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{1}F_{1}\left(\begin{matrix} a \\ a + 1 \end{matrix}\middle| {z} \right)} = a \left(z e^{i \pi}\right)^{- a} \gamma\left(a, z e^{i \pi}\right)\end{split}\\\begin{split}{{}_{1}F_{1}\left(\begin{matrix} a \\ a + 1 \end{matrix}\middle| {z} \right)} = a \left(z e^{i \pi}\right)^{- a} \gamma\left(a, z e^{i \pi}\right)\end{split}\end{aligned}\end{align} \]
\[\begin{split}{{}_{1}F_{1}\left(\begin{matrix} - \frac{1}{2} \\ \frac{1}{2} \end{matrix}\middle| {z} \right)} = \sqrt{z} i \sqrt{\pi} \operatorname{erf}{\left(\sqrt{z} i \right)} + e^{z}\end{split}\]
\[\begin{split}{{}_{1}F_{2}\left(\begin{matrix} 1 \\ \frac{3}{4}, \frac{5}{4} \end{matrix}\middle| {z} \right)} = \frac{\sqrt{\pi} \left(i \sinh{\left(2 \sqrt{z} \right)} S\left(\frac{2 \sqrt[4]{z} e^{\frac{i \pi}{4}}}{\sqrt{\pi}}\right) + \cosh{\left(2 \sqrt{z} \right)} C\left(\frac{2 \sqrt[4]{z} e^{\frac{i \pi}{4}}}{\sqrt{\pi}}\right)\right) e^{- \frac{i \pi}{4}}}{2 \sqrt[4]{z}}\end{split}\]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{2}\left(\begin{matrix} \frac{1}{2}, a \\ \frac{3}{2}, a + 1 \end{matrix}\middle| {z} \right)} = - \frac{a i \sqrt{\pi} \sqrt{\frac{1}{z}} \operatorname{erf}{\left(\sqrt{z} i \right)}}{2 a - 1} - \frac{a \left(z e^{i \pi}\right)^{- a} \gamma\left(a, z e^{i \pi}\right)}{2 a - 1}\end{split}\\\begin{split}{{}_{2}F_{2}\left(\begin{matrix} \frac{1}{2}, a \\ \frac{3}{2}, a + 1 \end{matrix}\middle| {z} \right)} = - \frac{a i \sqrt{\pi} \sqrt{\frac{1}{z}} \operatorname{erf}{\left(\sqrt{z} i \right)}}{2 a - 1} - \frac{a \left(z e^{i \pi}\right)^{- a} \gamma\left(a, z e^{i \pi}\right)}{2 a - 1}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{2}\left(\begin{matrix} 1, 1 \\ 2, 2 \end{matrix}\middle| {z} \right)} = \frac{- \log{\left(z \right)} + \operatorname{Ei}{\left(z \right)}}{z} - \frac{\gamma}{z}\end{split}\\\begin{split}{{}_{2}F_{2}\left(\begin{matrix} 1, 1 \\ 2, 2 \end{matrix}\middle| {z} \right)} = \frac{- \log{\left(z \right)} + \operatorname{Ei}{\left(z \right)}}{z} - \frac{\gamma}{z}\end{split}\end{aligned}\end{align} \]
\[\begin{split}{{}_{0}F_{1}\left(\begin{matrix} \\ \frac{1}{2} \end{matrix}\middle| {z} \right)} = \cosh{\left(2 \sqrt{z} \right)}\end{split}\]
\[\begin{split}{{}_{0}F_{1}\left(\begin{matrix} \\ b \end{matrix}\middle| {z} \right)} = z^{\frac{1}{2} - \frac{b}{2}} I_{b - 1}\left(2 \sqrt{z}\right) \Gamma\left(b\right)\end{split}\]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{0}F_{3}\left(\begin{matrix} \\ \frac{1}{2}, a, a + \frac{1}{2} \end{matrix}\middle| {z} \right)} = 2^{- 2 a} z^{\frac{1}{4} - \frac{a}{2}} \left(I_{2 a - 1}\left(4 \sqrt[4]{z}\right) + J_{2 a - 1}\left(4 \sqrt[4]{z}\right)\right) \Gamma\left(2 a\right)\end{split}\\\begin{split}{{}_{0}F_{3}\left(\begin{matrix} \\ \frac{1}{2}, a, a + \frac{1}{2} \end{matrix}\middle| {z} \right)} = 2^{- 2 a} z^{\frac{1}{4} - \frac{a}{2}} \left(I_{2 a - 1}\left(4 \sqrt[4]{z}\right) + J_{2 a - 1}\left(4 \sqrt[4]{z}\right)\right) \Gamma\left(2 a\right)\end{split}\end{aligned}\end{align} \]
\[\begin{split}{{}_{0}F_{3}\left(\begin{matrix} \\ a, 2 a, a + \frac{1}{2} \end{matrix}\middle| {z} \right)} = \left(2 \sqrt{z} e^{\frac{i \pi}{2}}\right)^{1 - 2 a} I_{2 a - 1}\left(2 \sqrt{2} \sqrt[4]{z} e^{\frac{i \pi}{4}}\right) J_{2 a - 1}\left(2 \sqrt{2} \sqrt[4]{z} e^{\frac{i \pi}{4}}\right) \Gamma^{2}\left(2 a\right)\end{split}\]
\[\begin{split}{{}_{1}F_{2}\left(\begin{matrix} a \\ 2 a, a - \frac{1}{2} \end{matrix}\middle| {z} \right)} = 2 \cdot 4^{a - 1} z^{1 - a} I_{a - \frac{3}{2}}\left(\sqrt{z}\right) I_{a - \frac{1}{2}}\left(\sqrt{z}\right) \Gamma\left(a - \frac{1}{2}\right) \Gamma\left(a + \frac{1}{2}\right) - 4^{a - \frac{1}{2}} z^{\frac{1}{2} - a} I^{2}_{a - \frac{1}{2}}\left(\sqrt{z}\right) \Gamma^{2}\left(a + \frac{1}{2}\right)\end{split}\]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{1}F_{2}\left(\begin{matrix} \frac{1}{2} \\ b, 2 - b \end{matrix}\middle| {z} \right)} = \frac{\pi \left(1 - b\right) I_{1 - b}\left(\sqrt{z}\right) I_{b - 1}\left(\sqrt{z}\right)}{\sin{\left(b \pi \right)}}\end{split}\\\begin{split}{{}_{1}F_{2}\left(\begin{matrix} \frac{1}{2} \\ b, 2 - b \end{matrix}\middle| {z} \right)} = \frac{\pi \left(1 - b\right) I_{1 - b}\left(\sqrt{z}\right) I_{b - 1}\left(\sqrt{z}\right)}{\sin{\left(b \pi \right)}}\end{split}\end{aligned}\end{align} \]
\[\begin{split}{{}_{1}F_{2}\left(\begin{matrix} \frac{1}{2} \\ \frac{3}{2}, \frac{3}{2} \end{matrix}\middle| {z} \right)} = \frac{\operatorname{Shi}{\left(2 \sqrt{z} \right)}}{2 \sqrt{z}}\end{split}\]
\[\begin{split}{{}_{1}F_{2}\left(\begin{matrix} \frac{3}{4} \\ \frac{3}{2}, \frac{7}{4} \end{matrix}\middle| {z} \right)} = \frac{3 \sqrt{\pi} e^{- \frac{3 i \pi}{4}} S\left(\frac{2 \sqrt[4]{z} e^{\frac{i \pi}{4}}}{\sqrt{\pi}}\right)}{4 z^{\frac{3}{4}}}\end{split}\]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{1}F_{2}\left(\begin{matrix} \frac{1}{4} \\ \frac{1}{2}, \frac{5}{4} \end{matrix}\middle| {z} \right)} = \frac{\sqrt{\pi} e^{- \frac{i \pi}{4}} C\left(\frac{2 \sqrt[4]{z} e^{\frac{i \pi}{4}}}{\sqrt{\pi}}\right)}{2 \sqrt[4]{z}}\end{split}\\\begin{split}{{}_{1}F_{2}\left(\begin{matrix} \frac{1}{4} \\ \frac{1}{2}, \frac{5}{4} \end{matrix}\middle| {z} \right)} = \frac{\sqrt{\pi} e^{- \frac{i \pi}{4}} C\left(\frac{2 \sqrt[4]{z} e^{\frac{i \pi}{4}}}{\sqrt{\pi}}\right)}{2 \sqrt[4]{z}}\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{3}\left(\begin{matrix} a, a + \frac{1}{2} \\ b, 2 a, 2 a - b + 1 \end{matrix}\middle| {z} \right)} = \left(\frac{\sqrt{z}}{2}\right)^{1 - 2 a} I_{2 a - b}\left(\sqrt{z}\right) I_{b - 1}\left(\sqrt{z}\right) \Gamma\left(b\right) \Gamma\left(2 a - b + 1\right)\end{split}\\\begin{split}{{}_{2}F_{3}\left(\begin{matrix} a, a + \frac{1}{2} \\ b, 2 a, 2 a - b + 1 \end{matrix}\middle| {z} \right)} = \left(\frac{\sqrt{z}}{2}\right)^{1 - 2 a} I_{2 a - b}\left(\sqrt{z}\right) I_{b - 1}\left(\sqrt{z}\right) \Gamma\left(b\right) \Gamma\left(2 a - b + 1\right)\end{split}\end{aligned}\end{align} \]
\[ \begin{align}\begin{aligned}\begin{split}{{}_{2}F_{3}\left(\begin{matrix} 1, 1 \\ \frac{3}{2}, 2, 2 \end{matrix}\middle| {z} \right)} = \frac{- \log{\left(2 \sqrt{z} \right)} + \operatorname{Chi}\left(2 \sqrt{z}\right)}{z} - \frac{\gamma}{z}\end{split}\\\begin{split}{{}_{2}F_{3}\left(\begin{matrix} 1, 1 \\ \frac{3}{2}, 2, 2 \end{matrix}\middle| {z} \right)} = \frac{- \log{\left(2 \sqrt{z} \right)} + \operatorname{Chi}\left(2 \sqrt{z}\right)}{z} - \frac{\gamma}{z}\end{split}\end{aligned}\end{align} \]
\[\begin{split}{{}_{3}F_{3}\left(\begin{matrix} 1, 1, a \\ 2, 2, a + 1 \end{matrix}\middle| {z} \right)} = \frac{a \left(- z\right)^{- a} \left(\Gamma\left(a\right) - \Gamma\left(a, - z\right)\right)}{\left(a - 1\right)^{2}} + \frac{a \left(1 - a\right) \left(\log{\left(- z \right)} + \operatorname{E}_{1}\left(- z\right) + \gamma\right)}{z \left(a^{2} - 2 a + 1\right)} - \frac{a e^{z}}{z \left(a^{2} - 2 a + 1\right)} + \frac{a}{z \left(a^{2} - 2 a + 1\right)}\end{split}\]

参考文献

[Roach1996]

Kelly B. Roach. 超几何函数表示。见:1996年国际符号与代数计算研讨会论文集,第301-308页,纽约,1996年。ACM。

[Roach1997]

Kelly B. Roach. Meijer G 函数表示。在:1997年国际符号与代数计算研讨会论文集,第205-211页,纽约,1997年。ACM。

[Luke1969]

Luke, Y. L. (1969), 特殊函数及其近似,第一卷。

[Prudnikov1990]

A. P. Prudnikov, Yu. A. Brychkov and O. I. Marichev (1990). Integrals and Series: More Special Functions, Vol. 3, Gordon and Breach Science Publisher.