scipy.special.elliprc#
- scipy.special.elliprc(x, y, out=None) = <ufunc 'elliprc'>#
退化的對稱橢圓積分。
函數 RC 定義為 [1]
\[R_{\mathrm{C}}(x, y) = \frac{1}{2} \int_0^{+\infty} (t + x)^{-1/2} (t + y)^{-1} dt = R_{\mathrm{F}}(x, y, y)\]- 參數:
- x, yarray_like
實數或複數輸入參數。x 可以是複數平面上沿負實軸切割的任何數字。y 必須是非零。
- outndarray, optional
函數值的選用輸出陣列
- 返回:
- R純量或 ndarray
積分的值。如果 y 是實數且為負數,則返回柯西主值。如果 x 和 y 都是實數,則返回值為實數。否則,返回值為複數。
筆記
RC 是對稱積分 RF 的退化情況:
elliprc(x, y) == elliprf(x, y, y)
。它是一個基本函數,而不是橢圓積分。該程式碼實作了 Carlson 基於複製定理和高達 7 階的級數展開的演算法。[2]
在版本 1.8.0 中新增。
參考文獻
[1]B. C. Carlson, ed., Chapter 19 in “Digital Library of Mathematical Functions,” NIST, US Dept. of Commerce. https://dlmf.nist.gov/19.16.E6
[2]B. C. Carlson, “Numerical computation of real or complex elliptic integrals,” Numer. Algorithm, vol. 10, no. 1, pp. 13-26, 1995. https://arxiv.org/abs/math/9409227 https://doi.org/10.1007/BF02198293
範例
基本齊次性性質
>>> import numpy as np >>> from scipy.special import elliprc
>>> x = 1.2 + 3.4j >>> y = 5. >>> scale = 0.3 + 0.4j >>> elliprc(scale*x, scale*y) (0.5484493976710874-0.4169557678995833j)
>>> elliprc(x, y)/np.sqrt(scale) (0.5484493976710874-0.41695576789958333j)
當兩個參數一致時,積分特別簡單
>>> x = 1.2 + 3.4j >>> elliprc(x, x) (0.4299173120614631-0.3041729818745595j)
>>> 1/np.sqrt(x) (0.4299173120614631-0.30417298187455954j)
另一個簡單的例子:第一個參數消失
>>> y = 1.2 + 3.4j >>> elliprc(0, y) (0.6753125346116815-0.47779380263880866j)
>>> np.pi/2/np.sqrt(y) (0.6753125346116815-0.4777938026388088j)
當 x 和 y 均為正數時,我們可以根據更基本的函數表示 \(R_C(x,y)\)。對於 \(0 \le x < y\) 的情況,
>>> x = 3.2 >>> y = 6. >>> elliprc(x, y) 0.44942991498453444
>>> np.arctan(np.sqrt((y-x)/x))/np.sqrt(y-x) 0.44942991498453433
對於 \(0 \le y < x\) 的情況,
>>> x = 6. >>> y = 3.2 >>> elliprc(x,y) 0.4989837501576147
>>> np.log((np.sqrt(x)+np.sqrt(x-y))/np.sqrt(y))/np.sqrt(x-y) 0.49898375015761476