形式幂级数#
形式幂级数的计算和操作方法。
- class sympy.series.formal.FormalPowerSeries(*args)[源代码]#
表示函数的形式幂级数。
解释
不执行计算。此类只能用于表示序列。不执行任何检查。
用于计算系列用途
fps()
.- coeff_bell(n)[源代码]#
赛尔夫·贝尔(n) 返回第二类贝尔多项式的序列。请注意
n
应该是整数。第二类贝尔多项式(有时称为“部分”贝尔多项式或不完全贝尔多项式)定义为
\[B{n,k}(x_1,x_2,\dotsc x{n-k+1})=\]bell(n, k, (x1, x2, ...))
给出第二类贝尔多项式, \(B_{{n,k}}(x_1, x_2, \dotsc, x_{{n-k+1}})\) .
- compose(other, x=None, n=6)[源代码]#
Returns the truncated terms of the formal power series of the composed function, up to specified
n
.- 参数:
n :数字,可选
指定多项式的截断顺序。
解释
If
f
andg
are two formal power series of two different functions, then the coefficient sequenceak
of the composed formal power series \(fp\) will be as follows.\[\{ux,u}u{u,u}极限\]实例
>>> from sympy import fps, sin, exp >>> from sympy.abc import x >>> f1 = fps(exp(x)) >>> f2 = fps(sin(x))
>>> f1.compose(f2, x).truncate() 1 + x + x**2/2 - x**4/8 - x**5/15 + O(x**6)
>>> f1.compose(f2, x).truncate(8) 1 + x + x**2/2 - x**4/8 - x**5/15 - x**6/240 + x**7/90 + O(x**8)
工具书类
[R824]康泰特,路易斯:先进的组合学;有限和无限展开的艺术。里德尔,1974年。
- property infinite#
返回序列的无限表示形式
- integrate(x=None, **kwargs)[源代码]#
整合形式幂级数。
实例
>>> from sympy import fps, sin, integrate >>> from sympy.abc import x >>> f = fps(sin(x)) >>> f.integrate(x).truncate() -1 + x**2/2 - x**4/24 + O(x**6) >>> integrate(f, (x, 0, 1)) 1 - cos(1)
- inverse(x=None, n=6)[源代码]#
Returns the truncated terms of the inverse of the formal power series, up to specified
n
.- 参数:
n :数字,可选
指定多项式的截断顺序。
解释
If
f
andg
are two formal power series of two different functions, then the coefficient sequenceak
of the composed formal power seriesfp
will be as follows.\[\求和\极限{k=0}^{n}(-1)^{k}x}0^{-k-1}B{n,k}(x_1,x_2,\dotsc,x{n-k+1})\]实例
>>> from sympy import fps, exp, cos >>> from sympy.abc import x >>> f1 = fps(exp(x)) >>> f2 = fps(cos(x))
>>> f1.inverse(x).truncate() 1 - x + x**2/2 - x**3/6 + x**4/24 - x**5/120 + O(x**6)
>>> f2.inverse(x).truncate(8) 1 + x**2/2 + 5*x**4/24 + 61*x**6/720 + O(x**8)
工具书类
[R825]康泰特,路易斯:先进的组合学;有限和无限展开的艺术。里德尔,1974年。
- sympy.series.formal.fps(f, x=None, x0=0, dir=1, hyper=True, order=4, rational=True, full=False)[源代码]#
Generates Formal Power Series of
f
.- 参数:
x :符号,可选
如果x为无且
f
为单变量时,将提供单变量符号,否则将引发错误。x0 :数字,可选
指向执行有关的系列扩展。默认值为0。
dir : {1, -1, '+', '-'}, optional
如果dir为1或'+',则从右侧计算序列;对于-1或'-',则从左侧计算序列。对于平滑函数,此标志不会改变结果。默认值为1。
hyper : {True, False}, optional
将hyper设置为False可跳过超几何算法。默认设置为False。
秩序 :int,可选
导数的阶
f
,默认值为4。rational : {True, False}, optional
将rational设置为False可跳过rational算法。默认设置为True。
full : {True, False}, optional
将full设置为True以增加有理算法的范围。看到了吗
rational_algorithm()
了解详情。默认设置为False。
解释
返回的形式级数展开
f
围绕x = x0
关于x
以A的形式FormalPowerSeries
对象。形式幂级数是用一个显式公式表示的,该公式使用不同的算法计算。
见
compute_fps()
关于公式计算的更多细节。实例
>>> from sympy import fps, ln, atan, sin >>> from sympy.abc import x, n
有理函数
>>> fps(ln(1 + x)).truncate() x - x**2/2 + x**3/3 - x**4/4 + x**5/5 + O(x**6)
>>> fps(atan(x), full=True).truncate() x - x**3/3 + x**5/5 + O(x**6)
符号函数
>>> fps(x**n*sin(x**2), x).truncate(8) -x**(n + 6)/6 + x**(n + 2) + O(x**(n + 8))
- sympy.series.formal.compute_fps(f, x, x0=0, dir=1, hyper=True, order=4, rational=True, full=False)[源代码]#
计算函数的形式幂级数的公式。
- 参数:
x :符号
x0 :数字,可选
指向执行有关的系列扩展。默认值为0。
dir : {1, -1, '+', '-'}, optional
如果dir为1或'+',则从右侧计算序列;对于-1或'-',则从左侧计算序列。对于平滑函数,此标志不会改变结果。默认值为1。
hyper : {True, False}, optional
将hyper设置为False可跳过超几何算法。默认设置为False。
秩序 :int,可选
导数的阶
f
,默认值为4。rational : {True, False}, optional
将rational设置为False可跳过rational算法。默认设置为True。
full : {True, False}, optional
将full设置为True以增加有理算法的范围。看到了吗
rational_algorithm()
了解详情。默认设置为False。- 返回:
ak :顺序
序列系数。
xk :顺序
x的幂级数。
ind :表达式
独立条款。
mul :功率
通用术语。
解释
尝试应用以下技术(按顺序)计算公式:
rational_algorithm
超几何算法
- class sympy.series.formal.FormalPowerSeriesCompose(*args)[源代码]#
表示两个函数的组合形式幂级数。
解释
不执行计算。术语是使用逐项逻辑计算的,而不是逐点逻辑。
在
FormalPowerSeries
对象与AFormalPowerSeriesCompose
对象。第一个参数包含了构成所涉及的外部函数和内部函数。此外,系数序列包含要乘以自定义值的泛型序列bell_seq
有限序列。然后将有限项相加得到最终项。- property function#
Function for the composed formal power series.
- class sympy.series.formal.FormalPowerSeriesInverse(*args)[源代码]#
表示形式幂级数的逆。
解释
不执行计算。术语是使用逐项逻辑计算的,而不是逐点逻辑。
只有一个区别
FormalPowerSeries
对象与AFormalPowerSeriesInverse
对象。系数序列包含要乘以自定义值的泛型序列bell_seq
有限序列。然后将有限项相加得到最终项。- property function#
Function for the inverse of a formal power series.
- class sympy.series.formal.FormalPowerSeriesProduct(*args)[源代码]#
表示两个函数的两个形式幂级数的乘积。
解释
不执行计算。术语是使用逐项逻辑计算的,而不是逐点逻辑。
在
FormalPowerSeries
对象与AFormalPowerSeriesProduct
对象。第一个参数包含产品中涉及的两个函数。系数序列同时包含了所涉及函数形式幂级数的系数序列。- property function#
Function of the product of two formal power series.
有理算法#
- sympy.series.formal.rational_independent(terms, x)[源代码]#
返回所有合理独立项的列表。
实例
>>> from sympy import sin, cos >>> from sympy.series.formal import rational_independent >>> from sympy.abc import x
>>> rational_independent([cos(x), sin(x)], x) [cos(x), sin(x)] >>> rational_independent([x**2, sin(x), x*sin(x), x**3], x) [x**3 + x**2, x*sin(x) + sin(x)]
- sympy.series.formal.rational_algorithm(f, x, k, order=4, full=False)[源代码]#
计算函数形式幂级数系数公式的有理算法。
- 参数:
x :符号
秩序 :int,可选
导数的阶
f
,默认值为4。full : bool
- 返回:
公式 :表达式
ind :表达式
独立条款。
秩序 :内景
full : bool
解释
当f(x)或f(x)的某个导数是x中的有理函数时适用。
rational_algorithm()
使用apart()
部分分数分解函数。apart()
默认情况下使用“待定系数法”。通过设置full=True
,可以使用“Bronstein算法”。查找函数的四阶导数(默认情况下)。这可以使用order选项覆盖。
实例
>>> from sympy import log, atan >>> from sympy.series.formal import rational_algorithm as ra >>> from sympy.abc import x, k
>>> ra(1 / (1 - x), x, k) (1, 0, 0) >>> ra(log(1 + x), x, k) (-1/((-1)**k*k), 0, 1)
>>> ra(atan(x), x, k, full=True) ((-I/(2*(-I)**k) + I/(2*I**k))/k, 0, 1)
笔记
通过设置
full=True
,可容许函数的范围rational_algorithm
可以增加。应谨慎使用此选项,因为它会显著降低计算速度doit
在上执行RootSum
返回的对象apart()
功能。使用full=False
只要可能。工具书类
超几何算法#
- sympy.series.formal.simpleDE(f, x, g, order=4)[源代码]#
生成简单的DE。
解释
DE的形式
\[f^k(x)+\sum\极限值{j=0}^{k-1}A_jf^j(x)=0\]在哪里? \(A_j\) 应该是x中的有理函数。
生成不超过4阶的DE(默认)。DE也可以有自由参数。
通过增加阶数,可以找到高阶的DE。
生成(DE,order)的元组。
- sympy.series.formal.exp_re(DE, r, k)[源代码]#
将常系数的DE(explike)转换为RE。
解释
执行替换:
\[f^j(x)\到r(k+j)\]将项规范化,使项的最低阶始终为r(k)。
实例
>>> from sympy import Function, Derivative >>> from sympy.series.formal import exp_re >>> from sympy.abc import x, k >>> f, r = Function('f'), Function('r')
>>> exp_re(-f(x) + Derivative(f(x)), r, k) -r(k) + r(k + 1) >>> exp_re(Derivative(f(x), x) + Derivative(f(x), (x, 2)), r, k) r(k) + r(k + 1)
- sympy.series.formal.hyper_re(DE, r, k)[源代码]#
将DE转换为RE。
解释
执行替换:
\[x^l f^j(x)\到(k+1-l)j。一个{k+j-l}\]将项规范化,使项的最低阶始终为r(k)。
实例
>>> from sympy import Function, Derivative >>> from sympy.series.formal import hyper_re >>> from sympy.abc import x, k >>> f, r = Function('f'), Function('r')
>>> hyper_re(-f(x) + Derivative(f(x)), r, k) (k + 1)*r(k + 1) - r(k) >>> hyper_re(-x*f(x) + Derivative(f(x), (x, 2)), r, k) (k + 2)*(k + 3)*r(k + 3) - r(k)
- sympy.series.formal.rsolve_hypergeometric(f, x, P, Q, k, m)[源代码]#
求解超几何类型的RE。
- 返回:
公式 :表达式
ind :表达式
独立条款。
秩序 :内景
解释
试图解决的形式
Q(k) a(k + m) - P(k) a(k)
保持超几何类型的变换:
其中一些变换被用来求解RE。
实例
>>> from sympy import exp, ln, S >>> from sympy.series.formal import rsolve_hypergeometric as rh >>> from sympy.abc import x, k
>>> rh(exp(x), x, -S.One, (k + 1), k, 1) (Piecewise((1/factorial(k), Eq(Mod(k, 1), 0)), (0, True)), 1, 1)
>>> rh(ln(1 + x), x, k**2, k*(k + 1), k, 1) (Piecewise(((-1)**(k - 1)*factorial(k - 1)/RisingFactorial(2, k - 1), Eq(Mod(k, 1), 0)), (0, True)), x, 2)
工具书类
- sympy.series.formal.solve_de(f, x, DE, order, g, k)[源代码]#
求解DE。
- 返回:
公式 :表达式
ind :表达式
独立条款。
秩序 :内景
解释
试图通过转换为包含两个项的RE或转换为具有常数系数的DE来求解DE。
实例
>>> from sympy import Derivative as D, Function >>> from sympy import exp, ln >>> from sympy.series.formal import solve_de >>> from sympy.abc import x, k >>> f = Function('f')
>>> solve_de(exp(x), x, D(f(x), x) - f(x), 1, f, k) (Piecewise((1/factorial(k), Eq(Mod(k, 1), 0)), (0, True)), 1, 1)
>>> solve_de(ln(1 + x), x, (x + 1)*D(f(x), x, 2) + D(f(x)), 2, f, k) (Piecewise(((-1)**(k - 1)*factorial(k - 1)/RisingFactorial(2, k - 1), Eq(Mod(k, 1), 0)), (0, True)), x, 2)
- sympy.series.formal.hyper_algorithm(f, x, k, order=4)[源代码]#
计算形式幂级数的超几何算法。
解释
- 步骤:
生成DE
将DE转换为RE
解决RE
实例
>>> from sympy import exp, ln >>> from sympy.series.formal import hyper_algorithm
>>> from sympy.abc import x, k
>>> hyper_algorithm(exp(x), x, k) (Piecewise((1/factorial(k), Eq(Mod(k, 1), 0)), (0, True)), 1, 1)
>>> hyper_algorithm(ln(1 + x), x, k) (Piecewise(((-1)**(k - 1)*factorial(k - 1)/RisingFactorial(2, k - 1), Eq(Mod(k, 1), 0)), (0, True)), x, 2)