核心

sympify

sympy.core.sympify.sympify(
a,
locals=None,
convert_xor=True,
strict=False,
rational=False,
evaluate=None,
)[源代码][源代码]

将任意表达式转换为可在 SymPy 内部使用的类型。

参数:
a
  • SymPy 中定义的任何对象

  • 标准数值型 Python 类型:intlongfloatDecimal

  • 字符串(如 "0.09""2e-19"'sin(x)'

  • 布尔值,包括 None (将保持 None 不变)

  • 包含上述任何内容的字典、列表、集合或元组

convert_xorbool, 可选

如果为真,将 ^ 视为指数运算。如果为假,将 ^ 视为异或运算。仅在输入为字符串时使用。

本地变量SymPy 中定义的任何对象,可选

为了使字符串被识别,可以将其导入到命名空间字典中,并作为局部变量传递。

严格bool, 可选

如果选项 strict 设置为 True,则仅转换已定义显式转换的类型。在其他情况下,会引发 SympifyError。

理性bool, 可选

如果 True,将浮点数转换为 Rational。如果 False,则让浮点数保持原样。仅在输入为字符串时使用。

评估bool, 可选

如果为 False,则算术和运算符将被转换为其 SymPy 等价物。如果为 True,则表达式将被求值并返回结果。

注释

关键词 rationalconvert_xor 仅在输入为字符串时使用。

示例

>>> from sympy import sympify
>>> sympify(2).is_integer
True
>>> sympify(2).is_real
True
>>> sympify(2.0).is_real
True
>>> sympify("2.0").is_real
True
>>> sympify("2e-45").is_real
True

如果表达式无法转换,则会引发 SympifyError。

>>> sympify("x***2")
Traceback (most recent call last):
...
SympifyError: SympifyError: "could not parse 'x***2'"

当尝试使用 sympify 解析非Python语法时,会引发 SympifyError

>>> sympify("2x+1")
Traceback (most recent call last):
...
SympifyError: Sympify of expression 'could not parse '2x+1'' failed

要解析非Python语法,请使用 sympy.parsing.sympy_parser 中的 parse_expr

>>> from sympy.parsing.sympy_parser import parse_expr
>>> parse_expr("2x+1", transformations="all")
2*x + 1

关于 transformations 的更多细节:请参见 parse_expr()

假设

此模块包含处理假设的机制。也请参考指南 假设

所有符号对象都有假设属性,可以通过 .is_<假设名称> 属性访问。

假设决定了符号对象的某些属性,并且可以有3种可能的值:TrueFalseNone。如果对象具有该属性,则返回``True``,如果不具有该属性或无法确定(即没有意义),则返回``False``:

>>> from sympy import I
>>> I.is_algebraic
True
>>> I.is_real
False
>>> I.is_prime
False

当属性无法确定(或方法未实现时),将返回 None。例如,一个通用符号 x 可能是正数也可能不是,因此对于 x.is_positive 将返回 None

默认情况下,所有符号值都在给定上下文中最大的集合中,而不指定属性。例如,一个具有整数属性的符号,同时也是实数、复数等。

以下是可能的假设名称列表:

交换性

对象在乘法运算中与任何其他对象交换。参见 [12]

复杂

对象只能具有复数集合中的值。参见 [13]

imaginary

对象值是一个可以写成实数乘以虚数单位 I 的数。参见 [3]。请注意,0 不被认为是虚数,参见 issue #7649

真实的

对象只能具有实数集合中的值。

扩展实数

对象只能具有实数集合中的值,oo-oo

整数

对象只能具有整数集合中的值。

奇数
甚至

对象只能具有奇数(偶数)整数集合中的值 [2]

质数

对象是一个大于1的自然数,除了1和它本身之外没有其他正因数。参见 [6]

复合

对象是一个正整数,它至少有一个除1或数字本身之外的正除数。参见 [4]

对象的值为 0。

nonzero

object 是一个非零的实数。

理性的

对象只能具有有理数集合中的值。

代数

对象只能具有代数数集合中的值 [11]

超验的

对象只能具有超越数集合中的值 [10]

不合理的

对象值不能由 Rational 精确表示,参见 [5]

有限
无限

对象的绝对值是有界的(任意大)。参见 [7][8][9]

negative
非负

对象只能有负值(非负值) [1]

积极的
非正数

对象只能有正数(非正数)值。

extended_negative
extended_nonnegative
extended_positive
extended_nonpositive
extended_nonzero

不仅没有扩展部分,还包括带有相应符号的无穷大,例如,extended_positive 包括 oo

hermitian
反厄米

对象属于厄米(反厄米)算子的领域。

示例

>>> from sympy import Symbol
>>> x = Symbol('x', real=True); x
x
>>> x.is_real
True
>>> x.is_complex
True

备注

任何 SymPy 表达式的完全解析假设可以通过以下方式获得:

>>> from sympy.core.assumptions import assumptions
>>> x = Symbol('x',positive=True)
>>> assumptions(x + I)
{'commutative': True, 'complex': True, 'composite': False, 'even':
False, 'extended_negative': False, 'extended_nonnegative': False,
'extended_nonpositive': False, 'extended_nonzero': False,
'extended_positive': False, 'extended_real': False, 'finite': True,
'imaginary': False, 'infinite': False, 'integer': False, 'irrational':
False, 'negative': False, 'noninteger': False, 'nonnegative': False,
'nonpositive': False, 'nonzero': False, 'odd': False, 'positive':
False, 'prime': False, 'rational': False, 'real': False, 'zero':
False}

开发者笔记

当前(可能不完整)的值存储在 obj._assumptions 字典 中;对 getter 方法(带有属性装饰器)或对象/类属性的查询将返回值并更新字典。

>>> eq = x**2 + I
>>> eq._assumptions
{}
>>> eq.is_finite
True
>>> eq._assumptions
{'finite': True, 'infinite': False}

对于一个 Symbol,有两个可能感兴趣的假设位置。assumptions0 属性给出了从一组给定的初始假设中得出的所有假设。后者的假设存储为 Symbol._assumptions_orig

>>> Symbol('x', prime=True, even=True)._assumptions_orig
{'even': True, 'prime': True}

_assumptions_orig 不一定具有规范性,也不会以任何方式进行过滤:它们记录了用于实例化 Symbol 的假设,并且(出于存储目的)表示了在 Symbol.assumptions0 中重新创建完整集合所需的假设的更紧凑表示。

引用

缓存

sympy.core.cache.__cacheit(maxsize)[源代码][源代码]

缓存装饰器。

重要:缓存函数的结果必须是 不可变的

示例

>>> from sympy import cacheit
>>> @cacheit
... def f(a, b):
...    return a+b
>>> @cacheit
... def f(a, b): # noqa: F811
...    return [a, b] # <-- WRONG, returns mutable object

要强制 cacheit 检查返回结果的可变性和一致性,请将环境变量 SYMPY_USE_CACHE 设置为 ‘debug’

基本

class sympy.core.basic.Basic(*args)[源代码][源代码]

所有 SymPy 对象的基类。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

is_hypergeometric

property args: tuple[Basic, ...]

返回 ‘self’ 的参数元组。

注释

永远不要使用 self._args,始终使用 self.args。仅在创建新函数时在 __new__ 中使用 _args。不要从 Basic 重写 .args()(以便在将来需要时易于更改接口)。

示例

>>> from sympy import cot
>>> from sympy.abc import x, y
>>> cot(x).args
(x,)
>>> cot(x).args[0]
x
>>> (x*y).args
(x, y)
>>> (x*y).args[1]
y
as_content_primitive(
radical=False,
clear=True,
)[源代码][源代码]

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()[源代码][源代码]

返回表达式,其中任何具有结构绑定符号的对象将被替换为在其出现的对象中唯一的规范符号,并且仅具有交换性的默认假设为True。当应用于符号时,将返回仅具有相同交换性的新符号。

注释

任何具有结构绑定变量的对象都应有一个属性 \(bound_symbols\),该属性返回对象中出现的那些符号。

示例

>>> from sympy import Integral, Symbol
>>> from sympy.abc import x
>>> r = Symbol('r', real=True)
>>> Integral(r, (r, x)).as_dummy()
Integral(_0, (_0, x))
>>> _.variables[0].is_real is None
True
>>> r.as_dummy()
_r
property assumptions0

返回对象 \(type\) 假设。

例如:

Symbol(‘x’, real=True) Symbol(‘x’, integer=True)

是不同的对象。换句话说,除了 Python 类型(在这种情况下是符号),初始假设也在形成它们的类型信息。

示例

>>> from sympy import Symbol
>>> from sympy.abc import x
>>> x.assumptions0
{'commutative': True}
>>> x = Symbol("x", positive=True)
>>> x.assumptions0
{'commutative': True, 'complex': True, 'extended_negative': False,
 'extended_nonnegative': True, 'extended_nonpositive': False,
 'extended_nonzero': True, 'extended_positive': True, 'extended_real':
 True, 'finite': True, 'hermitian': True, 'imaginary': False,
 'infinite': False, 'negative': False, 'nonnegative': True,
 'nonpositive': False, 'nonzero': True, 'positive': True, 'real':
 True, 'zero': False}
atoms(*types)[源代码][源代码]

返回构成当前对象的原子。

默认情况下,只会返回真正原子化且无法再分割的对象:符号、数字,以及像 I 和 pi 这样的数字符号。然而,如下面所示,可以请求任何类型的原子。

示例

>>> from sympy import I, pi, sin
>>> from sympy.abc import x, y
>>> (1 + x + 2*sin(y + I*pi)).atoms()
{1, 2, I, pi, x, y}

如果给定一个或多个类型,结果将仅包含这些类型的原子。

>>> from sympy import Number, NumberSymbol, Symbol
>>> (1 + x + 2*sin(y + I*pi)).atoms(Symbol)
{x, y}
>>> (1 + x + 2*sin(y + I*pi)).atoms(Number)
{1, 2}
>>> (1 + x + 2*sin(y + I*pi)).atoms(Number, NumberSymbol)
{1, 2, pi}
>>> (1 + x + 2*sin(y + I*pi)).atoms(Number, NumberSymbol, I)
{1, 2, I, pi}

注意,I(虚数单位)和 zoo(复数无穷大)是特殊类型的数字符号,不属于 NumberSymbol 类。

类型也可以隐式地给出:

>>> (1 + x + 2*sin(y + I*pi)).atoms(x) # x is a Symbol
{x, y}

在使用隐式选项时要小心检查你的假设,因为 S(1).is_Integer = Truetype(S(1))One,一种特殊的 SymPy 原子类型,而 type(S(2))Integer 类型,并且会在表达式中找到所有整数:

>>> from sympy import S
>>> (1 + x + 2*sin(y + I*pi)).atoms(S(1))
{1}
>>> (1 + x + 2*sin(y + I*pi)).atoms(S(2))
{1, 2}

最后,atoms() 的参数可以选择不仅仅是原子原子:任何 SymPy 类型(在 core/__init__.py 中加载)都可以作为参数列出,并且在递归扫描表达式的参数时会发现这些类型的“原子”:

>>> from sympy import Function, Mul
>>> from sympy.core.function import AppliedUndef
>>> f = Function('f')
>>> (1 + f(x) + 2*sin(y + I*pi)).atoms(Function)
{f(x), sin(y + I*pi)}
>>> (1 + f(x) + 2*sin(y + I*pi)).atoms(AppliedUndef)
{f(x)}
>>> (1 + x + 2*sin(y + I*pi)).atoms(Mul)
{I*pi, 2*sin(y + I*pi)}
property canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

示例

>>> from sympy import Lambda
>>> from sympy.abc import x
>>> Lambda(x, 2*x).canonical_variables
{x: _0}
classmethod class_key()[源代码][源代码]

类的好顺序。

compare(other)[源代码][源代码]

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。非基本类型总是大于基本类型。如果被比较的类的名称出现在 \(ordering_of_classes\) 中,则排序将取决于这些名称在该列表中的出现顺序。如果其中任何一个名称不在该列表中,则比较基于类名。如果名称相同,则根据可哈希内容的长度进行比较。然后,使用相同的规则依次比较等长内容的项目。如果始终没有差异,则返回 0。

示例

>>> from sympy.abc import x, y
>>> x.compare(y)
-1
>>> x.compare(x)
0
>>> y.compare(x)
1
count(query)[源代码][源代码]

计算匹配的子表达式的数量。

count_ops(visual=None)[源代码][源代码]

用于返回操作计数的 count_ops 的包装器。

doit(**hints)[源代码][源代码]

评估默认情况下未评估的对象,如极限、积分、求和和乘积。所有此类对象将递归评估,除非通过’hints’排除了某些种类,或者’deep’提示设置为’False’。

>>> from sympy import Integral
>>> from sympy.abc import x
>>> 2*Integral(x, x)
2*Integral(x, x)
>>> (2*Integral(x, x)).doit()
x**2
>>> (2*Integral(x, x)).doit(deep=False)
2*Integral(x, x)
dummy_eq(other, symbol=None)[源代码][源代码]

比较两个表达式并处理哑符号。

示例

>>> from sympy import Dummy
>>> from sympy.abc import x, y
>>> u = Dummy('u')
>>> (u**2 + 1).dummy_eq(x**2 + 1)
True
>>> (u**2 + 1) == (x**2 + 1)
False
>>> (u**2 + y).dummy_eq(x**2 + y, x)
True
>>> (u**2 + y).dummy_eq(x**2 + y, y)
False
find(query, group=False)[源代码][源代码]

查找所有匹配查询的子表达式。

property free_symbols: set[Basic]

从自身的原子中返回那些自由符号。

并非所有自由符号都是 Symbol 。例如:IndexedBase(‘I’)[0].free_symbols

对于大多数表达式,所有符号都是自由符号。对于某些类来说,情况并非如此。例如,积分使用符号作为哑变量,这些是约束变量,因此积分有一个方法来返回除这些符号之外的所有符号。导数会跟踪它将对其执行导数的符号;这些也是约束变量,因此它有自己的 free_symbols 方法。

任何使用绑定变量的其他方法都应该实现一个 free_symbols 方法。

classmethod fromiter(args, **assumptions)[源代码][源代码]

从可迭代对象创建一个新对象。

这是一个便利函数,允许从任何可迭代对象创建对象,而无需先转换为列表或元组。

示例

>>> from sympy import Tuple
>>> Tuple.fromiter(i for i in range(5))
(0, 1, 2, 3, 4)
property func

表达式中的顶级函数。

以下内容应适用于所有对象:

>> x == x.func(*x.args)

示例

>>> from sympy.abc import x
>>> a = 2*x
>>> a.func
<class 'sympy.core.mul.Mul'>
>>> a.args
(2, x)
>>> a.func(*a.args)
2*x
>>> a == a.func(*a.args)
True
has(*patterns)[源代码][源代码]

测试是否有任何子表达式匹配任何模式。

示例

>>> from sympy import sin
>>> from sympy.abc import x, y, z
>>> (x**2 + sin(x*y)).has(z)
False
>>> (x**2 + sin(x*y)).has(x, y, z)
True
>>> x.has(x)
True

注意 has 是一个没有数学知识的结构算法。考虑以下半开区间:

>>> from sympy import Interval
>>> i = Interval.Lopen(0, 5); i
Interval.Lopen(0, 5)
>>> i.args
(0, 5, True, False)
>>> i.has(4)  # there is no "4" in the arguments
False
>>> i.has(0)  # there *is* a "0" in the arguments
True

相反,使用 contains 来确定一个数字是否在区间内:

>>> i.contains(4)
True
>>> i.contains(0)
False

注意 expr.has(*patterns) 完全等同于 any(expr.has(p) for p in patterns)。特别是,当模式列表为空时,返回 False

>>> x.has()
False
has_free(*patterns)[源代码][源代码]

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

示例

>>> from sympy import Integral, Function
>>> from sympy.abc import x, y
>>> f = Function('f')
>>> g = Function('g')
>>> expr = Integral(f(x), (f(x), 1, g(y)))
>>> expr.free_symbols
{y}
>>> expr.has_free(g(y))
True
>>> expr.has_free(*(x, f(x)))
False

这也适用于子表达式和类型:

>>> expr.has_free(g)
True
>>> (x + y + 1).has_free(y + 1)
True
has_xfree(s: set[Basic])[源代码][源代码]

如果 self 有 s 中的任何模式作为自由参数,则返回 True,否则返回 False。这类似于 \(Basic.has_free\),但这里只会报告精确的参数匹配。

示例

>>> from sympy import Function
>>> from sympy.abc import x, y
>>> f = Function('f')
>>> f(x).has_xfree({f})
False
>>> f(x).has_xfree({f(x)})
True
>>> f(x + 1).has_xfree({x})
True
>>> f(x + 1).has_xfree({x + 1})
True
>>> f(x + y + 1).has_xfree({x + 1})
False
property is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

示例

>>> from sympy import exp_polar, pi, I
>>> (I*exp_polar(I*pi/2)).is_comparable
True
>>> (I*exp_polar(I*pi*2)).is_comparable
False

一个错误的结果并不意味着 \(self\) 不能被重写成一种可以比较的形式。例如,下面计算的差异是零,但在不简化的情况下,它不会精确地评估为零:

>>> e = 2**pi*(1 + 2**pi)
>>> dif = e - e.expand()
>>> dif.is_comparable
False
>>> dif.n(2)._prec
1
is_same(b, approx=None)[源代码][源代码]

如果 a 和 b 结构相同则返回 True,否则返回 False。如果提供了 \(approx\),它将用于测试两个数字是否相同。默认情况下,只有相同类型的数字才会比较相等,因此 S.Half != Float(0.5)。

示例

在 SymPy 中(与 Python 不同),如果两个数字的类型不同,它们不会被认为是相同的:

>>> from sympy import S
>>> 2.0 == S(2)
False
>>> 0.5 == S.Half
False

通过提供一个用于比较两个数字的函数,可以忽略这些差异。例如,\(equal_valued\) 将对分母为2的幂的十进制数返回True,无论精度如何。

>>> from sympy import Float
>>> from sympy.core.numbers import equal_valued
>>> (S.Half/4).is_same(Float(0.125, 1), equal_valued)
True
>>> Float(1, 2).is_same(Float(1, 10), equal_valued)
True

但是没有2的幂分母的小数将被比较为不相同。

>>> Float(0.1, 9).is_same(Float(0.1, 10), equal_valued)
False

但是,可以通过提供一个函数来测试两个数字的等价性,从而忽略任意差异:

>>> import math
>>> Float(0.1, 9).is_same(Float(0.1, 10), math.isclose)
True

其他对象可能比较相同,即使类型不同。此例程只有在两个表达式的类类型完全相同时才会返回 True。

>>> from sympy import eye, Basic
>>> eye(1) == S(eye(1))  # mutable vs immutable
True
>>> Basic.is_same(eye(1), S(eye(1)))
False
match(pattern, old=False)[源代码][源代码]

模式匹配。

通配符符号匹配所有。

当表达式 (self) 与模式不匹配时返回 None。否则返回一个字典,例如:

pattern.xreplace(self.match(pattern)) == self

示例

>>> from sympy import Wild, Sum
>>> from sympy.abc import x, y
>>> p = Wild("p")
>>> q = Wild("q")
>>> r = Wild("r")
>>> e = (x+y)**(x+y)
>>> e.match(p**p)
{p_: x + y}
>>> e.match(p**q)
{p_: x + y, q_: x + y}
>>> e = (2*x)**2
>>> e.match(p*q**r)
{p_: 4, q_: x, r_: 2}
>>> (p*q**r).xreplace(e.match(p*q**r))
4*x**2

结构绑定符号在匹配过程中被忽略:

>>> Sum(x, (x, 1, 2)).match(Sum(y, (y, 1, p)))
{p_: 2}

但如果需要,它们可以被识别:

>>> Sum(x, (x, 1, 2)).match(Sum(q, (q, 1, p)))
{p_: 2, q_: x}

old 标志将提供旧式的模式匹配,其中表达式和模式基本上被解析以给出匹配。除非 old=True,否则以下两者都返回 None:

>>> (x - 2).match(p - x, old=True)
{p_: 2*x - 2}
>>> (2/x).match(p*x, old=True)
{p_: 2/x**2}
matches(expr, repl_dict=None, old=False)[源代码][源代码]

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

示例

>>> from sympy import symbols, Wild, Basic
>>> a, b, c = symbols('a b c')
>>> x = Wild('x')
>>> Basic(a + x, x).matches(Basic(a + b, c)) is None
True
>>> Basic(a + x, x).matches(Basic(a + b + c, b + c))
{x_: b + c}
rcall(*args)[源代码][源代码]

通过表达式树递归应用于参数。

此方法用于模拟运算符的常见滥用符号。例如,在SymPy中,以下内容将无法工作:

(x+Lambda(y, 2*y))(z) == x+2*z,

然而,你可以使用:

>>> from sympy import Lambda
>>> from sympy.abc import x, y, z
>>> (x + Lambda(y, 2*y)).rcall(z)
x + 2*z
refine(assumption=True)[源代码][源代码]

请参阅 sympy.assumptions 中的 refine 函数。

replace(
query,
value,
map=False,
simultaneous=True,
exact=None,
)[源代码][源代码]

self 中匹配的子表达式替换为 value

如果 map = True,则还会返回映射 {old: new},其中 old 是通过查询找到的子表达式,而 new 是它的替换值。如果表达式本身不匹配查询,则返回值将是 self.xreplace(map),否则应为 self.subs(ordered(map.items()))

遍历一个表达式树,并从树的底部到顶部执行匹配子表达式的替换。默认方法是同时进行替换,因此所做的更改只会被目标化一次。如果这不是期望的或导致问题,可以将 simultaneous 设置为 False。

此外,如果一个包含多个 Wild 符号的表达式用于匹配子表达式,并且 exact 标志为 None,它将被设置为 True,以便只有在匹配模式中出现的每个 Wild 都接收到非零值时,匹配才会成功。将其设置为 False 接受 0 的匹配;而将其设置为 True 则接受包含 0 的所有匹配。请参见下面的示例以注意。

以下列出了查询和替换值的可能组合列表:

参见

subs

由对象本身定义的子表达式的替换。

xreplace

在表达式树中进行精确节点替换;也能够使用匹配规则

示例

初始设置

>>> from sympy import log, sin, cos, tan, Wild, Mul, Add
>>> from sympy.abc import x, y
>>> f = log(sin(x)) + tan(sin(x**2))
1.1. 类型 -> 类型

obj.replace(type, newtype)

当发现类型为 type 的对象时,将其替换为将其参数传递给 newtype 的结果。

>>> f.replace(sin, cos)
log(cos(x)) + tan(cos(x**2))
>>> sin(x).replace(sin, cos, map=True)
(cos(x), {sin(x): cos(x)})
>>> (x*y).replace(Mul, Add)
x + y
1.2. 类型 -> 函数

obj.replace(类型, 函数)

当找到类型为 type 的对象时,将其参数应用于 funcfunc 必须编写为处理 type 的参数数量。

>>> f.replace(sin, lambda arg: sin(2*arg))
log(sin(2*x)) + tan(sin(2*x**2))
>>> (x*y).replace(Mul, lambda *args: sin(2*Mul(*args)))
sin(2*x*y)
2.1. 模式 -> 表达式

obj.replace(pattern(wild), expr(wild))

将匹配 pattern 的子表达式替换为以 pattern 中的 Wild 符号表示的表达式。

>>> a, b = map(Wild, 'ab')
>>> f.replace(sin(a), tan(a))
log(tan(x)) + tan(tan(x**2))
>>> f.replace(sin(a), tan(a/2))
log(tan(x/2)) + tan(tan(x**2/2))
>>> f.replace(sin(a), a)
log(x) + tan(x**2)
>>> (x*y).replace(a*x, a)
y

当使用多个通配符时,默认情况下匹配是精确的:除非匹配为所有通配符提供非零值,否则匹配失败:

>>> (2*x + y).replace(a*x + b, b - a)
y - 2
>>> (2*x).replace(a*x + b, b - a)
2*x

当设置为 False 时,结果可能不符合直觉:

>>> (2*x).replace(a*x + b, b - a, exact=False)
2/x
2.2. 模式 -> 函数

obj.replace(pattern(wild), lambda wild: expr(wild))

所有行为与 2.1 版本相同,但现在使用的是基于模式变量的函数,而不是表达式:

>>> f.replace(sin(a), lambda a: sin(2*a))
log(sin(2*x)) + tan(sin(2*x**2))
3.1. func -> 函数

obj.replace(filter, func)

如果 filter(e) 为 True,则将子表达式 e 替换为 func(e)

>>> g = 2*sin(x**3)
>>> g.replace(lambda expr: expr.is_Number, lambda expr: expr**2)
4*sin(x**9)

表达式本身也被查询所针对,但这种处理方式确保了不会进行两次更改。

>>> e = x*(x*y + 1)
>>> e.replace(lambda x: x.is_Mul, lambda x: 2*x)
2*x*(2*x*y + 1)

当匹配单个符号时,\(exact\) 将默认为 True,但这可能不是所需的行为:

这里,我们希望 \(exact=False\)

>>> from sympy import Function
>>> f = Function('f')
>>> e = f(1) + f(0)
>>> q = f(a), lambda a: f(a + 1)
>>> e.replace(*q, exact=False)
f(1) + f(2)
>>> e.replace(*q, exact=True)
f(0) + f(2)

但在这里,匹配的性质使得选择正确的设置变得棘手:

>>> e = x**(1 + y)
>>> (x**(1 + y)).replace(x**(1 + a), lambda a: x**-a, exact=False)
x
>>> (x**(1 + y)).replace(x**(1 + a), lambda a: x**-a, exact=True)
x**(-x - y + 1)
>>> (x**y).replace(x**(1 + a), lambda a: x**-a, exact=False)
x
>>> (x**y).replace(x**(1 + a), lambda a: x**-a, exact=True)
x**(1 - y)

使用一种不同的查询形式可能会更好,这种形式能更精确地描述目标表达式:

>>> (1 + x**(1 + y)).replace(
... lambda x: x.is_Pow and x.exp.is_Add and x.exp.args[0] == 1,
... lambda x: x.base**(1 - (x.exp - 1)))
...
x**(1 - y) + 1
rewrite(*args, deep=True, **hints)[源代码][源代码]

使用定义的规则重写 self

重写将一个表达式转换为另一个在数学上等价但结构上不同的表达式。例如,你可以将三角函数重写为复指数,或将组合函数重写为伽玛函数。

此方法接受一个 模式 和一个 规则 作为位置参数。模式 是一个可选参数,用于定义将被转换的表达式类型。如果未传递,所有可能的表达式都将被重写。规则 定义了表达式将如何被重写。

参数:
参数表达式

一个 规则 ,或 模式规则 。 - 模式 是一种类型或类型的可迭代对象。 - 规则 可以是任何对象。

深度bool, 可选

如果 True ,子表达式将被递归转换。默认值是 True

示例

如果未指定 pattern ,则所有可能的表达式都会被转换。

>>> from sympy import cos, sin, exp, I
>>> from sympy.abc import x
>>> expr = cos(x) + I*sin(x)
>>> expr.rewrite(exp)
exp(I*x)

模式可以是类型,也可以是类型的可迭代对象。

>>> expr.rewrite(sin, exp)
exp(I*x)/2 + cos(x) - exp(-I*x)/2
>>> expr.rewrite([cos,], exp)
exp(I*x)/2 + I*sin(x) + exp(-I*x)/2
>>> expr.rewrite([cos, sin], exp)
exp(I*x)

可以通过定义 _eval_rewrite() 方法来实现重写行为。

>>> from sympy import Expr, sqrt, pi
>>> class MySin(Expr):
...     def _eval_rewrite(self, rule, args, **hints):
...         x, = args
...         if rule == cos:
...             return cos(pi/2 - x, evaluate=False)
...         if rule == sqrt:
...             return sqrt(1 - cos(x)**2)
>>> MySin(MySin(x)).rewrite(cos)
cos(-cos(-x + pi/2) + pi/2)
>>> MySin(x).rewrite(sqrt)
sqrt(1 - cos(x)**2)

定义 _eval_rewrite_as_[...]() 方法是为了向后兼容。这可能会在未来被移除,不建议使用。

>>> class MySin(Expr):
...     def _eval_rewrite_as_cos(self, *args, **hints):
...         x, = args
...         return cos(pi/2 - x, evaluate=False)
>>> MySin(x).rewrite(cos)
cos(-x + pi/2)
simplify(**kwargs)[源代码][源代码]

请参阅 sympy.simplify 中的 simplify 函数。

sort_key(order=None)[源代码][源代码]

返回一个排序键。

示例

>>> from sympy import S, I
>>> sorted([S(1)/2, I, -I], key=lambda x: x.sort_key())
[1/2, -I, I]
>>> S("[x, 1/x, 1/x**2, x**2, x**(1/2), x**(1/4), x**(3/2)]")
[x, 1/x, x**(-2), x**2, sqrt(x), x**(1/4), x**(3/2)]
>>> sorted(_, key=lambda x: x.sort_key())
[x**(-2), 1/x, x**(1/4), sqrt(x), x, x**(3/2), x**2]
subs(*args, **kwargs)[源代码][源代码]

在简化参数后,在表达式中用新内容替换旧内容。

\(args\) 可以是:
  • 两个参数,例如 foo.subs(old, new)

  • 一个可迭代参数,例如 foo.subs(iterable)。可迭代对象可以是
    o 一个包含 (旧, 新) 对的迭代容器。在这种情况下,

    替换按照给定的顺序进行处理,连续的模式可能会影响已经进行的替换。

    一个字典或集合,其键/值项对应于旧/新对。

    在这种情况下,旧/新对将按操作计数排序,如果计数相同,则按参数数量和默认排序键排序。然后,生成的排序列表作为可迭代容器处理(见前文)。

如果关键字 simultaneous 为 True,子表达式将不会被评估,直到所有替换都已完成。

参见

replace

能够进行通配符匹配、匹配解析和条件替换的替换功能

xreplace

在表达式树中进行精确节点替换;也能够使用匹配规则

sympy.core.evalf.EvalfMixin.evalf

计算给定的公式到所需的精度水平

示例

>>> from sympy import pi, exp, limit, oo
>>> from sympy.abc import x, y
>>> (1 + x*y).subs(x, pi)
pi*y + 1
>>> (1 + x*y).subs({x:pi, y:2})
1 + 2*pi
>>> (1 + x*y).subs([(x, pi), (y, 2)])
1 + 2*pi
>>> reps = [(y, x**2), (x, 2)]
>>> (x + y).subs(reps)
6
>>> (x + y).subs(reversed(reps))
x**2 + 2
>>> (x**2 + x**4).subs(x**2, y)
y**2 + y

要替换 x**2 而不是 x**4,请使用 xreplace:

>>> (x**2 + x**4).xreplace({x**2: y})
x**4 + y

要延迟评估直到所有替换都已完成,请将关键字 simultaneous 设置为 True:

>>> (x/y).subs([(x, 0), (y, 0)])
0
>>> (x/y).subs([(x, 0), (y, 0)], simultaneous=True)
nan

这具有一个附加功能,即不允许后续替换影响已经完成的替换:

>>> ((x + y)/y).subs({x + y: y, y: x + y})
1
>>> ((x + y)/y).subs({x + y: y, y: x + y}, simultaneous=True)
y/(x + y)

为了获得规范的结果,无序的可迭代对象按 count_op 长度、参数数量以及默认的 sort_key 进行排序以打破任何平局。所有其他可迭代对象保持未排序状态。

>>> from sympy import sqrt, sin, cos
>>> from sympy.abc import a, b, c, d, e
>>> A = (sqrt(sin(2*x)), a)
>>> B = (sin(2*x), b)
>>> C = (cos(2*x), c)
>>> D = (x, d)
>>> E = (exp(x), e)
>>> expr = sqrt(sin(2*x))*sin(exp(x)*x)*cos(2*x) + sin(2*x)
>>> expr.subs(dict([A, B, C, D, E]))
a*c*sin(d*e) + b

生成的表达式表示用新参数对旧参数进行字面替换。这可能不会反映表达式的限制行为:

>>> (x**3 - 3*x).subs({x: oo})
nan
>>> limit(x**3 - 3*x, x, oo)
oo

如果替换后将进行数值评估,最好将替换传递给 evalf 作为

>>> (1/x).evalf(subs={x: 3.0}, n=21)
0.333333333333333333333

而不是

>>> (1/x).subs({x: 3.0}).evalf(21)
0.333333333333333314830

前者将确保获得所需的精度水平。

xreplace(rule)[源代码][源代码]

替换表达式中对象的出现。

参数:
规则类似字典

表达一个替换规则

返回:
xreplace替换的结果

参见

replace

能够进行通配符匹配、匹配解析和条件替换的替换功能

subs

由对象本身定义的子表达式的替换。

示例

>>> from sympy import symbols, pi, exp
>>> x, y, z = symbols('x y z')
>>> (1 + x*y).xreplace({x: pi})
pi*y + 1
>>> (1 + x*y).xreplace({x: pi, y: 2})
1 + 2*pi

只有在表达式树中的整个节点匹配时,才会发生替换:

>>> (x*y + z).xreplace({x*y: pi})
z + pi
>>> (x*y*z).xreplace({x*y: pi})
x*y*z
>>> (2*x).xreplace({2*x: y, x: z})
y
>>> (2*2*x).xreplace({2*x: y, x: z})
4*z
>>> (x + y + 2).xreplace({x + y: 2})
x + y + 2
>>> (x + 2 + exp(x + 2)).xreplace({x + 2: y})
x + exp(y) + 2

xreplace 不区分自由符号和绑定符号。在下面的例子中,subs(x, y) 不会改变 x,因为它是绑定符号,但 xreplace 会改变:

>>> from sympy import Integral
>>> Integral(x, (x, 1, 2*x)).xreplace({x: y})
Integral(y, (y, 1, 2*y))

尝试用一个表达式替换 x 会引发错误:

>>> Integral(x, (x, 1, 2*x)).xreplace({x: 2*y}) 
ValueError: Invalid limits given: ((2*y, 1, 4*y),)
class sympy.core.basic.Atom(*args)[源代码][源代码]

原子事物的父类。原子是一个没有子表达式的表达式。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

atoms(*types)

返回构成当前对象的原子。

class_key()

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule[, hack2])

复制

could_extract_minus_sign

is_hypergeometric

示例

符号, 数字, 有理数, 整数, … 但不是: 加, 乘, 幂, …

单例

class sympy.core.singleton.SingletonRegistry[源代码][源代码]

单例类的注册表(可通过 S 访问)。

方法

__call__(a[, locals, convert_xor, strict, ...])

将任意表达式转换为可在 SymPy 内部使用的类型。

IdentityFunction

注册

示例

>>> from sympy import S, Integer
>>> a = Integer(0)
>>> a is S.Zero
True

在大多数情况下,某些对象是单例化的事实是用户不需要担心的实现细节。在SymPy库代码中,is 比较通常用于性能目的。对于终端用户来说,S 的主要优势是方便访问某些难以输入的实例,比如 S.Half``(而不是 ``Rational(1, 2))。

在使用 is 比较时,确保参数已被符号化。例如,

>>> x = 0
>>> x is S.Zero
False

在使用 == 时,这个问题不是一个问题,这在大多数使用场景中是推荐的:

>>> 0 == S.Zero
True

第二个 Ssympy.core.sympify.sympify() 的快捷方式。sympy.core.sympify.sympify() 是将 Python 对象(如 int(1))转换为 SymPy 对象(如 Integer(1))的函数。它还将表达式的字符串形式转换为 SymPy 表达式,例如 sympify("x**2") -> Symbol("x")**2S(1)sympify(1) 相同(基本上,S.__call__ 已被定义为调用 sympify)。

这是为了方便,因为 S 是一个单字母。它主要用于定义有理数。考虑一个表达式 x + 1/2。如果你直接在 Python 中输入这个,它会计算 1/2 并给出 0.5,因为两个参数都是整数(另见 最后两点:^ 和 /)。然而,在 SymPy 中,你通常希望两个整数的商给出一个精确的有理数。由于 Python 的计算方式,至少一个操作符的一边需要是 SymPy 对象,以便 SymPy 的计算接管。你可以写成 x + Rational(1, 2),但这需要更多的输入。一个更短的版本是 x + S(1)/2。由于 S(1) 返回 Integer(1),除法将返回一个 Rational 类型,因为它会调用 Integer.__truediv__,该方法知道如何返回一个 Rational

class sympy.core.singleton.Singleton(*args, **kwargs)[源代码][源代码]

单例类的元类。

方法

__call__(*args, **kwargs)

作为函数调用自身。

mro(/)

返回类型的方法解析顺序。

注释

实例创建被延迟到第一次访问该值时。(SymPy 1.0 之前的版本会在类创建时创建实例,这容易导致导入循环。)

示例

>>> from sympy import S, Basic
>>> from sympy.core.singleton import Singleton
>>> class MySingleton(Basic, metaclass=Singleton):
...     pass
>>> Basic() is Basic()
False
>>> MySingleton() is MySingleton()
True
>>> S.MySingleton is MySingleton()
True

表达式

class sympy.core.expr.Expr(*args)[源代码][源代码]

代数表达式的基类。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

类的好顺序。

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

apart(x=None, **args)[源代码][源代码]

请参阅 sympy.polys 中的 apart 函数。

args_cnc(cset=False, warn=True, split_1=True)[源代码][源代码]

返回 [交换因子, 非交换因子] 的自身。

示例

>>> from sympy import symbols, oo
>>> A, B = symbols('A B', commutative=0)
>>> x, y = symbols('x y')
>>> (-2*x*y).args_cnc()
[[-1, 2, x, y], []]
>>> (-2.5*x).args_cnc()
[[-1, 2.5, x], []]
>>> (-2*x*A*B*y).args_cnc()
[[-1, 2, x, y], [A, B]]
>>> (-2*x*A*B*y).args_cnc(split_1=False)
[[-2, x, y], [A, B]]
>>> (-2*x*y).args_cnc(cset=True)
[{-1, 2, x, y}, []]

参数总是被视为一个 Mul:

>>> (-2 + x + A).args_cnc()
[[], [x - 2 + A]]
>>> (-oo).args_cnc() # -oo is a singleton
[[-1, oo], []]
as_coeff_Add(
rational=False,
) tuple[Number, Expr][源代码][源代码]

高效地提取求和的系数。

as_coeff_Mul(
rational: bool = False,
) tuple[Number, Expr][源代码][源代码]

高效地提取乘积的系数。

as_coeff_add(
*deps,
) tuple[Expr, tuple[Expr, ...]][源代码][源代码]

返回元组 (c, args),其中 self 被写成一个 Add,a

c 应该是一个添加到 Add 中与 deps 无关的项的 Rational。

args 应该是 a 的所有其他项的元组;如果 self 是一个 Number 或者 self 与 deps 无关(当给定时),args 为空。

当你不确定 self 是否为 Add 时,但你想将 self 视为 Add,或者你想将 self 的尾部参数作为 Add 来处理时,应使用此方法。

  • 如果你知道 self 是一个 Add 并且只想获取头部,使用 self.args[0];

  • 如果你不想处理尾部的参数但需要尾部,那么使用 self.as_two_terms(),它会返回头部和尾部。

  • 如果你想将自身拆分为独立和依赖的部分,请使用 self.as_independent(*deps)

>>> from sympy import S
>>> from sympy.abc import x, y
>>> (S(3)).as_coeff_add()
(3, ())
>>> (3 + x).as_coeff_add()
(3, (x,))
>>> (3 + x + y).as_coeff_add(x)
(y + 3, (x,))
>>> (3 + y).as_coeff_add(x)
(y + 3, ())
as_coeff_exponent(
x,
) tuple[Expr, Expr][源代码][源代码]

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(
*deps,
**kwargs,
) tuple[Expr, tuple[Expr, ...]][源代码][源代码]

返回元组 (c, args),其中 self 被写成一个 Mul,m

c 应该是一个由 Mul 中与 deps 无关的因子相乘的 Rational。

args 应该是 m 的所有其他因子的元组;如果 self 是一个 Number 或者如果 self 独立于 deps(当给定时),则 args 为空。

当你不确定 self 是否为 Mul 时,或者你想将 self 视为 Mul 处理,或者你想将 self 的尾部参数作为 Mul 处理时,应使用此方法。

  • 如果你知道 self 是一个 Mul 并且只想获取头部,使用 self.args[0];

  • 如果你不想处理尾部的参数但需要尾部,那么使用 self.as_two_terms(),它会返回头部和尾部;

  • 如果你想将自身拆分为独立和依赖的部分,请使用 self.as_independent(*deps)

>>> from sympy import S
>>> from sympy.abc import x, y
>>> (S(3)).as_coeff_mul()
(3, ())
>>> (3*x*y).as_coeff_mul()
(3, (x, y))
>>> (3*x*y).as_coeff_mul(x)
(3*y, (x,))
>>> (3*y).as_coeff_mul(x)
(3*y, ())
as_coefficient(expr)[源代码][源代码]

提取给定表达式中的符号系数。换句话说,这个函数将 ‘self’ 分离成 ‘expr’ 和 ‘expr’ 无关的系数的乘积。如果无法进行这种分离,它将返回 None。

参见

coeff

返回具有给定因子的项的总和

as_coeff_Add

将加法常数与表达式分开

as_coeff_Mul

将乘法常数与表达式分开

as_independent

将 x-dependent 项/因子与其他项分开

sympy.polys.polytools.Poly.coeff_monomial

高效地找到多项式中单项式的单个系数

sympy.polys.polytools.Poly.nth

类似于 coeff_monomial,但使用了单项式项的幂次

示例

>>> from sympy import E, pi, sin, I, Poly
>>> from sympy.abc import x
>>> E.as_coefficient(E)
1
>>> (2*E).as_coefficient(E)
2
>>> (2*sin(E)*E).as_coefficient(E)

两个项中都有 E,因此返回一个和。(如果需要精确匹配 E 项的系数,可以从返回的表达式中选择常数。或者,为了更高的精度,可以使用 Poly 的方法来指示所需的项,从中提取系数。)

>>> (2*E + x*E).as_coefficient(E)
x + 2
>>> _.args[0]  # just want the exact match
2
>>> p = Poly(2*E + x*E); p
Poly(x*E + 2*E, x, E, domain='ZZ')
>>> p.coeff_monomial(E)
2
>>> p.nth(0, 1)
2

由于以下内容不能写成包含 E 作为因子的乘积,因此返回 None。(如果需要系数 2*x,则应使用 coeff 方法。)

>>> (2*E*x + x).as_coefficient(E)
>>> (2*E*x + x).coeff(E)
2*x
>>> (E*(x + 1) + x).as_coefficient(E)
>>> (2*pi*I).as_coefficient(pi*I)
2
>>> (2*I).as_coefficient(pi*I)
as_coefficients_dict(*syms)[源代码][源代码]

返回一个将项映射到其有理数系数的字典。由于该字典是一个 defaultdict,对于不存在的项的查询将返回系数 0。

如果提供了符号 syms,任何与它们无关的乘法项将被视为系数,并将返回一个常规的字典,其中包含依赖于 syms 的生成器作为键,以及它们对应的系数作为值。

示例

>>> from sympy.abc import a, x, y
>>> (3*x + a*x + 4).as_coefficients_dict()
{1: 4, x: 3, a*x: 1}
>>> _[a]
0
>>> (3*a*x).as_coefficients_dict()
{a*x: 3}
>>> (3*a*x).as_coefficients_dict(x)
{x: 3*a}
>>> (3*a*x).as_coefficients_dict(y)
{1: 3*a*x}
as_content_primitive(
radical=False,
clear=True,
)[源代码][源代码]

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的自身(原始类型)。内容应始终为正,且 Mul(*foo.as_content_primitive()) == foo。原始类型不必是规范形式,并且应尽可能保留底层结构(即不应将 expand_mul 应用于自身)。

示例

>>> from sympy import sqrt
>>> from sympy.abc import x, y, z
>>> eq = 2 + 2*x + 2*y*(3 + 3*y)

as_content_primitive 函数是递归的,并保留结构:

>>> eq.as_content_primitive()
(2, x + 3*y*(y + 1) + 1)

整数幂将从基数中提取有理数:

>>> ((2 + 6*x)**2).as_content_primitive()
(4, (3*x + 1)**2)
>>> ((2 + 6*x)**(2*y)).as_content_primitive()
(1, (2*(3*x + 1))**(2*y))

术语在添加其 as_content_primitives 后可能会合并:

>>> ((5*(x*(1 + y)) + 2*x*(3 + 3*y))).as_content_primitive()
(11, x*(y + 1))
>>> ((3*(x*(1 + y)) + 2*x*(3 + 3*y))).as_content_primitive()
(9, x*(y + 1))
>>> ((3*(z*(1 + y)) + 2.0*x*(3 + 3*y))).as_content_primitive()
(1, 6.0*x*(y + 1) + 3*z*(y + 1))
>>> ((5*(x*(1 + y)) + 2*x*(3 + 3*y))**2).as_content_primitive()
(121, x**2*(y + 1)**2)
>>> ((x*(1 + y) + 0.4*x*(3 + 3*y))**2).as_content_primitive()
(1, 4.84*x**2*(y + 1)**2)

激进的内容也可以从原始内容中分离出来:

>>> (2*sqrt(2) + 4*sqrt(10)).as_content_primitive(radical=True)
(2, sqrt(2)*(1 + 2*sqrt(5)))

如果 clear=False(默认是 True),那么如果内容可以分配以留下一个或多个具有整数系数的项,则不会从 Add 中移除内容。

>>> (x/2 + y).as_content_primitive()
(1/2, x + 2*y)
>>> (x/2 + y).as_content_primitive(clear=False)
(1, x/2 + y)
as_expr(*gens)[源代码][源代码]

将多项式转换为 SymPy 表达式。

示例

>>> from sympy import sin
>>> from sympy.abc import x, y
>>> f = (x**2 + x*y).as_poly(x, y)
>>> f.as_expr()
x**2 + x*y
>>> sin(x).as_expr()
sin(x)
as_independent(
*deps,
**hint,
) tuple[Expr, Expr][源代码][源代码]

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。为了尽可能完整地分离变量,请先使用分离方法,例如:

  • separatevars() 将 Mul、Add 和 Pow(包括 exp)转换为 Mul

  • .expand(mul=True) 将 Add 或 Mul 转换为 Add

  • .expand(log=True) 将 log 表达式转换为 Add

这里唯一不简单的事情是尊重变量的非交换顺序,并且无论提示如何,总是为零的 \(self\) 返回 (0, 0)。

对于非零的 \(self\) ,返回的元组 (i, d) 有以下解释:

  • i will has no variable that appears in deps

  • d 将包含在 deps 中的变量,或者等于 0(当 self 是 Add 时)或 1(当 self 是 Mul 时)

  • 如果 self 是一个 Add,那么 self = i + d

  • 如果 self 是一个 Mul,那么 self = i*d

  • 否则返回 (self, S.One) 或 (S.One, self)。

要强制将表达式视为 Add,请使用提示 as_Add=True

示例

– self 是一个 Add

>>> from sympy import sin, cos, exp
>>> from sympy.abc import x, y, z
>>> (x + x*y).as_independent(x)
(0, x*y + x)
>>> (x + x*y).as_independent(y)
(x, x*y)
>>> (2*x*sin(x) + y + x + z).as_independent(x)
(y + z, 2*x*sin(x) + x)
>>> (2*x*sin(x) + y + x + z).as_independent(x, y)
(z, 2*x*sin(x) + x + y)

– self 是一个 Mul

>>> (x*sin(x)*cos(y)).as_independent(x)
(cos(y), x*sin(x))

当 self 是 Mul 时,不可交换的项不能总是被分离出来

>>> from sympy import symbols
>>> n1, n2, n3 = symbols('n1 n2 n3', commutative=False)
>>> (n1 + n1*n2).as_independent(n2)
(n1, n1*n2)
>>> (n2*n1 + n1*n2).as_independent(n2)
(0, n1*n2 + n2*n1)
>>> (n1*n2*n3).as_independent(n1)
(1, n1*n2*n3)
>>> (n1*n2*n3).as_independent(n2)
(n1, n2*n3)
>>> ((x-n1)*(x-y)).as_independent(x)
(1, (x - y)*(x - n1))

– self 是其他任何东西:

>>> (sin(x)).as_independent(x)
(1, sin(x))
>>> (sin(x)).as_independent(y)
(sin(x), 1)
>>> exp(x+y).as_independent(x)
(1, exp(x + y))

– 强制自身被视为一个 Add:

>>> (3*x).as_independent(x, as_Add=True)
(0, 3*x)

– 强制自身被视为一个 Mul:

>>> (3+x).as_independent(x, as_Add=False)
(1, x + 3)
>>> (-3+x).as_independent(x, as_Add=False)
(1, x - 3)

注意下面与上面的区别,在于使dep项上的常数为正。

>>> (y*(-3+x)).as_independent(x)
(y, x - 3)
– 使用 .as_independent() 进行真正的独立性测试

of .has()。前者只考虑自由符号,而后者考虑所有符号

>>> from sympy import Integral
>>> I = Integral(x, (x, 1, 2))
>>> I.has(x)
True
>>> x in I.free_symbols
False
>>> I.as_independent(x) == (I, 1)
True
>>> (I + x).as_independent(x) == (I, x)
True

注意:当尝试获取独立术语时,可能需要首先使用一种分离方法。在这种情况下,重要的是要跟踪你发送到此例程的内容,以便你知道如何解释返回的值。

>>> from sympy import separatevars, log
>>> separatevars(exp(x+y)).as_independent(x)
(exp(y), exp(x))
>>> (x + x*y).as_independent(y)
(x, x*y)
>>> separatevars(x + x*y).as_independent(y)
(x, y + 1)
>>> (x*(1 + y)).as_independent(y)
(x, y + 1)
>>> (x*(1 + y)).expand(mul=True).as_independent(y)
(x, x*y)
>>> a, b=symbols('a b', positive=True)
>>> (log(a*b).expand(log=True)).as_independent(b)
(log(a), log(b))
as_leading_term(*symbols, logx=None, cdir=0)[源代码][源代码]

返回自身级数展开的主导(非零)项。

The _eval_as_leading_term 例程用于执行此操作,并且它们必须始终返回一个非零值。

示例

>>> from sympy.abc import x
>>> (1 + x + x**2).as_leading_term(x)
1
>>> (1/x**2 + x + x**2).as_leading_term(x)
x**(-2)
as_numer_denom()[源代码][源代码]

返回一个表达式的分子和分母。

expression -> a/b -> a, b

这只是一个存根,应该由对象的类方法定义以获取其他内容。

参见

normal

返回 a/b 而不是 (a, b)

as_ordered_factors(order=None)[源代码][源代码]

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms(order=None, data=False)[源代码][源代码]

将表达式转换为有序的项列表。

示例

>>> from sympy import sin, cos
>>> from sympy.abc import x
>>> (sin(x)**2*cos(x) + sin(x)**2 + 1).as_ordered_terms()
[sin(x)**2*cos(x), sin(x)**2, 1]
as_poly(*gens, **args)[源代码][源代码]

self 转换为多项式,或返回 None

as_powers_dict()[源代码][源代码]

将自身作为因子的字典返回,每个因子都被视为幂。键是因子的底数,值是对应的指数。如果表达式是 Mul 并且包含非交换因子,则在使用结果字典时应谨慎,因为它们出现的顺序将在字典中丢失。

参见

as_ordered_factors

非交换应用的替代方案,返回一个有序的因子列表。

args_cnc

类似于 as_ordered_factors,但保证交换因子和非交换因子的分离。

as_real_imag(deep=True, **hints)[源代码][源代码]

对 ‘self’ 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。此方法不会与 re() 和 im() 函数混淆,因为这些函数在评估时不执行复杂的扩展。

然而,可以扩展 re() 和 im() 函数,并获得与调用此函数一次完全相同的结果。

>>> from sympy import symbols, I
>>> x, y = symbols('x,y', real=True)
>>> (x + y*I).as_real_imag()
(x, y)
>>> from sympy.abc import z, w
>>> (z + w*I).as_real_imag()
(re(z) - im(w), re(w) + im(z))
as_terms()[源代码][源代码]

将一个表达式转换为项的列表。

aseries(x=None, n=6, bound=0, hir=False)[源代码][源代码]

自变量的渐近级数展开。这等价于 self.series(x, oo, n)

参数:
self表达式

要展开其级数的表达式。

x符号

这是要计算的表达式的变量。

n

用于表示 x**n 顺序的值,直到该顺序为止,级数将被展开。

hir布尔值

将此参数设置为 True 以生成层次系列。它会在早期级别停止递归,并可能提供更好和更有用的结果。

绑定值, 整数

使用 bound 参数来设定重写系数在其标准化形式中的限制。

返回:
表达式

表达式的渐近级数展开。

参见

Expr.aseries

有关此包装器的完整详细信息,请参阅此函数的文档字符串。

注释

该算法直接源自Gruntz提供的极限计算算法。它主要使用mrv和rewrite子程序。该算法的总体思路是首先寻找给定表达式f中最迅速变化的子表达式w,然后以w为基展开f。然后对前导系数递归地执行相同操作,直到我们得到常数系数。

如果给定表达式 f 的最快变化子表达是 f 本身,该算法会尝试找到 mrv 集的规范化表示,并使用这种规范化表示重写 f。

如果展开式包含一个阶项,它将是 O(x ** (-n))O(w ** (-n)),其中 w 属于 self 中最迅速变化的表达式。

参考文献

[1]

Gruntz, Dominik. 一种计算渐近级数的新算法。在:Proc. 1993 国际符号和代数计算研讨会。1993年。第239-244页。

[2]

Gruntz 论文 - 第90页

示例

>>> from sympy import sin, exp
>>> from sympy.abc import x
>>> e = sin(1/x + exp(-x)) - sin(1/x)
>>> e.aseries(x)
(1/(24*x**4) - 1/(2*x**2) + 1 + O(x**(-6), (x, oo)))*exp(-x)
>>> e.aseries(x, n=3, hir=True)
-exp(-2*x)*sin(1/x)/2 + exp(-x)*cos(1/x) + O(exp(-3*x), (x, oo))
>>> e = exp(exp(x)/(1 - 1/x))
>>> e.aseries(x)
exp(exp(x)/(1 - 1/x))
>>> e.aseries(x, bound=3) 
exp(exp(x)/x**2)*exp(exp(x)/x)*exp(-exp(x) + exp(x)/(1 - 1/x) - exp(x)/x - exp(x)/x**2)*exp(exp(x))

对于有理表达式,此方法可能会返回不带Order项的原始表达式。 >>> (1/x).aseries(x, n=8) 1/x

cancel(*gens, **args)[源代码][源代码]

参见 sympy.polys 中的取消函数

coeff(x, n=1, right=False, _first=True)[源代码][源代码]

返回包含 x**n 的项的系数。如果 n 为零,则将返回所有与 x 无关的项。

参见

as_coefficient

将表达式分离为系数和因子

as_coeff_Add

将加法常数与表达式分开

as_coeff_Mul

将乘法常数与表达式分开

as_independent

将 x-dependent 项/因子与其他项分开

sympy.polys.polytools.Poly.coeff_monomial

高效地找到多项式中单项式的单个系数

sympy.polys.polytools.Poly.nth

类似于 coeff_monomial,但使用了单项式项的幂次

示例

>>> from sympy import symbols
>>> from sympy.abc import x, y, z

你可以选择前面有明确否定词的术语:

>>> (-x + 2*y).coeff(-1)
x
>>> (x - 2*y).coeff(-1)
2*y

你可以选择没有有理数系数的项:

>>> (x + 2*y).coeff(1)
x
>>> (3 + 2*x + 4*x**2).coeff(1)
0

你可以通过设置 n=0 来选择与 x 无关的项;在这种情况下,返回 expr.as_independent(x)[0](如果没有则返回 0 而不是 None):

>>> (3 + 2*x + 4*x**2).coeff(x, 0)
3
>>> eq = ((x + 1)**3).expand() + 1
>>> eq
x**3 + 3*x**2 + 3*x + 2
>>> [eq.coeff(x, i) for i in reversed(range(4))]
[1, 3, 3, 2]
>>> eq -= 2
>>> [eq.coeff(x, i) for i in reversed(range(4))]
[1, 3, 3, 0]

您可以选择前面带有数值的术语:

>>> (-x - 2*y).coeff(2)
-y
>>> from sympy import sqrt
>>> (x + sqrt(2)*x).coeff(sqrt(2))
x

匹配是精确的:

>>> (3 + 2*x + 4*x**2).coeff(x)
2
>>> (3 + 2*x + 4*x**2).coeff(x**2)
4
>>> (3 + 2*x + 4*x**2).coeff(x**3)
0
>>> (z*(x + y)**2).coeff((x + y)**2)
z
>>> (z*(x + y)**2).coeff(x + y)
0

此外,没有进行因式分解,因此 1 + z*(1 + y) 不是从以下内容中得到的:

>>> (x + z*(x + x*y)).coeff(x)
1

如果需要进行此类因式分解,可以首先使用 factor_terms:

>>> from sympy import factor_terms
>>> factor_terms(x + z*(x + x*y)).coeff(x)
z*(y + 1) + 1
>>> n, m, o = symbols('n m o', commutative=False)
>>> n.coeff(n)
1
>>> (3*n).coeff(n)
3
>>> (n*m + m*n*m).coeff(n) # = (1 + m)*n*m
1 + m
>>> (n*m + m*n*m).coeff(n, right=True) # = (1 + m)*n*m
m

如果有多个可能的系数,则返回0:

>>> (n*m + m*n).coeff(n)
0

如果只有一个可能的系数,则返回它:

>>> (n*m + x*m*n).coeff(m*n)
x
>>> (n*m + x*m*n).coeff(m*n, right=1)
1
collect(
syms,
func=None,
evaluate=True,
exact=False,
distribute_order_term=True,
)[源代码][源代码]

请参阅 sympy.simplify 中的 collect 函数。

combsimp()[源代码][源代码]

请参阅 sympy.simplify 中的 combsimp 函数。

compute_leading_term(x, logx=None)[源代码][源代码]

已弃用的函数,用于计算级数的首项。

as_leading_term 仅允许用于 .series() 的结果。这是一个先计算级数的包装器。

conjugate()[源代码][源代码]

返回 ‘self’ 的复数共轭。

could_extract_minus_sign()[源代码][源代码]

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

示例

>>> from sympy.abc import x, y
>>> e = x - y
>>> {i.could_extract_minus_sign() for i in (e, -e)}
{False, True}

尽管 y - x 被视为 -(x - y),但由于它在乘积中没有前导因子 -1,因此下面的结果是错误的:

>>> (x*(y - x)).could_extract_minus_sign()
False

要将某物关于符号置于规范形式,请使用 \(signsimp\)

>>> from sympy import signsimp
>>> signsimp(x*(y - x))
-x*(x - y)
>>> _.could_extract_minus_sign()
True
equals(other, failing_expression=False)[源代码][源代码]

如果 self == other 则返回 True,如果不等于则返回 False,或者返回 None。如果 failing_expression 为 True,则不会简化为 0 的表达式将被返回,而不是 None。

expand(
deep=True,
modulus=None,
power_base=True,
power_exp=True,
mul=True,
log=True,
multinomial=True,
basic=True,
**hints,
)[源代码][源代码]

使用提示扩展表达式。

更多信息请参阅 sympy.core.function 中 expand() 函数的文档字符串。

property expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

示例

>>> from sympy.abc import x, y
>>> (x + y).expr_free_symbols 
{x, y}

如果表达式包含在非表达式对象中,请不要返回自由符号。比较:

>>> from sympy import Tuple
>>> t = Tuple(x + y)
>>> t.expr_free_symbols 
set()
>>> t.free_symbols
{x, y}
extract_additively(c)[源代码][源代码]

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

示例

>>> from sympy.abc import x, y
>>> e = 2*x + 3
>>> e.extract_additively(x + 1)
x + 2
>>> e.extract_additively(3*x)
>>> e.extract_additively(4)
>>> (y*(x + 1)).extract_additively(x + 1)
>>> ((x + 1)*(x + 2*y + 1) + 3).extract_additively(x + 1)
(x + 1)*(x + 2*y) + 3
extract_branch_factor(allow_half=False)[源代码][源代码]

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表示自身。返回 (z, n)。

>>> from sympy import exp_polar, I, pi
>>> from sympy.abc import x, y
>>> exp_polar(I*pi).extract_branch_factor()
(exp_polar(I*pi), 0)
>>> exp_polar(2*I*pi).extract_branch_factor()
(1, 1)
>>> exp_polar(-pi*I).extract_branch_factor()
(exp_polar(I*pi), -1)
>>> exp_polar(3*pi*I + x).extract_branch_factor()
(exp_polar(x + I*pi), 1)
>>> (y*exp_polar(-5*pi*I)*exp_polar(3*pi*I + 2*pi*x)).extract_branch_factor()
(y*exp_polar(2*pi*x), -1)
>>> exp_polar(-I*pi/2).extract_branch_factor()
(exp_polar(-I*pi/2), 0)

如果 allow_half 为 True,则还会提取 exp_polar(I*pi):

>>> exp_polar(I*pi).extract_branch_factor(allow_half=True)
(1, 1/2)
>>> exp_polar(2*I*pi).extract_branch_factor(allow_half=True)
(1, 1)
>>> exp_polar(3*I*pi).extract_branch_factor(allow_half=True)
(1, 3/2)
>>> exp_polar(-I*pi).extract_branch_factor(allow_half=True)
(1, -1/2)
extract_multiplicatively(c)[源代码][源代码]

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

示例

>>> from sympy import symbols, Rational
>>> x, y = symbols('x,y', real=True)
>>> ((x*y)**3).extract_multiplicatively(x**2 * y)
x*y**2
>>> ((x*y)**3).extract_multiplicatively(x**4 * y)
>>> (2*x).extract_multiplicatively(2)
x
>>> (2*x).extract_multiplicatively(3)
>>> (Rational(1, 2)*x).extract_multiplicatively(3)
x/6
factor(*gens, **args)[源代码][源代码]

参见 sympy.polys.polytools 中的 factor() 函数

fourier_series(limits=None)[源代码][源代码]

计算自身的傅里叶正弦/余弦级数。

更多信息请参阅 sympy.series.fourier 中的 fourier_series() 的文档字符串。

fps(
x=None,
x0=0,
dir=1,
hyper=True,
order=4,
rational=True,
full=False,
)[源代码][源代码]

计算自身的形式幂级数。

更多信息请参见 sympy.series.formal 中 fps() 函数的文档字符串。

gammasimp()[源代码][源代码]

参见 sympy.simplify 中的 gammasimp 函数

getO()[源代码][源代码]

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()[源代码][源代码]

返回表达式的顺序。

示例

>>> from sympy import O
>>> from sympy.abc import x
>>> (1 + x + O(x**2)).getn()
2
>>> (1 + x).getn()
integrate(*args, **kwargs)[源代码][源代码]

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)[源代码][源代码]

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)[源代码][源代码]

此测试给定的表达式是否在给定的符号 syms 中是代数的。当未提供 syms 时,将使用所有自由符号。有理函数不必在展开或任何形式的规范形式中。

此函数对于带有符号指数的“代数表达式”返回 False。这是对 is_rational_function 的一个简单扩展,包括有理指数幂。

参考文献

[1]

https://en.wikipedia.org/wiki/代数表达式

示例

>>> from sympy import Symbol, sqrt
>>> x = Symbol('x', real=True)
>>> sqrt(1 + x).is_rational_function()
False
>>> sqrt(1 + x).is_algebraic_expr()
True

此函数不会尝试任何可能导致表达式看起来不再是代数表达式的非平凡简化。

>>> from sympy import exp, factor
>>> a = sqrt(exp(x)**2 + 2*exp(x) + 1)/(exp(x) + 1)
>>> a.is_algebraic_expr(x)
False
>>> factor(a).is_algebraic_expr()
True
is_constant(*wrt, **flags)[源代码][源代码]

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

示例

>>> from sympy import cos, sin, Sum, S, pi
>>> from sympy.abc import a, n, x, y
>>> x.is_constant()
False
>>> S(2).is_constant()
True
>>> Sum(x, (x, 1, 10)).is_constant()
True
>>> Sum(x, (x, 1, n)).is_constant()
False
>>> Sum(x, (x, 1, n)).is_constant(y)
True
>>> Sum(x, (x, 1, n)).is_constant(n)
False
>>> Sum(x, (x, 1, n)).is_constant(x)
True
>>> eq = a*cos(x)**2 + a*sin(x)**2 - a
>>> eq.is_constant()
True
>>> eq.subs({x: pi, a: 2}) == eq.subs({x: pi, a: 3}) == 0
True
>>> (0**x).is_constant()
False
>>> x.is_constant()
False
>>> (x**x).is_constant()
False
>>> one = cos(x)**2 + sin(x)**2
>>> one.is_constant()
True
>>> ((one - 1)**(x + 1)).is_constant() in (True, False) # could be 0 or 1
True
is_meromorphic(x, a)[源代码][源代码]

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

此方法旨在作为一个快速测试,如果在没有简化或更详细分析的情况下无法做出决定,则返回 None。

示例

>>> from sympy import zoo, log, sin, sqrt
>>> from sympy.abc import x
>>> f = 1/x**2 + 1 - 2*x**3
>>> f.is_meromorphic(x, 0)
True
>>> f.is_meromorphic(x, 1)
True
>>> f.is_meromorphic(x, zoo)
True
>>> g = x**log(3)
>>> g.is_meromorphic(x, 0)
False
>>> g.is_meromorphic(x, 1)
True
>>> g.is_meromorphic(x, zoo)
False
>>> h = sin(1/x)*x**2
>>> h.is_meromorphic(x, 0)
False
>>> h.is_meromorphic(x, 1)
True
>>> h.is_meromorphic(x, zoo)
True

多值函数在其分支为亚纯函数时被认为是亚纯的。因此,大多数函数在本质奇点和分支点之外的任何地方都是亚纯的。特别是,它们在分支切割上也将是亚纯的,除了它们的端点。

>>> log(x).is_meromorphic(x, -1)
True
>>> log(x).is_meromorphic(x, 0)
False
>>> sqrt(x).is_meromorphic(x, -1)
True
>>> sqrt(x).is_meromorphic(x, 0)
False
property is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。虽然它会比 if not self.free_symbols 更快,因为 is_number 一旦遇到自由符号或未定义的函数就会失败。

示例

>>> from sympy import Function, Integral, cos, sin, pi
>>> from sympy.abc import x
>>> f = Function('f')
>>> x.is_number
False
>>> f(1).is_number
False
>>> (2*x).is_number
False
>>> (2 + Integral(2, x)).is_number
False
>>> (2 + Integral(2, (x, 1, 2))).is_number
True

并非所有数字在 SymPy 的意义上都是数字:

>>> pi.is_number, pi.is_Number
(True, False)

如果某物是一个数字,它应该评估为一个具有实部和虚部的数字;然而,结果可能不可比较,因为结果的实部和/或虚部可能没有精度。

>>> cos(1).is_number and cos(1).is_comparable
True
>>> z = cos(1)**2 + sin(1)**2 - 1
>>> z.is_number
True
>>> z.is_comparable
False
is_polynomial(*syms)[源代码][源代码]

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

这检查 self 是否是 syms 中的精确多项式。此函数对具有符号指数的“多项式”表达式返回 False。因此,您应该能够对返回 True 的表达式应用多项式算法,并且 Poly(expr, *syms) 应该在且仅在 expr.is_polynomial(*syms) 返回 True 时有效。多项式不必是展开形式。如果没有给出符号,将使用表达式中的所有自由符号。

这不是假设系统的一部分。你不能做 Symbol(‘z’, polynomial=True)。

示例

>>> from sympy import Symbol, Function
>>> x = Symbol('x')
>>> ((x**2 + 1)**4).is_polynomial(x)
True
>>> ((x**2 + 1)**4).is_polynomial()
True
>>> (2**x + 1).is_polynomial(x)
False
>>> (2**x + 1).is_polynomial(2**x)
True
>>> f = Function('f')
>>> (f(x) + 1).is_polynomial(x)
False
>>> (f(x) + 1).is_polynomial(f(x))
True
>>> (1/f(x) + 1).is_polynomial(f(x))
False
>>> n = Symbol('n', nonnegative=True, integer=True)
>>> (x**n + 1).is_polynomial(x)
False

此函数不会尝试任何可能导致表达式看起来不再是多项式的非平凡简化。

>>> from sympy import sqrt, factor, cancel
>>> y = Symbol('y', positive=True)
>>> a = sqrt(y**2 + 2*y + 1)
>>> a.is_polynomial(y)
False
>>> factor(a)
y + 1
>>> factor(a).is_polynomial(y)
True
>>> b = (y**2 + 2*y + 1)/(y + 1)
>>> b.is_polynomial(y)
False
>>> cancel(b)
y + 1
>>> cancel(b).is_polynomial(y)
True

另请参见 .is_rational_function()

is_rational_function(*syms)[源代码][源代码]

测试函数是否是给定符号 syms 中的两个多项式的比值。如果没有给出 syms,则将使用所有自由符号。有理函数不必处于展开或任何形式的规范形式。

此函数对于带有符号指数的“有理函数”表达式返回 False。因此,对于此函数返回 True 的表达式,您应该能够调用 .as_numer_denom() 并将多项式算法应用于结果。

这不是假设系统的一部分。你不能做 Symbol(‘z’, rational_function=True)。

示例

>>> from sympy import Symbol, sin
>>> from sympy.abc import x, y
>>> (x/y).is_rational_function()
True
>>> (x**2).is_rational_function()
True
>>> (x/sin(y)).is_rational_function(y)
False
>>> n = Symbol('n', integer=True)
>>> (x**n + 1).is_rational_function(x)
False

此函数不会尝试任何可能导致表达式看起来不再是有理函数的非平凡简化。

>>> from sympy import sqrt, factor
>>> y = Symbol('y', positive=True)
>>> a = sqrt(y**2 + 2*y + 1)/y
>>> a.is_rational_function(y)
False
>>> factor(a)
(y + 1)/y
>>> factor(a).is_rational_function(y)
True

另请参见 is_algebraic_expr()。

leadterm(x, logx=None, cdir=0)[源代码][源代码]

返回前导项 a*x**b 作为元组 (a, b)。

示例

>>> from sympy.abc import x
>>> (1+x+x**2).leadterm(x)
(1, 0)
>>> (1/x**2+x+x**2).leadterm(x)
(1, -2)
limit(x, xlim, dir='+')[源代码][源代码]

计算极限 x->xlim。

lseries(
x=None,
x0=0,
dir='+',
logx=None,
cdir=0,
)[源代码][源代码]

用于生成序列项的迭代器的包装器。

注意:一个无穷级数将产生一个无穷迭代器。例如,以下代码将永远不会终止。它只会不断打印 sin(x) 级数的项:

for term in sin(x).lseries(x):
    print term

与 nseries() 相比,lseries() 的优势在于很多时候你只对序列中的下一项(例如第一项)感兴趣,但你不知道在使用 nseries() 时应该用“n”参数请求多少项。

另请参阅 nseries()。

normal()[源代码][源代码]

返回表达式为分数形式。

expression -> a/b

参见

as_numer_denom

返回 (a, b) 而不是 a/b

nseries(
x=None,
x0=0,
n=6,
dir='+',
logx=None,
cdir=0,
)[源代码][源代码]

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

如果给定了 x,x0 为 0,dir=’+’,并且 self 有 x,那么将调用 _eval_nseries。这将计算最内层表达式中的“n”项,然后通过“交叉相乘”所有内容来构建最终的级数。

可选的 logx 参数可以用来替换返回序列中的任何 log(x) 为一个符号值,以避免在 0 处计算 log(x)。应提供一个符号来替代 log(x)。

优势 – 它很快,因为我们不需要提前确定需要计算多少项。

缺点 – 你可能会得到比你预期更少的项,但附加的 O(x**n) 项将始终是正确的,因此结果虽然可能更短,但也是正确的。

如果这些假设中的任何一个不成立,这将作为一个包装器来处理系列,它会尝试更努力地返回正确数量的项。

另请参见 lseries()。

示例

>>> from sympy import sin, log, Symbol
>>> from sympy.abc import x, y
>>> sin(x).nseries(x, 0, 6)
x - x**3/6 + x**5/120 + O(x**6)
>>> log(x+1).nseries(x, 0, 5)
x - x**2/2 + x**3/3 - x**4/4 + O(x**5)

处理 logx 参数 — 在以下示例中,扩展失败,因为 sin 在 -oo(当 x 趋近于 0 时 log(x) 的极限)处没有渐近展开:

>>> e = sin(log(x))
>>> e.nseries(x, 0, 6)
Traceback (most recent call last):
...
PoleError: ...
...
>>> logx = Symbol('logx')
>>> e.nseries(x, 0, 6, logx=logx)
sin(logx)

在以下示例中,扩展工作正常,但仅返回自身,除非使用 logx 参数:

>>> e = x**y
>>> e.nseries(x, 0, 2)
x**y
>>> e.nseries(x, 0, 2, logx=logx)
exp(logx*y)
nsimplify(
constants=(),
tolerance=None,
full=False,
)[源代码][源代码]

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)[源代码][源代码]

请参阅 sympy.simplify 中的 powsimp 函数

primitive()[源代码][源代码]

返回可以从自身每个项中非递归提取的正有理数(即,自身被视为一个加法)。这类似于 as_coeff_Mul() 方法,但 primitive 始终提取一个正有理数(从不提取负数或浮点数)。

示例

>>> from sympy.abc import x
>>> (3*(x + 1)**2).primitive()
(3, (x + 1)**2)
>>> a = (6*x + 2); a.primitive()
(2, 3*x + 1)
>>> b = (x/2 + 3); b.primitive()
(1/2, x + 6)
>>> (a*b).primitive() == (1, a*b)
True
radsimp(**kwargs)[源代码][源代码]

参见 sympy.simplify 中的 radsimp 函数

ratsimp()[源代码][源代码]

参见 sympy.simplify 中的 ratsimp 函数。

removeO()[源代码][源代码]

如果存在,移除加性的 O(..) 符号

round(n=None)[源代码][源代码]

返回 x 四舍五入到给定的十进制位数。

如果结果是一个复数,请对复数的实部和虚部进行四舍五入。

注释

Python 的 round 函数使用了 SymPy 的 round 方法,因此它总是返回一个 SymPy 数字(而不是 Python 的浮点数或整数):

>>> isinstance(round(S(123), -2), Number)
True

示例

>>> from sympy import pi, E, I, S, Number
>>> pi.round()
3
>>> pi.round(2)
3.14
>>> (2*pi + E*I).round()
6 + 3*I

round 方法具有截断效果:

>>> (2*pi + I/10).round()
6
>>> (pi/10 + 2*I).round()
2*I
>>> (pi/10 + E*I).round(2)
0.31 + 2.72*I
separate(deep=False, force=False)[源代码][源代码]

参见 sympy.simplify 中的单独函数

series(
x=None,
x0=0,
n=6,
dir='+',
logx=None,
cdir=0,
)[源代码][源代码]

x = x0 附近对 “self” 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

返回“self”在点 x = x0 处关于 x 的级数展开,直到 ``O((x - x0)**n, x, x0)``(默认 n 为 6)。

如果 x=Noneself 是单变量的,将提供单变量符号,否则将引发错误。

参数:
表达式表达式

要展开其级数的表达式。

x符号

这是要计算的表达式的变量。

x0

计算 x 所围绕的值。可以是 -oooo 之间的任何值。

n

用于表示 x**n 顺序的值,直到该顺序为止,级数将被展开。

目录字符串,可选

级数展开可以是双向的。如果 dir="+",则(x->x0+)。如果 dir="-",则(x->x0-)。对于无穷大的 x0``(``oo-oo),dir 参数由无穷大的方向决定(即,oo 对应 dir="-")。

logx可选的

它用于将返回序列中的任何 log(x) 替换为符号值,而不是计算实际值。

cdir可选的

它代表复杂方向,并指示需要从哪个方向评估扩展。

返回:
表达式表达式

关于 x0 的表达式的级数展开

Raises:
类型错误

如果“n”和“x0”是无限对象

PoleError

如果“x0”是一个无穷大对象

示例

>>> from sympy import cos, exp, tan
>>> from sympy.abc import x, y
>>> cos(x).series()
1 - x**2/2 + x**4/24 + O(x**6)
>>> cos(x).series(n=4)
1 - x**2/2 + O(x**4)
>>> cos(x).series(x, x0=1, n=2)
cos(1) - (x - 1)*sin(1) + O((x - 1)**2, (x, 1))
>>> e = cos(x + exp(y))
>>> e.series(y, n=2)
cos(x + 1) - y*sin(x + 1) + O(y**2)
>>> e.series(x, n=2)
cos(exp(y)) - x*sin(exp(y)) + O(x**2)

如果 n=None ,那么将返回一个序列项的生成器。

>>> term=cos(x).series(n=None)
>>> [next(term) for i in range(2)]
[1, -x**2/2]

对于 dir=+``(默认),序列从右侧计算,而对于 ``dir=-,序列从左侧计算。对于平滑函数,此标志不会改变结果。

>>> abs(x).series(dir="+")
x
>>> abs(x).series(dir="-")
-x
>>> f = tan(x)
>>> f.series(x, 2, 6, "+")
tan(2) + (1 + tan(2)**2)*(x - 2) + (x - 2)**2*(tan(2)**3 + tan(2)) +
(x - 2)**3*(1/3 + 4*tan(2)**2/3 + tan(2)**4) + (x - 2)**4*(tan(2)**5 +
5*tan(2)**3/3 + 2*tan(2)/3) + (x - 2)**5*(2/15 + 17*tan(2)**2/15 +
2*tan(2)**4 + tan(2)**6) + O((x - 2)**6, (x, 2))
>>> f.series(x, 2, 3, "-")
tan(2) + (2 - x)*(-tan(2)**2 - 1) + (2 - x)**2*(tan(2)**3 + tan(2))
+ O((x - 2)**3, (x, 2))

对于有理表达式,此方法可能会返回不带 Order 项的原始表达式。 >>> (1/x).series(x, n=8) 1/x

taylor_term(n, x, *previous_terms)[源代码][源代码]

泰勒项的一般方法。

这种方法很慢,因为它需要进行 n 次微分。子类可以通过使用“previous_terms”来重新定义它,以使其更快。

together(*args, **kwargs)[源代码][源代码]

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)[源代码][源代码]

参见 sympy.simplify 中的 trigsimp 函数

class sympy.core.expr.UnevaluatedExpr(arg, **kwargs)[源代码][源代码]

除非释放,否则不会被求值的表达式。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

类的好顺序。

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

示例

>>> from sympy import UnevaluatedExpr
>>> from sympy.abc import x
>>> x*(1/x)
1
>>> x*UnevaluatedExpr(1/x)
x*1/x
class sympy.core.expr.AtomicExpr(*args)[源代码][源代码]

一个既是原子又是表达式的对象的父类。

例如:符号、数字、有理数、整数,… 但不包括:加、乘、幂,…

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

符号

class sympy.core.symbol.Symbol(name, **assumptions)[源代码][源代码]

Symbol 类用于创建符号变量。

参数:
AtomicExpr: 变量名
布尔值: 带有布尔值(真或假)的假设
属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

binary_symbols

从自身的原子中返回那些自由符号。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
种类
名称

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

as_set()

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

to_nnf

转置

示例

>>> from sympy import Symbol
>>> x = Symbol("x", positive=True)
>>> x.is_positive
True
>>> x.is_negative
False

传递希腊字母:

>>> from sympy import Symbol
>>> alpha = Symbol('alpha')
>>> alpha 
α

尾随的数字在名称中会被自动视为前面的内容的下标。添加下标到符号的一般格式为:<var_name> = Symbol('<symbol_name>_<subscript>')

>>> from sympy import Symbol
>>> alpha_i = Symbol('alpha_i')
>>> alpha_i 
αᵢ
class sympy.core.symbol.Wild(
name,
exclude=(),
properties=(),
**assumptions,
)[源代码][源代码]

一个 Wild 符号可以匹配任何东西,或者任何没有被明确排除的东西。

参数:
名称str

Wild 实例的名称。

排除可迭代对象, 可选

exclude 中的实例将不会被匹配。

属性函数可迭代对象,可选

函数,每个函数接受一个表达式作为输入并返回一个 boolproperties 中的所有函数都需要返回 True,以便 Wild 实例匹配该表达式。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

binary_symbols

从自身的原子中返回那些自由符号。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

排除
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
种类
名称
属性

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

as_set()

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

to_nnf

转置

示例

>>> from sympy import Wild, WildFunction, cos, pi
>>> from sympy.abc import x, y, z
>>> a = Wild('a')
>>> x.match(a)
{a_: x}
>>> pi.match(a)
{a_: pi}
>>> (3*x**2).match(a*x)
{a_: 3*x}
>>> cos(x).match(a)
{a_: cos(x)}
>>> b = Wild('b', exclude=[x])
>>> (3*x**2).match(b*x)
>>> b.match(a)
{a_: b_}
>>> A = WildFunction('A')
>>> A.match(a)
{a_: A_}
class sympy.core.symbol.Dummy(name=None, dummy_index=None, **assumptions)[源代码][源代码]

虚拟符号即使名称相同,每个也是唯一的:

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

binary_symbols

从自身的原子中返回那些自由符号。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

dummy_index
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
种类
名称

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

as_set()

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

to_nnf

转置

示例

>>> from sympy import Dummy
>>> Dummy("x") == Dummy("x")
False

如果没有提供名称,则将使用内部计数的字符串值。当需要一个临时变量且表达式中使用的变量名称不重要时,这很有用。

>>> Dummy() 
_Dummy_10
sympy.core.symbol.symbols(
names,
*,
cls=<class 'sympy.core.symbol.Symbol'>,
**args,
) Any[源代码][源代码]

将字符串转换为 Symbol 类的实例。

symbols() 函数返回一个符号序列,其名称取自 names 参数,该参数可以是逗号或空白分隔的字符串,或字符串序列:

>>> from sympy import symbols, Function

>>> x, y, z = symbols('x,y,z')
>>> a, b, c = symbols('a b c')

输出类型取决于输入参数的属性:

>>> symbols('x')
x
>>> symbols('x,')
(x,)
>>> symbols('x,y')
(x, y)
>>> symbols(('a', 'b', 'c'))
(a, b, c)
>>> symbols(['a', 'b', 'c'])
[a, b, c]
>>> symbols({'a', 'b', 'c'})
{a, b, c}

如果需要一个可迭代容器用于单个符号,将 seq 参数设置为 True 或以逗号结束符号名称:

>>> symbols('x', seq=True)
(x,)

为了减少输入,支持使用范围语法来创建索引符号。范围由冒号表示,范围的类型由冒号右侧的字符决定。如果字符是数字,则左侧的所有连续数字被视为非负起始值(如果没有左侧数字则为0),右侧的所有连续数字被视为比结束值大1的值:

>>> symbols('x:10')
(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9)

>>> symbols('x5:10')
(x5, x6, x7, x8, x9)
>>> symbols('x5(:2)')
(x50, x51)

>>> symbols('x5:10,y:5')
(x5, x6, x7, x8, x9, y0, y1, y2, y3, y4)

>>> symbols(('x5:10', 'y:5'))
((x5, x6, x7, x8, x9), (y0, y1, y2, y3, y4))

如果冒号右边的字符是字母,那么左边的单个字母(如果没有则为’a’)被视为起始,并且所有字符在字典顺序范围内*通过*右边的字母都被用作范围:

>>> symbols('x:z')
(x, y, z)
>>> symbols('x:c')  # null range
()
>>> symbols('x(:c)')
(xa, xb, xc)

>>> symbols(':c')
(a, b, c)

>>> symbols('a:d, x:z')
(a, b, c, d, x, y, z)

>>> symbols(('a:d', 'x:z'))
((a, b, c, d), (x, y, z))

支持多个范围;连续的数值范围应通过括号分隔,以消除一个范围的结束数字与下一个范围的开始数字之间的歧义:

>>> symbols('x:2(1:3)')
(x01, x02, x11, x12)
>>> symbols(':3:2')  # parsing is from left to right
(00, 01, 10, 11, 20, 21)

只移除一对包围范围的括号,因此要在范围周围包含括号,请加倍括号。要包含空格、逗号或冒号,请使用反斜杠转义它们:

>>> symbols('x((a:b))')
(x(a), x(b))
>>> symbols(r'x(:1\,:2)')  # or r'x((:1)\,(:2))'
(x(0,0), x(0,1))

所有新创建的符号都根据 args 设置了假设:

>>> a = symbols('a', integer=True)
>>> a.is_integer
True

>>> x, y, z = symbols('x,y,z', real=True)
>>> x.is_real and y.is_real and z.is_real
True

尽管其名为 symbols() ,但它可以创建类似符号的对象,如 Function 或 Wild 类的实例。要实现这一点,请将 cls 关键字参数设置为所需类型:

>>> symbols('f,g,h', cls=Function)
(f, g, h)

>>> type(_[0])
<class 'sympy.core.function.UndefinedFunction'>
sympy.core.symbol.var(names, **args)[源代码][源代码]

创建符号并将它们注入到全局命名空间中。

示例

>>> from sympy import var
>>> var('x')
x
>>> x # noqa: F821
x
>>> var('a,ab,abc')
(a, ab, abc)
>>> abc # noqa: F821
abc
>>> var('x,y', real=True)
(x, y)
>>> x.is_real and y.is_real # noqa: F821
True

有关可以传递给 var() 的参数类型的更多详细信息,请参阅 symbols() 文档。

intfunc

sympy.core.intfunc.num_digits(n, base=10)[源代码][源代码]

返回在给定基数下表示 n 所需的位数。

参数:
n: 整数

被统计位数的数字。

b: 整数

数字计算的基数。

示例

>>> from sympy.core.intfunc import num_digits
>>> num_digits(10)
2
>>> num_digits(10, 2)  # 1010 -> 4 digits
4
>>> num_digits(-100, 16)  # -64 -> 2 digits
2
sympy.core.intfunc.trailing(n)[源代码][源代码]

计算n的二进制表示中尾随零的个数,即确定能整除n的最大2的幂。

示例

>>> from sympy import trailing
>>> trailing(128)
7
>>> trailing(63)
0
sympy.core.intfunc.ilcm(*args)[源代码][源代码]

计算整数的最小公倍数。

示例

>>> from sympy import ilcm
>>> ilcm(5, 10)
10
>>> ilcm(7, 3)
21
>>> ilcm(5, 10, 15)
30
sympy.core.intfunc.igcd(*args)[源代码]

计算非负整数的最大公约数。

参考文献

示例

>>> from sympy import igcd
>>> igcd(2, 4)
2
>>> igcd(5, 10, 15)
5
sympy.core.intfunc.igcd_lehmer(a, b)[源代码][源代码]

计算两个整数的最大公约数。

参考文献

sympy.core.intfunc.igcdex(a, b)[源代码][源代码]

返回 x, y, g 使得 g = x*a + y*b = gcd(a, b)。

示例

>>> from sympy.core.intfunc import igcdex
>>> igcdex(2, 3)
(-1, 1, 1)
>>> igcdex(10, 12)
(-1, 1, 2)
>>> x, y, g = igcdex(100, 2004)
>>> x, y, g
(-20, 1, 4)
>>> x*100 + y*2004
4
sympy.core.intfunc.isqrt(n)[源代码][源代码]

返回小于或等于 \(\sqrt{n}\) 的最大整数。

参数:
n非负整数
返回:
int\(\left\lfloor\sqrt{n}\right\rfloor\)
Raises:
ValueError

如果 n 是负数。

类型错误

如果 n 的类型不能与 int 进行比较。因此,对于 str 会引发 TypeError,但对于 float 则不会。

示例

>>> from sympy.core.intfunc import isqrt
>>> isqrt(0)
0
>>> isqrt(9)
3
>>> isqrt(10)
3
>>> isqrt("30")
Traceback (most recent call last):
    ...
TypeError: '<' not supported between instances of 'str' and 'int'
>>> from sympy.core.numbers import Rational
>>> isqrt(Rational(-1, 2))
Traceback (most recent call last):
    ...
ValueError: n must be nonnegative
sympy.core.intfunc.integer_nthroot(y, n)[源代码][源代码]

返回一个包含 x = floor(y**(1/n)) 的元组和一个布尔值,指示结果是否精确(即 x**n == y)。

示例

>>> from sympy import integer_nthroot
>>> integer_nthroot(16, 2)
(4, True)
>>> integer_nthroot(26, 2)
(5, False)

要简单地判断一个数是否为完全平方数,应使用 is_square 函数:

>>> from sympy.ntheory.primetest import is_square
>>> is_square(26)
False
sympy.core.intfunc.integer_log(n, b)[源代码][源代码]

返回 (e, bool),其中 e 是满足 \(|n| \geq |b^e|\) 的最大非负整数,且 bool 为 True 当且仅当 \(n = b^e\)

示例

>>> from sympy import integer_log
>>> integer_log(125, 5)
(3, True)
>>> integer_log(17, 9)
(1, False)

如果基数为正且数字为负,返回值将始终相同,除了2:

>>> integer_log(-4, 2)
(2, False)
>>> integer_log(-16, 4)
(0, False)

当基数为负时,只有当指数的奇偶性与基数的符号相符时,返回值才会为 True:

>>> integer_log(4, -2)
(2, True)
>>> integer_log(8, -2)
(3, False)
>>> integer_log(-8, -2)
(3, True)
>>> integer_log(-4, -2)
(2, False)
sympy.core.intfunc.mod_inverse(a, m)[源代码][源代码]

返回满足 \(a \times c = 1 \pmod{m}\) 的数 \(c\),其中 \(c\)\(m\) 具有相同的符号。如果不存在这样的值,则引发 ValueError。

参考文献

示例

>>> from sympy import mod_inverse, S

假设我们希望找到3模11的乘法逆元\(x\)。这等同于找到满足\(3x = 1 \pmod{11}\)\(x\)。满足此同余关系的一个\(x\)值是4。因为\(3 \times 4 = 12\)\(12 = 1 \pmod{11}\)。这个值由``mod_inverse``返回:

>>> mod_inverse(3, 11)
4
>>> mod_inverse(-3, 11)
7

\(a\)\(m\) 的分子之间存在公因数时,逆不存在:

>>> mod_inverse(2, 4)
Traceback (most recent call last):
...
ValueError: inverse of 2 mod 4 does not exist
>>> mod_inverse(S(2)/7, S(5)/2)
7/2

数字

class sympy.core.numbers.Number(*obj)[源代码][源代码]

表示 SymPy 中的原子序数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

计算 \(self\)\(other\) 的最大公约数。

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

计算 \(self\)\(other\) 的最小公倍数。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

as_coeff_Add(rational=False)[源代码][源代码]

高效地提取求和的系数。

as_coeff_Mul(rational=False)[源代码][源代码]

高效地提取乘积的系数。

cofactors(other)[源代码][源代码]

计算 \(self\)\(other\) 的最大公约数和余因子。

gcd(other)[源代码][源代码]

计算 \(self\)\(other\) 的最大公约数。

lcm(other)[源代码][源代码]

计算 \(self\)\(other\) 的最小公倍数。

class sympy.core.numbers.Float(num, dps=None, precision=None)[源代码][源代码]

表示一个任意精度的浮点数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_transcendental
is_zero
num

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

计算 \(self\)\(other\) 的最大公约数。

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

计算 \(self\)\(other\) 的最小公倍数。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

epsilon_eq

地板

is_hypergeometric

转置

注释

浮点数本质上是不精确的,除非它们的值是二进制精确值。

>>> approx, exact = Float(.1, 1), Float(.125, 1)

出于计算目的,evalf 需要能够改变精度,但这不会提高不精确值的准确性。以下是对一个只有1位精度的0.1值的最精确的5位近似值:

>>> approx.evalf(5)
0.099609

相比之下,0.125 在二进制中是精确的(就像在十进制中一样),因此它可以传递给 Float 或 evalf 以获得任意精度的匹配准确性:

>>> Float(exact, 5)
0.12500
>>> exact.evalf(20)
0.12500000000000000000

尝试从浮点数创建一个高精度的 Float 是不被禁止的,但必须记住,*底层浮点数*(而不是显而易见的十进制值)是以高精度获取的。例如,0.3 没有有限的二进制表示。最接近的有理数是分数 5404319552844595/2**54。因此,如果你尝试获取一个精度为 20 位的 0.3 的 Float,你将不会看到与 0.3 后面跟着 19 个零相同的东西:

>>> Float(0.3, 20)
0.29999999999999998890

如果你想得到小数 0.3 的 20 位数值(而不是 0.3 的浮点近似值),你应该将 0.3 作为字符串发送。底层表示仍然是二进制的,但使用的精度高于 Python 的浮点数:

>>> Float('0.3', 20)
0.30000000000000000000

虽然你可以使用 Float 增加现有浮点数的精度,但这不会提高其准确性——底层值并未改变:

>>> def show(f): # binary rep of Float
...     from sympy import Mul, Pow
...     s, m, e, b = f._mpf_
...     v = Mul(int(m), Pow(2, int(e), evaluate=False), evaluate=False)
...     print('%s at prec=%s' % (v, f._prec))
...
>>> t = Float('0.3', 3)
>>> show(t)
4915/2**14 at prec=13
>>> show(Float(t, 20)) # higher prec, not higher accuracy
4915/2**14 at prec=70
>>> show(Float(t, 2)) # lower prec
307/2**10 at prec=10

当在 Float 上使用 evalf 时,同样的事情会发生:

>>> show(t.evalf(20))
4915/2**14 at prec=70
>>> show(t.evalf(2))
307/2**10 at prec=10

最后,浮点数可以通过一个 mpf 元组 (n, c, p) 来实例化,以生成数字 (-1)**n*c*2**p:

>>> n, c, p = 1, 5, 0
>>> (-1)**n*c*2**p
-5
>>> Float((1, 5, 0))
-5.00000000000000

一个实际的 mpf 元组也将 c 中的位数作为元组的最后一个元素:

>>> _._mpf_
(1, 5, 0, 3)

这不需要用于实例化,并且与精度不是同一回事。mpf 元组和精度是 Float 跟踪的两个独立量。

在 SymPy 中,Float 是一个可以以任意精度计算的数字。尽管浮点数 ‘inf’ 和 ‘nan’ 不是这样的数字,但 Float 可以创建这些数字:

>>> Float('-inf')
-oo
>>> _.is_Float
False

浮点数中的零只有一个值。正零和负零没有分别。

示例

>>> from sympy import Float
>>> Float(3.5)
3.50000000000000
>>> Float(3)
3.00000000000000

从字符串(以及 Python 的 intlong 类型)创建浮点数将提供至少 15 位的最小精度,但精度会自动增加以捕捉所有输入的数字。

>>> Float(1)
1.00000000000000
>>> Float(10**20)
100000000000000000000.
>>> Float('1e20')
100000000000000000000.

然而,*浮点数*(Python float 类型)仅保留15位精度:

>>> Float(1e20)
1.00000000000000e+20
>>> Float(1.23456789123456789)
1.23456789123457

将高精度小数作为字符串输入可能更为可取:

>>> Float('1.23456789123456789')
1.23456789123456789

所需的位数也可以指定:

>>> Float('1e-3', 3)
0.00100
>>> Float(100, 4)
100.0

如果为精度发送空字符串,浮点数可以自动计算有效数字;空格或下划线也是允许的。(自动计算仅适用于字符串、整数和长整数)。

>>> Float('123 456 789.123_456', '')
123456789.123456
>>> Float('12e-3', '')
0.012
>>> Float(3, '')
3.

如果一个数字以科学记数法书写,如果出现小数点,则只有指数前的数字被认为是有效数字,否则“e”仅表示如何移动小数点:

>>> Float('60.e2', '')  # 2 digits significant
6.0e+3
>>> Float('60e2', '')  # 4 digits significant
6000.
>>> Float('600e-2', '')  # 3 digits significant
6.00
class sympy.core.numbers.Rational(p, q=None, gcd=None)[源代码][源代码]

表示任意大小的有理数(p/q)。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

分母
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_positive
is_negative
is_nonnegative
is_nonpositive
is_polar
is_positive
分子
p
q

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

factors([limit, use_trial, use_rho, ...])

一个包装器,用于 factorint,返回小于限制(或计算成本低)的自身因数。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

limit_denominator([max_denominator])

最接近 self 且分母最多为 max_denominator 的有理数。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

示例

>>> from sympy import Rational, nsimplify, S, pi
>>> Rational(1, 2)
1/2

Rational 在接受输入时是无偏见的。如果传递了一个浮点数,将返回其二进制表示的底层值:

>>> Rational(.5)
1/2
>>> Rational(.2)
3602879701896397/18014398509481984

如果需要更简单的浮点数表示形式,可以考虑将分母限制为所需值或将浮点数转换为字符串(这大致相当于将分母限制为 10**12):

>>> Rational(str(.2))
1/5
>>> Rational(.2).limit_denominator(10**12)
1/5

当传递字符串字面量时,可以获得任意精度的有理数:

>>> Rational("1.23")
123/100
>>> Rational('1e-2')
1/100
>>> Rational(".1")
1/10
>>> Rational('1e-2/3.2')
1/320

其他类型字符串的转换可以通过 sympify() 函数处理,浮点数转换为表达式或简单分数可以通过 nsimplify 处理:

>>> S('.[3]')  # repeating digits in brackets
1/3
>>> S('3**2/10')  # general expressions
9/10
>>> nsimplify(.3)  # numbers that have a simple form
3/10

但如果输入不能简化为一个字面上的有理数,将会引发一个错误:

>>> Rational(pi)
Traceback (most recent call last):
...
TypeError: invalid input: pi
as_coeff_Add(rational=False)[源代码][源代码]

高效地提取求和的系数。

as_coeff_Mul(rational=False)[源代码][源代码]

高效地提取乘积的系数。

as_content_primitive(
radical=False,
clear=True,
)[源代码][源代码]

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

示例

>>> from sympy import S
>>> (S(-3)/2).as_content_primitive()
(3/2, -1)

更多示例请参见 Expr.as_content_primitive 的文档字符串。

factors(
limit=None,
use_trial=True,
use_rho=False,
use_pm1=False,
verbose=False,
visual=False,
)[源代码][源代码]

一个包装器,用于 factorint 返回小于限制(或计算成本低)的自身因子。默认情况下禁用特殊的因式分解方法,因此仅使用试除法。

limit_denominator(
max_denominator=1000000,
)[源代码][源代码]

最接近 self 且分母最多为 max_denominator 的有理数。

示例

>>> from sympy import Rational
>>> Rational('3.141592653589793').limit_denominator(10)
22/7
>>> Rational('3.141592653589793').limit_denominator(100)
311/99
class sympy.core.numbers.Integer(i)[源代码][源代码]

表示任意大小的整数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

分母
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_negative
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_zero
分子
p

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

factors([limit, use_trial, use_rho, ...])

一个包装器,用于 factorint,返回小于限制(或计算成本低)的自身因数。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

limit_denominator([max_denominator])

最接近 self 且分母最多为 max_denominator 的有理数。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

示例

>>> from sympy import Integer
>>> Integer(3)
3

如果将浮点数或有理数传递给 Integer,小数部分将被丢弃;效果是向零舍入。

>>> Integer(3.8)
3
>>> Integer(-3.8)
-3

如果字符串可以解析为整数,则它是可接受的输入:

>>> Integer("9" * 20)
99999999999999999999

很少需要显式实例化一个 Integer,因为 Python 整数在使用于 SymPy 表达式时会自动转换为 Integer。

class sympy.core.numbers.AlgebraicNumber(
expr,
coeffs=None,
alias=None,
**args,
)[源代码][源代码]

用于在 SymPy 中表示代数数的类。

从符号上看,该类的一个实例表示元素 \(\alpha \in \mathbb{Q}(\theta) \hookrightarrow \mathbb{C}\)。也就是说,代数数 \(\alpha\) 被表示为特定数域 \(\mathbb{Q}(\theta)\) 中的一个元素,并且该数域通过特定的嵌入映射到复数域中。

正式地,原始元素 \(\theta\) 由两个数据点给出:(1) 它的最小多项式(定义 \(\mathbb{Q}(\theta)\)),和 (2) 这个多项式的一个特定复数根(定义嵌入 \(\mathbb{Q}(\theta) \hookrightarrow \mathbb{C}\))。最后,我们表示的代数数 \(\alpha\)\(\theta\) 中的多项式的系数给出。

属性:
别名
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

func

表达式中的顶级函数。

is_aliased

如果 alias 被设置,则返回 True

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_hermitian
is_imaginary
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_primitive_element

判断这个代数数 \(\alpha \in \mathbb{Q}(\theta)\) 是否等于其域的本原元素 \(\theta\)

is_rational
is_real
is_zero
最小多项式
rep

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr([x])

self 创建一个基本表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly([x])

self 创建一个 Poly 实例。

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

类的好顺序。

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

coeffs()

返回代数数的所有 SymPy 系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

field_element(coeffs)

从同一数域的另一个元素形成。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

minpoly_of_element()

计算这个代数数的最小多项式。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

native_coeffs()

返回一个代数数的所有本原系数。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

primitive_element()

获取代数数 $alpha$ 所属的数域 $mathbb{Q}(theta)$ 的原始元素 $theta$。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

to_algebraic_integer()

self 转换为代数整数。

to_primitive_element([radicals])

self 转换为一个与其自身原始元素相等的 AlgebraicNumber 实例。

to_root([radicals, minpoly])

转换为一个不是 AlgebraicNumberExpr,具体来说,要么是一个 ComplexRootOf,或者,在可能的情况下,可选地转换为一个用根式表示的表达式。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

static __new__(
cls,
expr,
coeffs=None,
alias=None,
**args,
)[源代码][源代码]

构造一个新的代数数 \(\alpha\),属于数域 \(k = \mathbb{Q}(\theta)\)

有四个实例属性需要确定:

属性

类型/含义

root

Expr 表示 $ heta$ 作为一个复数

minpoly

Poly,$ heta$ 的最小多项式

rep

DMP\(\alpha\) 作为 \(\theta\) 中的多项式给出

alias

Symbol 用于 \(\theta\),或 None

参见参数部分以了解它们的确定方式。

参数:
expr : Expr, 或对 \((m, r)\)Expr,或对 \((m, r)\)

根据传递的 expr ,有三种不同的构造模式。

(1) expr 是一个 AlgebraicNumber: 在这种情况下,我们首先从 expr 复制所有四个实例属性。如果还给出了 coeffs,我们将两个系数多项式组合(见下文)。如果给出了 alias,它将覆盖。

(2) expr 是任何其他类型的 Expr:那么 root 将等于 expr。因此它必须表示一个代数量,我们将计算其 minpoly

(3) expr 是一个有序对 \((m, r)\),给出了 minpoly \(m\) 和它的 root \(r\),它们共同定义了 $ heta\(。在这种情况下,\)m$ 可以是一个单变量的 Poly 或任何表示相同内容的 Expr,而 \(r\) 必须是表示复数根的某些 Expr,包括在根号中的显式表达式,以及 ComplexRootOfAlgebraicNumber 的实例。

coeffs : 列表, ANP, 无, 可选 (默认=无)列表,

这定义了 rep,将代数数 \(\alpha\) 表示为 \(\theta\) 的多项式。

如果是一个列表,元素应为整数或有理数。如果是一个 ANP ,我们取其系数(使用其 to_list() 方法)。如果为 None ,则系数列表默认为 [1, 0] ,这意味着 \(\alpha = \theta\) 是该域的本原元素。

如果 expr 是一个 AlgebraicNumber,设 \(g(x)\) 为其 rep 多项式,并设 \(f(x)\) 为由 coeffs 定义的多项式。那么 self.rep 将表示复合函数 \((f \circ g)(x)\)

别名 : str, Symbol, None, 可选 (默认=None)str, Symbol, None, optional (default=None)

这是一种为基本元素提供名称的方法。我们描述了几种通过 expr 参数定义基本元素值的方式,但这些方法都没有为其命名。例如,在这里,可以将 alias 设置为 Symbol('theta'),以便在打印 \(\alpha\) 或使用 as_poly() 方法将其渲染为多项式时,显示这个符号。

示例

回想一下,我们正在将一个代数数构造为一个域元素 \(\alpha \in \mathbb{Q}(\theta)\)

>>> from sympy import AlgebraicNumber, sqrt, CRootOf, S
>>> from sympy.abc import x

示例 (1): \(\alpha = \theta = \sqrt{2}\)

>>> a1 = AlgebraicNumber(sqrt(2))
>>> a1.minpoly_of_element().as_expr(x)
x**2 - 2
>>> a1.evalf(10)
1.414213562

示例(2):\(\alpha = 3 \sqrt{2} - 5\)\(\theta = \sqrt{2}\)。我们可以基于上一个示例进行构建:

>>> a2 = AlgebraicNumber(a1, [3, -5])
>>> a2.as_expr()
-5 + 3*sqrt(2)

或从头开始:

>>> a2 = AlgebraicNumber(sqrt(2), [3, -5])
>>> a2.as_expr()
-5 + 3*sqrt(2)

示例(3):\(\alpha = 6 \sqrt{2} - 11\)\(\theta = \sqrt{2}\)。同样,我们可以基于前面的示例,并且我们看到系数多项式是由以下部分组成的:

>>> a3 = AlgebraicNumber(a2, [2, -1])
>>> a3.as_expr()
-11 + 6*sqrt(2)

反映出 \((2x - 1) \circ (3x - 5) = 6x - 11\) 的事实。

示例(4):\(\alpha = \sqrt{2}\)\(\theta = \sqrt{2} + \sqrt{3}\)。最简单的方法是使用 to_number_field() 函数:

>>> from sympy import to_number_field
>>> a4 = to_number_field(sqrt(2), sqrt(2) + sqrt(3))
>>> a4.minpoly_of_element().as_expr(x)
x**2 - 2
>>> a4.to_root()
sqrt(2)
>>> a4.primitive_element()
sqrt(2) + sqrt(3)
>>> a4.coeffs()
[1/2, 0, -9/2, 0]

但如果你已经知道正确的系数,你可以直接构建它:

>>> a4 = AlgebraicNumber(sqrt(2) + sqrt(3), [S(1)/2, 0, S(-9)/2, 0])
>>> a4.to_root()
sqrt(2)
>>> a4.primitive_element()
sqrt(2) + sqrt(3)

示例(5):假设我们已经知道其系数,构造黄金比例作为第5次分圆域的一个元素。这次我们为域的本原元素引入别名 \(\zeta\)

>>> from sympy import cyclotomic_poly
>>> from sympy.abc import zeta
>>> a5 = AlgebraicNumber(CRootOf(cyclotomic_poly(5), -1),
...                  [-1, -1, 0, 0], alias=zeta)
>>> a5.as_poly().as_expr()
-zeta**3 - zeta**2
>>> a5.evalf()
1.61803398874989

(索引 -1CRootOf 选择具有最大实部和虚部的复数根,在这种情况下是 \(\mathrm{e}^{2i\pi/5}\)。参见 ComplexRootOf。)

示例(6):基于上一个示例,构造数 \(2 \phi \in \mathbb{Q}(\phi)\),其中 \(\phi\) 是黄金比例:

>>> from sympy.abc import phi
>>> a6 = AlgebraicNumber(a5.to_root(), coeffs=[2, 0], alias=phi)
>>> a6.as_poly().as_expr()
2*phi
>>> a6.primitive_element().evalf()
1.61803398874989

注意,我们需要使用 a5.to_root(),因为将 a5 作为第一个参数传递会构造数 \(2 \phi\) 作为域 \(\mathbb{Q}(\zeta)\) 的元素:

>>> a6_wrong = AlgebraicNumber(a5, coeffs=[2, 0])
>>> a6_wrong.as_poly().as_expr()
-2*zeta**3 - 2*zeta**2
>>> a6_wrong.primitive_element().evalf()
0.309016994374947 + 0.951056516295154*I
as_expr(x=None)[源代码][源代码]

self 创建一个基本表达式。

as_poly(x=None)[源代码][源代码]

self 创建一个 Poly 实例。

coeffs()[源代码][源代码]

返回代数数的所有 SymPy 系数。

field_element(coeffs)[源代码][源代码]

从同一数域的另一个元素形成。

参数:
coeffs : 列表, ANP列表,

类似于类 构造函数coeffs 参数,定义新元素为基本元素的多项式。

如果是一个列表,元素应该是整数或有理数。如果是一个 ANP,我们取其系数(使用其 to_list() 方法)。

示例

>>> from sympy import AlgebraicNumber, sqrt
>>> a = AlgebraicNumber(sqrt(5), [-1, 1])
>>> b = a.field_element([3, 2])
>>> print(a)
1 - sqrt(5)
>>> print(b)
2 + 3*sqrt(5)
>>> print(b.primitive_element() == a.primitive_element())
True
property is_aliased

如果 alias 被设置,则返回 True

property is_primitive_element

判断这个代数数 \(\alpha \in \mathbb{Q}(\theta)\) 是否等于其域的本原元素 \(\theta\)

minpoly_of_element()[源代码][源代码]

计算这个代数数的最小多项式。

native_coeffs()[源代码][源代码]

返回一个代数数的所有本原系数。

primitive_element()[源代码][源代码]

获取代数数 \(\alpha\) 所属的数域 \(\mathbb{Q}(\theta)\) 的原始元素 \(\theta\)

返回:
代数数
to_algebraic_integer()[源代码][源代码]

self 转换为代数整数。

to_primitive_element(
radicals=True,
)[源代码][源代码]

self 转换为一个与其自身原始元素相等的 AlgebraicNumber 实例。

参数:
部首布尔值,可选(默认=True)

如果 True,那么我们将尝试返回一个 AlgebraicNumber,其 root 是一个用根式表示的表达式。如果这是不可能的(或者如果 radicalsFalse),root 将是一个 ComplexRootOf

返回:
代数数

示例

>>> from sympy import sqrt, to_number_field
>>> from sympy.abc import x
>>> a = to_number_field(sqrt(2), sqrt(2) + sqrt(3))

AlgebraicNumber a 表示在域 \(\mathbb{Q}(\sqrt{2} + \sqrt{3})\) 中的数 \(\sqrt{2}\)。将 a 表示为多项式,

>>> a.as_poly().as_expr(x)
x**3/2 - 9*x/2

反映了一个事实,即 \(\sqrt{2} = \theta^3/2 - 9 \theta/2\),其中 \(\theta = \sqrt{2} + \sqrt{3}\)

a 不等于其自身的原始元素。它的最小多项式

>>> a.minpoly.as_poly().as_expr(x)
x**4 - 10*x**2 + 1

是 $ heta$ 的。

转换为原始元素,

>>> a_prim = a.to_primitive_element()
>>> a_prim.minpoly.as_poly().as_expr(x)
x**2 - 2

我们得到一个 AlgebraicNumber ,其 minpoly 是该数本身的。

to_root(
radicals=True,
minpoly=None,
)[源代码][源代码]

转换为一个不是 AlgebraicNumberExpr,具体来说,要么是一个 ComplexRootOf,或者,在可能的情况下,可选地转换为一个用根式表示的表达式。

参数:
部首布尔值,可选(默认=True)

如果 True ,那么我们将尝试以根式的形式返回根。如果无法实现,我们将返回一个 ComplexRootOf

minpoly

如果已经预先计算了 \(self\) 的最小多项式,可以将其传入以节省时间。

class sympy.core.numbers.NumberSymbol[源代码][源代码]
属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_hermitian
is_imaginary
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

approximation(number_cls)

返回一个包含 NumberSymbol 值的、具有 number_cls 端点的区间。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

approximation(number_cls)[源代码][源代码]

返回一个包含 NumberSymbol 值的 number_cls 端点的区间。如果未实现,则返回 None。

sympy.core.numbers.RealNumber[源代码]

Float 的别名

sympy.core.numbers.seterr(divide=False)[源代码][源代码]

SymPy 应该在 0/0 时抛出异常还是返回一个 nan?

divide == True …. 引发异常 divide == False … 返回 nan

class sympy.core.numbers.Zero[源代码][源代码]

数字零。

Zero 是一个单例,可以通过 S.Zero 访问。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

分母
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_polar
分子

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

factors([limit, use_trial, use_rho, ...])

一个包装器,用于 factorint,返回小于限制(或计算成本低)的自身因数。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

limit_denominator([max_denominator])

最接近 self 且分母最多为 max_denominator 的有理数。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

参考文献

示例

>>> from sympy import S, Integer
>>> Integer(0) is S.Zero
True
>>> 1/S.Zero
zoo
class sympy.core.numbers.One[源代码][源代码]

第一。

一个是单例,可以通过 S.One 访问。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

分母
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_composite
is_even
is_odd
is_polar
is_prime
分子

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

factors([limit, use_trial, use_rho, ...])

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

limit_denominator([max_denominator])

最接近 self 且分母最多为 max_denominator 的有理数。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

参考文献

示例

>>> from sympy import S, Integer
>>> Integer(1) is S.One
True
class sympy.core.numbers.NegativeOne[源代码][源代码]

数字负一。

NegativeOne 是一个单例,可以通过 S.NegativeOne 访问。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

分母
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_negative
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_zero
分子

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

factors([limit, use_trial, use_rho, ...])

一个包装器,用于 factorint,返回小于限制(或计算成本低)的自身因数。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

limit_denominator([max_denominator])

最接近 self 且分母最多为 max_denominator 的有理数。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

参见

One

参考文献

[1]

https://en.wikipedia.org/wiki/%E2%88%921_%28数字%29

示例

>>> from sympy import S, Integer
>>> Integer(-1) is S.NegativeOne
True
class sympy.core.numbers.Half[源代码][源代码]

有理数 1/2。

Half 是一个单例,可以通过 S.Half 访问。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

分母
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_positive
is_negative
is_nonnegative
is_nonpositive
is_polar
is_positive
分子

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

factors([limit, use_trial, use_rho, ...])

一个包装器,用于 factorint,返回小于限制(或计算成本低)的自身因数。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

limit_denominator([max_denominator])

最接近 self 且分母最多为 max_denominator 的有理数。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

参考文献

示例

>>> from sympy import S, Rational
>>> Rational(1, 2) is S.Half
True
class sympy.core.numbers.NaN[源代码][源代码]

非数字。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

计算 \(self\)\(other\) 的最大公约数。

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

计算 \(self\)\(other\) 的最小公倍数。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

参考文献

示例

>>> from sympy import nan, S, oo, Eq
>>> nan is S.NaN
True
>>> oo - oo
nan
>>> nan + 1
nan
>>> Eq(nan, nan)   # mathematical equality
False
>>> nan == nan     # structural equality
True
class sympy.core.numbers.Infinity[源代码][源代码]

正无穷大。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_hermitian
is_polar

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([prec])

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

计算 \(self\)\(other\) 的最大公约数。

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

计算 \(self\)\(other\) 的最小公倍数。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

参考文献

示例

>>> from sympy import oo, exp, limit, Symbol
>>> 1 + oo
oo
>>> 42/oo
0
>>> x = Symbol('x')
>>> limit(exp(x), x, oo)
oo
class sympy.core.numbers.NegativeInfinity[源代码][源代码]

负无穷量。

NegativeInfinity 是一个单例,可以通过 S.NegativeInfinity 访问。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_hermitian
is_polar

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

cofactors(other)

计算 \(self\)\(other\) 的最大公约数和余因子。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([prec])

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

gcd(other)

计算 \(self\)\(other\) 的最大公约数。

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(other, *gens, **args)

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

lcm(other)

计算 \(self\)\(other\) 的最小公倍数。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

参见

Infinity
class sympy.core.numbers.ComplexInfinity[源代码][源代码]

复无穷大。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_hermitian
is_polar

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

天花板

复制

差异

目录

地板

is_hypergeometric

转置

参见

Infinity

示例

>>> from sympy import zoo
>>> zoo + 42
zoo
>>> 42/zoo
0
>>> zoo + zoo
nan
>>> zoo*zoo
zoo
class sympy.core.numbers.Exp1[源代码][源代码]

\(e\) 常数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_polar

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

approximation(number_cls)

返回一个包含 NumberSymbol 值的、具有 number_cls 端点的区间。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

近似区间

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参考文献

示例

>>> from sympy import exp, log, E
>>> E is exp(1)
True
>>> log(E)
1
class sympy.core.numbers.ImaginaryUnit[源代码][源代码]

虚数单位,\(i = \sqrt{-1}\)

I 是一个单例,可以通过 S.I 访问,或者作为 I 导入。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_hermitian
is_polar

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参考文献

示例

>>> from sympy import I, sqrt
>>> sqrt(-1)
I
>>> I*I
-1
>>> 1/I
-I
class sympy.core.numbers.Pi[源代码][源代码]

\(\pi\) 常数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_polar

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

approximation(number_cls)

返回一个包含 NumberSymbol 值的、具有 number_cls 端点的区间。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

近似区间

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参考文献

示例

>>> from sympy import S, pi, oo, sin, exp, integrate, Symbol
>>> S.Pi
pi
>>> pi > 3
True
>>> pi.is_irrational
True
>>> x = Symbol('x')
>>> sin(x + 2*pi)
sin(x)
>>> integrate(exp(-x**2), (x, -oo, oo))
sqrt(pi)
class sympy.core.numbers.EulerGamma[源代码][源代码]

欧拉-马歇罗尼常数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_composite
is_even
is_integer
is_irrational
is_noninteger
is_odd
is_polar
is_prime
is_rational
is_transcendental

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

approximation(number_cls)

返回一个包含 NumberSymbol 值的、具有 number_cls 端点的区间。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

近似区间

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参考文献

示例

>>> from sympy import S
>>> S.EulerGamma.is_irrational
>>> S.EulerGamma > 0
True
>>> S.EulerGamma > 1
False
class sympy.core.numbers.Catalan[源代码][源代码]

卡塔兰常数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_composite
is_even
is_integer
is_irrational
is_noninteger
is_odd
is_polar
is_prime
is_rational
is_transcendental

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

approximation(number_cls)

返回一个包含 NumberSymbol 值的、具有 number_cls 端点的区间。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

近似区间

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参考文献

示例

>>> from sympy import S
>>> S.Catalan.is_irrational
>>> S.Catalan > 0
True
>>> S.Catalan > 1
False
class sympy.core.numbers.GoldenRatio[源代码][源代码]

黄金比例,\(\phi\)

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_polar

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

approximation(number_cls)

返回一个包含 NumberSymbol 值的、具有 number_cls 端点的区间。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

近似区间

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参考文献

示例

>>> from sympy import S
>>> S.GoldenRatio > 1
True
>>> S.GoldenRatio.expand(func=True)
1/2 + sqrt(5)/2
>>> S.GoldenRatio.is_irrational
True
class sympy.core.numbers.TribonacciConstant[源代码][源代码]

Tribonacci 常数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_antihermitian
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_polar

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

approximation(number_cls)

返回一个包含 NumberSymbol 值的、具有 number_cls 端点的区间。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule[, hack2])

伴随

近似区间

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参考文献

示例

>>> from sympy import S
>>> S.TribonacciConstant > 1
True
>>> S.TribonacciConstant.expand(func=True)
1/3 + (19 - 3*sqrt(33))**(1/3)/3 + (3*sqrt(33) + 19)**(1/3)/3
>>> S.TribonacciConstant.is_irrational
True
>>> S.TribonacciConstant.n(20)
1.8392867552141611326
sympy.core.numbers.mod_inverse(a, m)[源代码][源代码]

返回满足 \(a \times c = 1 \pmod{m}\) 的数 \(c\),其中 \(c\)\(m\) 具有相同的符号。如果不存在这样的值,则引发 ValueError。

参考文献

示例

>>> from sympy import mod_inverse, S

假设我们希望找到3模11的乘法逆元\(x\)。这等同于找到满足\(3x = 1 \pmod{11}\)\(x\)。满足此同余关系的一个\(x\)值是4。因为\(3 \times 4 = 12\)\(12 = 1 \pmod{11}\)。这个值由``mod_inverse``返回:

>>> mod_inverse(3, 11)
4
>>> mod_inverse(-3, 11)
7

\(a\)\(m\) 的分子之间存在公因数时,逆不存在:

>>> mod_inverse(2, 4)
Traceback (most recent call last):
...
ValueError: inverse of 2 mod 4 does not exist
>>> mod_inverse(S(2)/7, S(5)/2)
7/2
sympy.core.numbers.equal_valued(x, y)[源代码][源代码]

将普通浮点数视为有理数进行表达式比较。

参考文献

示例

>>> from sympy import S, symbols, Rational, Float
>>> from sympy.core.numbers import equal_valued
>>> equal_valued(1, 2)
False
>>> equal_valued(1, 1)
True

在 SymPy 表达式中,带有浮点数的表达式与带有有理数的相应表达式比较不相等:

>>> x = symbols('x')
>>> x**2 == x**2.0
False

然而,一个单独的浮点数与一个有理数比较时是相等的:

>>> Rational(1, 2) == Float(0.5)
False

在SymPy的未来版本中,这可能会改变,使得Rational和Float比较不相等。此函数提供了当前``==``所期望的行为,以便在未来``==``的行为发生变化时仍可使用。

>>> equal_valued(1, 1.0) # Float vs Rational
True
>>> equal_valued(S(1).n(3), S(1).n(5)) # Floats of different precision
True

力量

class sympy.core.power.Pow(b, e, evaluate=None)[源代码][源代码]

将表达式 x**y 定义为“x 的 y 次方”

自 1.7 版本弃用: 在核心运算符(MulAddPow)中使用不是 Expr 子类的参数已被弃用。详情请参阅 核心操作符不再接受非 Expr 参数

涉及 (0, 1, -1, oo, -oo, I, -I) 的单例定义:

表达式

原因

z**0

toctree 是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。

尽管关于 0**0 的争论存在,参见 [2]。

z**1

z

(-oo)**(-1)

0

(-1)**-1

-1

S.Zero**-1

动物园

这并不完全正确,因为 0**-1 可能是未定义的,但在某些假设基数为正数的上下文中,这是方便的。

1**-1

toctree 是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。

oo**-1

0

0**oo

0

因为对于所有接近 0 的复数 z,z**oo -> 0。

0**-oo

动物园

这并不完全正确,因为 0**oo 可能在正负值之间振荡或在复平面上旋转。然而,当基数为正时,这样做是方便的。

1**oo 1**-oo

nan

因为在各种情况下,lim(x(t),t)=1,lim(y(t),t)=oo(或 -oo),但 lim( x(t)**y(t), t) != 1。参见 [3]。

b**zoo

nan

因为当 z -> 动物园时,b**z 没有限制

(-1)**oo (-1)**(-oo)

nan

由于极限中的振荡。

oo**oo

oo

oo**-oo

0

(-oo)**oo (-oo)**-oo

nan

oo**I (-oo)**I

nan

oo**e 可以被认为是 x**e 对于实数 x 当 x 趋向于 oo 时的极限。如果 e 是 I,那么极限不存在,并且使用 nan 来表示这一点。

oo**(1+I) (-oo)**(1+I)

动物园

如果 e 的实部为正,则 abs(x**e) 的极限为 oo。因此,极限值为 zoo。

oo**(-1+I) -oo**(-1+I)

0

如果 e 的实部为负,则极限为 0。

由于符号计算比浮点计算更灵活,并且我们倾向于永远不会返回不正确的答案,因此我们选择不遵循所有 IEEE 754 标准。这有助于我们在计算极限时避免额外的测试用例代码。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

基础
canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

exp
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
种类

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_base_exp()

返回 self 的 base 和 exp。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

复制

差异

目录

反向

is_hypergeometric

转置

参考文献

as_base_exp()[源代码][源代码]

返回 self 的 base 和 exp。

示例

>>> from sympy import Pow, S
>>> p = Pow(S.Half, 2, evaluate=False)
>>> p.as_base_exp()
(2, -2)
>>> p.args
(1/2, 2)
>>> p.base, p.exp
(1/2, 2)
as_content_primitive(
radical=False,
clear=True,
)[源代码][源代码]

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

示例

>>> from sympy import sqrt
>>> sqrt(4 + 4*sqrt(2)).as_content_primitive()
(2, sqrt(1 + sqrt(2)))
>>> sqrt(3 + 3*sqrt(2)).as_content_primitive()
(1, sqrt(3)*sqrt(1 + sqrt(2)))
>>> from sympy import expand_power_base, powsimp, Mul
>>> from sympy.abc import x, y
>>> ((2*x + 2)**2).as_content_primitive()
(4, (x + 1)**2)
>>> (4**((1 + y)/2)).as_content_primitive()
(2, 4**(y/2))
>>> (3**((1 + y)/2)).as_content_primitive()
(1, 3**((y + 1)/2))
>>> (3**((5 + y)/2)).as_content_primitive()
(9, 3**((y + 1)/2))
>>> eq = 3**(2 + 2*x)
>>> powsimp(eq) == eq
True
>>> eq.as_content_primitive()
(9, 3**(2*x))
>>> powsimp(Mul(*_))
3**(2*x + 2)
>>> eq = (2 + 2*x)**y
>>> s = expand_power_base(eq); s.is_Mul, s
(False, (2*x + 2)**y)
>>> eq.as_content_primitive()
(1, (2*(x + 1))**y)
>>> s = expand_power_base(_[1]); s.is_Mul, s
(True, 2**y*(x + 1)**y)

更多示例请参见 Expr.as_content_primitive 的文档字符串。

mul

class sympy.core.mul.Mul(*args, evaluate=None, _sympify=True)[源代码][源代码]

表示代数域乘法运算的表达式。

自 1.7 版本弃用: 在核心运算符(MulAddPow)中使用不是 Expr 子类的参数已被弃用。详情请参阅 核心操作符不再接受非 Expr 参数

Mul() 的每个参数都必须是 Expr。在 SymPy 中,大多数标量对象上的中缀运算符 * 调用此类。

Mul() 的另一个用途是表示抽象乘法的结构,以便其参数可以被替换以返回不同的类。请参阅示例部分了解这一点。

Mul() 会计算参数,除非传递了 evaluate=False。计算逻辑包括:

  1. 扁平化

    Mul(x, Mul(y, z)) -> Mul(x, y, z)

  2. 身份移除

    Mul(x, 1, y) -> Mul(x, y)

  3. 通过 .as_base_exp() 收集指数

    Mul(x, x**2) -> Pow(x, 3)

  4. 术语排序

    Mul(y, x, 2) -> Mul(2, x, y)

Since multiplication can be vector space operation, arguments may have the different sympy.core.kind.Kind(). Kind of the resulting object is automatically inferred.

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
种类

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps[, rational])

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

as_ordered_factors([order])

将一个表达式转换为有序的因子列表。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

as_real_imag([deep])

as_terms()

将一个表达式转换为项的列表。

as_two_terms()

返回 self 的头和尾。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

flatten(seq)

通过结合相关术语返回交换、非交换和顺序参数。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

make_args(expr)

返回一个元素序列 \(args\) 使得 cls(*args) == expr

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参见

MatMul

示例

>>> from sympy import Mul
>>> from sympy.abc import x, y
>>> Mul(x, 1)
x
>>> Mul(x, x)
x**2

如果传递了 evaluate=False,则结果不会被评估。

>>> Mul(1, 2, evaluate=False)
1*2
>>> Mul(x, x, evaluate=False)
x*x

Mul() 也代表了乘法操作的一般结构。

>>> from sympy import MatrixSymbol
>>> A = MatrixSymbol('A', 2,2)
>>> expr = Mul(x,y).subs({y:A})
>>> expr
x*A
>>> type(expr)
<class 'sympy.matrices.expressions.matmul.MatMul'>
as_coeff_Mul(rational=False)[源代码][源代码]

高效地提取乘积的系数。

as_content_primitive(
radical=False,
clear=True,
)[源代码][源代码]

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

示例

>>> from sympy import sqrt
>>> (-3*sqrt(2)*(2 - 2*sqrt(2))).as_content_primitive()
(6, -sqrt(2)*(1 - sqrt(2)))

更多示例请参见 Expr.as_content_primitive 的文档字符串。

as_ordered_factors(order=None)[源代码][源代码]

将一个表达式转换为有序的因子列表。

示例

>>> from sympy import sin, cos
>>> from sympy.abc import x, y
>>> (2*x*y*sin(x)*cos(x)).as_ordered_factors()
[2, x, y, sin(x), cos(x)]
as_two_terms()[源代码][源代码]

返回 self 的头和尾。

这是获取表达式的头和尾的最有效方法。

  • 如果只需要头部,使用 self.args[0];

  • 如果你想处理尾部的参数,那么使用 self.as_coef_mul(),它会在将尾部视为 Mul 时返回头部和一个包含尾部参数的元组。

  • 如果你想在将 self 视为 Add 时的系数,请使用 self.as_coeff_add()[0]

示例

>>> from sympy.abc import x, y
>>> (3*x*y).as_two_terms()
(3, x*y)
classmethod flatten(seq)[源代码][源代码]

通过结合相关术语返回交换、非交换和顺序参数。

注释

  • 在表达式 a*b*c 中,Python 通过 SymPy 处理为 Mul(Mul(a, b), c)。这可能会产生不良后果。

    >>> from sympy import Mul, sqrt
    >>> from sympy.abc import x, y, z
    >>> 2*(x + 1) # this is the 2-arg Mul behavior
    2*x + 2
    >>> y*(x + 1)*2
    2*y*(x + 1)
    >>> 2*(x + 1)*y # 2-arg result will be obtained first
    y*(2*x + 2)
    >>> Mul(2, x + 1, y) # all 3 args simultaneously processed
    2*y*(x + 1)
    >>> 2*((x + 1)*y) # parentheses can control this behavior
    2*y*(x + 1)
    

    具有复合基数的幂可能找不到一个单一的基数来组合,除非所有参数一次性处理。在这种情况下,可能需要后处理。{参见 https://github.com/sympy/sympy/issues/5728}

    >>> a = sqrt(x*sqrt(y))
    >>> a**3
    (x*sqrt(y))**(3/2)
    >>> Mul(a,a,a)
    (x*sqrt(y))**(3/2)
    >>> a*a*a
    x*sqrt(y)*sqrt(x*sqrt(y))
    >>> _.subs(a.base, z).subs(z, a.base)
    (x*sqrt(y))**(3/2)
    
    • 如果有两个以上的项被相乘,那么所有之前的项将对每个新参数重新处理。因此,如果 abc 都是 Mul 表达式,那么 a*b*c``(或通过 ``*= 构建乘积)将处理 ab 的所有参数两次:一次在计算 a*b 时,另一次在乘以 c 时。

      使用 Mul(a, b, c) 将一次性处理所有参数。

  • Mul 的结果根据参数进行缓存,因此 flatten 只会对 Mul(a, b, c) 调用一次。如果你能构建一个计算,使得参数最有可能重复,那么这可以节省计算答案的时间。例如,假设你有一个 Mul,M,你希望将其除以 d[i] 并乘以 n[i],并且你怀疑 n 中有很多重复项。那么计算 M*n[i]/d[i] 会比 M/d[i]*n[i] 更好,因为每次 n[i] 重复时,乘积 M*n[i] 将不会被展平——将返回缓存值。如果你先除以 d[i]``(并且这些比 ``n[i] 更独特),那么这将创建一个新的 Mul,M/d[i],其参数将在乘以 n[i] 时再次被遍历。

    {参见 https://github.com/sympy/sympy/issues/5706}

    如果缓存被关闭,这种考虑就无关紧要了。

sympy.core.mul.prod(a, start=1)[源代码][源代码]
返回数组 a 中元素的乘积。从整数 1 开始,因此如果只有

如果包含整数,则返回一个整数结果。

示例

>>> from sympy import prod, S
>>> prod(range(3))
0
>>> type(_) is int
True
>>> prod([S(2), 3])
6
>>> _.is_Integer
True

你可以从1以外的其他值开始产品:

>>> prod([1, 2], 3)
6

添加

class sympy.core.add.Add(*args, evaluate=None, _sympify=True)[源代码][源代码]

表示代数群加法运算的表达式。

自 1.7 版本弃用: 在核心运算符(MulAddPow)中使用不是 Expr 子类的参数已被弃用。详情请参阅 核心操作符不再接受非 Expr 参数

Add() 的每个参数都必须是 Expr。在 SymPy 中,大多数标量对象上的中缀运算符 + 调用此类。

Add() 的另一个用途是表示抽象加法的结构,以便其参数可以被替换以返回不同的类。请参阅示例部分了解这一点。

Add() 会计算参数,除非传递了 evaluate=False。计算逻辑包括:

  1. 扁平化

    Add(x, Add(y, z)) -> Add(x, y, z)

  2. 身份移除

    Add(x, 0, y) -> Add(x, y)

  3. 通过 .as_coeff_Mul() 进行系数收集

    Add(x, 2*x) -> Mul(3, x)

  4. 术语排序

    Add(y, x, 2) -> Add(2, x, y)

如果没有传递参数,则返回单位元素 0。如果传递了单个元素,则返回该元素。

注意 Add(*args)sum(args) 更高效,因为它会扁平化参数。sum(a, b, c, ...) 递归地将参数相加为 a + (b + (c + ...)),具有二次复杂度。另一方面,Add(a, b, c, d) 不假设嵌套结构,使得复杂度为线性。

Since addition is group operation, every argument should have the same sympy.core.kind.Kind().

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
种类

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational, deps])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回一个元组 (coeff, args),其中 self 被视为一个 Add,coeff 是数字项,args 是所有其他项的元组。

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

将一个表达式分解为其分子部分和分母部分。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

返回一个表示复数的元组。

as_terms()

将一个表达式转换为项的列表。

as_two_terms()

返回 self 的头和尾。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_leading_order(symbols[, point])

返回首项及其阶数。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

flatten(seq)

接受嵌套的Adds序列“seq”并返回一个扁平化的列表。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

make_args(expr)

返回一个元素序列 \(args\) 使得 cls(*args) == expr

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回 (R, self/R) 其中 Rself 的有理数最大公约数。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

参见

MatAdd

示例

>>> from sympy import Add, I
>>> from sympy.abc import x, y
>>> Add(x, 1)
x + 1
>>> Add(x, x)
2*x
>>> 2*x**2 + 3*x + I*y + 2*y + 2*x/5 + 1.0*y + 1
2*x**2 + 17*x/5 + 3.0*y + I*y + 1

如果传递了 evaluate=False,则结果不会被评估。

>>> Add(1, 2, evaluate=False)
1 + 2
>>> Add(x, x, evaluate=False)
x + x

Add() 也代表了加法操作的一般结构。

>>> from sympy import MatrixSymbol
>>> A,B = MatrixSymbol('A', 2,2), MatrixSymbol('B', 2,2)
>>> expr = Add(x,y).subs({x:A, y:B})
>>> expr
A + B
>>> type(expr)
<class 'sympy.matrices.expressions.matadd.MatAdd'>

注意,打印机不按参数顺序显示。

>>> Add(x, 1)
x + 1
>>> Add(x, 1).args
(1, x)
as_coeff_Add(rational=False, deps=None)[源代码][源代码]

高效地提取求和的系数。

as_coeff_add(*deps)[源代码][源代码]

返回一个元组 (coeff, args),其中 self 被视为一个 Add,coeff 是数字项,args 是所有其他项的元组。

示例

>>> from sympy.abc import x
>>> (7 + 3*x).as_coeff_add()
(7, (3*x,))
>>> (7*x).as_coeff_add()
(0, (7*x,))
as_content_primitive(
radical=False,
clear=True,
)[源代码][源代码]

返回元组 (R, self/R),其中 R 是从 self 中提取的正有理数。如果 radical 为 True(默认是 False),那么常见的根号将被移除并作为原始表达式的因子包含在内。

示例

>>> from sympy import sqrt
>>> (3 + 3*sqrt(2)).as_content_primitive()
(3, 1 + sqrt(2))

激进的内容也可以从原始内容中分离出来:

>>> (2*sqrt(2) + 4*sqrt(10)).as_content_primitive(radical=True)
(2, sqrt(2)*(1 + 2*sqrt(5)))

更多示例请参见 Expr.as_content_primitive 的文档字符串。

as_numer_denom()[源代码][源代码]

将一个表达式分解为其分子部分和分母部分。

示例

>>> from sympy.abc import x, y, z
>>> (x*y/z).as_numer_denom()
(x*y, z)
>>> (x*(y + 1)/y**7).as_numer_denom()
(x*(y + 1), y**7)
as_real_imag(deep=True, **hints)[源代码][源代码]

返回一个表示复数的元组。

示例

>>> from sympy import I
>>> (7 + 9*I).as_real_imag()
(7, 9)
>>> ((1 + I)/(1 - I)).as_real_imag()
(0, 1)
>>> ((1 + 2*I)*(1 + 3*I)).as_real_imag()
(-5, 5)
as_two_terms()[源代码][源代码]

返回 self 的头和尾。

这是获取表达式的头和尾的最有效方法。

  • 如果只需要头部,使用 self.args[0];

  • 如果你想处理尾部的参数,那么使用 self.as_coef_add(),它会在将尾部视为 Add 时返回头部和一个包含尾部参数的元组。

  • 如果你想在将 self 视为 Mul 时获取系数,请使用 self.as_coeff_mul()[0]

>>> from sympy.abc import x, y
>>> (3*x - 2*y + 5).as_two_terms()
(5, 3*x - 2*y)
extract_leading_order(symbols, point=None)[源代码][源代码]

返回首项及其阶数。

示例

>>> from sympy.abc import x
>>> (x + 1 + 1/x**5).extract_leading_order(x)
((x**(-5), O(x**(-5))),)
>>> (1 + x).extract_leading_order(x)
((1, O(1)),)
>>> (x + x**2).extract_leading_order(x)
((x, O(x)),)
classmethod flatten(seq)[源代码][源代码]

接受嵌套的Adds序列“seq”并返回一个扁平化的列表。

返回值: (交换部分, 非交换部分, 顺序符号)

应用结合律,所有项在加法上都是可交换的。

注意:0 的移除已经由 AssocOp.__new__ 处理。

primitive()[源代码][源代码]

返回 (R, self/R) 其中 Rself 的有理数最大公约数。

R 仅从每一项的领先系数中收集。

示例

>>> from sympy.abc import x, y
>>> (2*x + 4*y).primitive()
(2, x + 2*y)
>>> (2*x/3 + 4*y/9).primitive()
(2/9, 3*x + 2*y)
>>> (2*x/3 + 4.2*y).primitive()
(1/3, 2*x + 12.6*y)

不执行术语因子的子处理:

>>> ((2 + 2*x)*x + 2).primitive()
(1, x*(2*x + 2) + 2)

递归处理可以通过 as_content_primitive() 方法完成:

>>> ((2 + 2*x)*x + 2).as_content_primitive()
(2, x*(x + 1) + 1)

另见:polytools.py 中的 primitive() 函数

模块

class sympy.core.mod.Mod(p, q)[源代码][源代码]

表示对符号表达式进行取模操作。

参数:
p表达式

股息。

q表达式

除数。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

eval(p, q)

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

fdiff([argindex])

返回函数的导数。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

is_singular(a)

测试参数是否为本质奇点或分支点,或者函数是否为非全纯函数。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(**_)

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

注释

使用的约定与Python相同:余数总是与除数具有相同的符号。

许多对象可以通过 n 进行模运算,其速度远快于直接(或完全)求值。为此,需要 evaluate=False 来防止急切求值:

>>> from sympy import binomial, factorial, Mod, Pow
>>> Mod(Pow(2, 10**16, evaluate=False), 97)
61
>>> Mod(factorial(10**9, evaluate=False), 10**9 + 9)
712524808
>>> Mod(binomial(10**18, 10**12, evaluate=False), (10**5 + 3)**2)
3744312326

示例

>>> from sympy.abc import x, y
>>> x**2 % y
Mod(x**2, y)
>>> _.subs({x: 5, y: 6})
1

关系

class sympy.core.relational.Relational(lhs, rhs, rop=None, **assumptions)[源代码][源代码]

所有关系类型的基类。

参数:
ropstr 或 None

指示要实例化的子类。有效值可以在 Relational.ValidRelationOperator 的键中找到。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

二进制符号
canonical

通过在右侧放置一个数字,规范地移除符号或以规范顺序排列参数,返回关系式的规范形式。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
lhs

关系的左侧。

negated

返回否定关系。

reversed

返回反转边的关系。

reversedsign

返回关系与符号反转。

rhs

关系的右侧。

strict

返回不等式的严格版本或自身

weak

返回不等式的非严格版本或自身

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_set()

重写布尔表达式为实数集的形式。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果关系的双方在数学上是相同的,并且关系的类型也相同,则返回 True。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

展开

is_hypergeometric

to_nnf

示例

>>> from sympy import Rel
>>> from sympy.abc import x, y
>>> Rel(y, x + x**2, '==')
Eq(y, x**2 + x)

关系类型可以在创建时使用 rop 定义。现有表达式的关系类型可以通过其 rel_op 属性获取。以下是所有关系类型的表格,以及它们的 roprel_op 值:

关系

rop

rel_op

Equality

==eqNone

==

Unequality

!=ne

!=

GreaterThan

>=ge

>=

LessThan

<=le

<=

StrictGreaterThan

>gt

>

StrictLessThan

<lt

<

例如,将 rop 设置为 == 会生成一个 Equality 关系,即 Eq()。同样,将 rop 设置为 eq,或者不指定 rop,也会产生相同的结果。也就是说,下面前三个 Rel() 都会产生相同的结果。使用表格中不同行的 rop 会产生不同类型的关系。例如,下面第四个使用 lt 作为 ropRel() 会产生一个 StrictLessThan 不等式:

>>> from sympy import Rel
>>> from sympy.abc import x, y
>>> Rel(y, x + x**2, '==')
    Eq(y, x**2 + x)
>>> Rel(y, x + x**2, 'eq')
    Eq(y, x**2 + x)
>>> Rel(y, x + x**2)
    Eq(y, x**2 + x)
>>> Rel(y, x + x**2, 'lt')
    y < x**2 + x

要获取现有表达式的关系类型,请获取其 rel_op 属性。例如,对于上述 Equality 关系,rel_op==,而对于上述严格小于不等式,rel_op<

>>> from sympy import Rel
>>> from sympy.abc import x, y
>>> my_equality = Rel(y, x + x**2, '==')
>>> my_equality.rel_op
    '=='
>>> my_inequality = Rel(y, x + x**2, 'lt')
>>> my_inequality.rel_op
    '<'
property canonical

通过在右侧放置一个数字,规范地移除符号或以规范顺序排列参数,返回关系式的规范形式。不尝试进行其他简化。

示例

>>> from sympy.abc import x, y
>>> x < 2
x < 2
>>> _.reversed.canonical
x < 2
>>> (-y < x).canonical
x > -y
>>> (-y > x).canonical
x < -y
>>> (-y < -x).canonical
x < y

规范化是递归应用的:

>>> from sympy import Eq
>>> Eq(x < y, y > x).canonical
True
equals(other, failing_expression=False)[源代码][源代码]

如果关系的双方在数学上是相同的,并且关系的类型相同,则返回 True。如果 failing_expression 为 True,则返回其真值未知的表达式。

property lhs

关系的左侧。

property negated

返回否定关系。

注释

这或多或少与 ~/Not 的工作方式相同。不同之处在于 negated 即使在 evaluate=False 时也返回关系。因此,这在检查例如与现有关系相反的关系时非常有用,因为它不会受到 \(evaluate\) 标志的影响。

示例

>>> from sympy import Eq
>>> from sympy.abc import x
>>> Eq(x, 1)
Eq(x, 1)
>>> _.negated
Ne(x, 1)
>>> x < 1
x < 1
>>> _.negated
x >= 1
property reversed

返回反转边的关系。

示例

>>> from sympy import Eq
>>> from sympy.abc import x
>>> Eq(x, 1)
Eq(x, 1)
>>> _.reversed
Eq(1, x)
>>> x < 1
x < 1
>>> _.reversed
1 > x
property reversedsign

返回关系与符号反转。

示例

>>> from sympy import Eq
>>> from sympy.abc import x
>>> Eq(x, 1)
Eq(x, 1)
>>> _.reversedsign
Eq(-x, -1)
>>> x < 1
x < 1
>>> _.reversedsign
-x > -1
property rhs

关系的右侧。

property strict

返回不等式的严格版本或自身

示例

>>> from sympy.abc import x
>>> (x <= 1).strict
x < 1
>>> _.strict
x < 1
property weak

返回不等式的非严格版本或自身

示例

>>> from sympy.abc import x
>>> (x < 1).weak
x <= 1
>>> _.weak
x <= 1
sympy.core.relational.Rel[源代码]

Relational 的别名

sympy.core.relational.Eq[源代码]

Equality 的别名

sympy.core.relational.Ne[源代码]

Unequality 的别名

sympy.core.relational.Lt[源代码]

StrictLessThan 的别名

sympy.core.relational.Le[源代码]

LessThan 的别名

sympy.core.relational.Gt[源代码]

StrictGreaterThan 的别名

sympy.core.relational.Ge[源代码]

GreaterThan 的别名

class sympy.core.relational.Equality(lhs, rhs, **options)[源代码][源代码]

两个对象之间的相等关系。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

二进制符号
canonical

通过在右侧放置一个数字,规范地移除符号或以规范顺序排列参数,返回关系式的规范形式。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
lhs

关系的左侧。

negated

返回否定关系。

reversed

返回反转边的关系。

reversedsign

返回关系与符号反转。

rhs

关系的右侧。

strict

返回不等式的严格版本或自身

weak

返回不等式的非严格版本或自身

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_poly(*gens, **kwargs)

返回 lhs-rhs 作为一个 Poly

as_set()

重写布尔表达式为实数集的形式。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果关系的双方在数学上是相同的,并且关系的类型也相同,则返回 True。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

展开

is_hypergeometric

to_nnf

参见

sympy.logic.boolalg.Equivalent

用于表示两个布尔表达式之间的相等性

注释

Python 将 1 和 True(以及 0 和 False)视为相等;SymPy 则不然。整数将始终与布尔值比较为不相等:

>>> Eq(True, 1), True == 1
(False, True)

这个类与 == 运算符不同。== 运算符测试两个表达式之间的完全结构相等性;这个类在数学上比较表达式。

如果任一对象定义了一个 _eval_Eq 方法,它可以用来替代默认算法。如果 lhs._eval_Eq(rhs)rhs._eval_Eq(lhs) 返回的不是 None,那么该返回值将替代 Equality。如果 _eval_Eq 返回 None,将像往常一样创建一个 Equality 对象。

由于这个对象已经是一个表达式,如果尝试从 Eq(x, y) 创建 \(x - y\),它不会响应 as_expr 方法。如果 eq = Eq(x, y),那么写 \(eq.lhs - eq.rhs\) 以得到 x - y

自 1.5 版本弃用: Eq(expr) 带有一个参数是 Eq(expr, 0) 的简写形式,但这种行为已被弃用,并将在SymPy的未来版本中移除。

示例

>>> from sympy import Eq, simplify, exp, cos
>>> from sympy.abc import x, y
>>> Eq(y, x + x**2)
Eq(y, x**2 + x)
>>> Eq(2, 5)
False
>>> Eq(2, 5, evaluate=False)
Eq(2, 5)
>>> _.doit()
False
>>> Eq(exp(x), exp(x).rewrite(cos))
Eq(exp(x), sinh(x) + cosh(x))
>>> simplify(_)
True
as_poly(*gens, **kwargs)[源代码][源代码]

返回 lhs-rhs 作为一个 Poly

示例

>>> from sympy import Eq
>>> from sympy.abc import x
>>> Eq(x**2, 1).as_poly(x)
Poly(x**2 - 1, x, domain='ZZ')
integrate(*args, **kwargs)[源代码][源代码]

请参阅 sympy.integrals 中的 integrate 函数。

class sympy.core.relational.GreaterThan(lhs, rhs, **options)[源代码][源代码]

不等式的类表示。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

二进制符号
canonical

通过在右侧放置一个数字,规范地移除符号或以规范顺序排列参数,返回关系式的规范形式。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

gts
is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
lhs

关系的左侧。

lts
negated

返回否定关系。

reversed

返回反转边的关系。

reversedsign

返回关系与符号反转。

rhs

关系的右侧。

strict

返回不等式的严格版本或自身

weak

返回不等式的非严格版本或自身

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_set()

重写布尔表达式为实数集的形式。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果关系的双方在数学上是相同的,并且关系的类型也相同,则返回 True。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

展开

is_hypergeometric

to_nnf

注释

在使用Python的操作符时,有几个需要注意的“陷阱”。

第一个是,你写的并不总是你得到的:

>>> 1 < x
x > 1

由于Python解析语句的顺序,它可能不会立即找到两个可比较的对象。当评估 1 < x 时,Python识别出数字1是原生数字,而x*不是*。因为一个原生Python数字不知道如何与一个SymPy对象进行比较,Python将尝试反射操作,x > 1,这就是被评估并因此返回的形式。

如果语句的顺序很重要(例如,对于控制台的视觉输出),可以通过几种方式解决这个问题:

  1. 在比较之前“sympify”字面量

>>> S(1) < x
1 < x

(2) use one of the wrappers or less succinct methods described above

>>> Lt(1, x)
1 < x
>>> Relational(1, x, "<")
1 < x

第二个需要注意的地方涉及到在关系测试中编写相等测试,当测试的一侧或两侧涉及一个字面关系时:

>>> e = x < 1; e
x < 1
>>> e == e  # neither side is a literal
True
>>> e == x < 1  # expecting True, too
False
>>> e != x < 1  # expecting False
x < 1
>>> x < 1 != x < 1  # expecting False or the same thing as before
Traceback (most recent call last):
...
TypeError: cannot determine truth value of Relational

此情况的解决方案是将字面关系运算符用括号括起来:

>>> e == (x < 1)
True
>>> e != (x < 1)
False
>>> (x < 1) != (x < 1)
False

第三个陷阱涉及不包含 ==!= 的链式不等式。偶尔,人们可能会想写:

>>> e = x < y < z
Traceback (most recent call last):
...
TypeError: symbolic boolean expression has no truth value.

由于Python [1] 的实现细节或决策,SymPy无法使用该语法创建链式不等式,因此必须使用And:

>>> e = And(x < y, y < z)
>>> type( e )
And
>>> e
(x < y) & (y < z)

虽然这也可以用 ‘&’ 运算符完成,但不能用 ‘and’ 运算符完成:

>>> (x < y) & (y < z)
(x < y) & (y < z)
>>> (x < y) and (y < z)
Traceback (most recent call last):
...
TypeError: cannot determine truth value of Relational
[1]

这个实现细节是,Python 没有提供可靠的方法来确定正在构建链式不等式。链式比较运算符是成对评估的,使用“与”逻辑(参见 https://docs.python.org/3/reference/expressions.html#not-in)。这是以一种高效的方式完成的,因此每个被比较的对象只评估一次,并且比较可以短路。例如,1 > 2 > 3 被 Python 评估为 (1 > 2) and (2 > 3)and 运算符将每一侧强制转换为布尔值,当短路时返回对象本身。–Than 运算符的布尔值会故意引发 TypeError,因为 SymPy 无法确定符号表达式的数学顺序。因此,如果我们计算 x > y > z,其中 xyz 是符号,Python 将语句(大致)转换为以下步骤:

  1. x > y > z

  2. (x > y) 且 (y > z)

  3. (GreaterThanObject) 和 (y > z)

  4. (GreaterThanObject.__bool__()) 并且 (y > z)

  5. 类型错误

由于在第2步中添加了 and ,该语句被转换为一个弱三元语句,并且第一个对象的 __bool__ 方法将引发 TypeError。因此,创建链式不等式是不可能的。

在Python中,无法重载 and 运算符,也无法控制其短路行为,因此无法使类似 x > y > z 的表达式工作。曾有一个PEP试图改变这一点,PEP 335,但它在2012年3月被正式关闭。

示例

通常不会直接实例化这些类,而是使用各种便捷方法:

>>> for f in [Ge, Gt, Le, Lt]:  # convenience wrappers
...     print(f(x, 2))
x >= 2
x > 2
x <= 2
x < 2

另一个选项是直接使用 Python 的不等式运算符 (>=, >, <=, <)。它们相对于 Ge, Gt, Le, 和 Lt 的主要优势在于,可以编写一个更“数学化”的表达式,而不是在数学表达式中混入奇怪的函数调用。然而,有一些(较小的)注意事项需要注意(搜索 ‘gotcha’,见下文)。

>>> x >= 2
x >= 2
>>> _ == Ge(x, 2)
True

然而,以不那么简洁和方便的方式实例化一个 *Than 类也是完全有效的:

>>> Rel(x, 1, ">")
x > 1
>>> Relational(x, 1, ">")
x > 1
>>> StrictGreaterThan(x, 1)
x > 1
>>> GreaterThan(x, 1)
x >= 1
>>> LessThan(x, 1)
x <= 1
>>> StrictLessThan(x, 1)
x < 1
class sympy.core.relational.LessThan(lhs, rhs, **options)[源代码][源代码]

不等式的类表示。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

二进制符号
canonical

通过在右侧放置一个数字,规范地移除符号或以规范顺序排列参数,返回关系式的规范形式。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

gts
is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
lhs

关系的左侧。

lts
negated

返回否定关系。

reversed

返回反转边的关系。

reversedsign

返回关系与符号反转。

rhs

关系的右侧。

strict

返回不等式的严格版本或自身

weak

返回不等式的非严格版本或自身

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_set()

重写布尔表达式为实数集的形式。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果关系的双方在数学上是相同的,并且关系的类型也相同,则返回 True。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

展开

is_hypergeometric

to_nnf

注释

在使用Python的操作符时,有几个需要注意的“陷阱”。

第一个是,你写的并不总是你得到的:

>>> 1 < x
x > 1

由于Python解析语句的顺序,它可能不会立即找到两个可比较的对象。当评估 1 < x 时,Python识别出数字1是原生数字,而x*不是*。因为一个原生Python数字不知道如何与一个SymPy对象进行比较,Python将尝试反射操作,x > 1,这就是被评估并因此返回的形式。

如果语句的顺序很重要(例如,对于控制台的视觉输出),可以通过几种方式解决这个问题:

  1. 在比较之前“sympify”字面量

>>> S(1) < x
1 < x

(2) use one of the wrappers or less succinct methods described above

>>> Lt(1, x)
1 < x
>>> Relational(1, x, "<")
1 < x

第二个需要注意的地方涉及到在关系测试中编写相等测试,当测试的一侧或两侧涉及一个字面关系时:

>>> e = x < 1; e
x < 1
>>> e == e  # neither side is a literal
True
>>> e == x < 1  # expecting True, too
False
>>> e != x < 1  # expecting False
x < 1
>>> x < 1 != x < 1  # expecting False or the same thing as before
Traceback (most recent call last):
...
TypeError: cannot determine truth value of Relational

此情况的解决方案是将字面关系运算符用括号括起来:

>>> e == (x < 1)
True
>>> e != (x < 1)
False
>>> (x < 1) != (x < 1)
False

第三个陷阱涉及不包含 ==!= 的链式不等式。偶尔,人们可能会想写:

>>> e = x < y < z
Traceback (most recent call last):
...
TypeError: symbolic boolean expression has no truth value.

由于Python [1] 的实现细节或决策,SymPy无法使用该语法创建链式不等式,因此必须使用And:

>>> e = And(x < y, y < z)
>>> type( e )
And
>>> e
(x < y) & (y < z)

虽然这也可以用 ‘&’ 运算符完成,但不能用 ‘and’ 运算符完成:

>>> (x < y) & (y < z)
(x < y) & (y < z)
>>> (x < y) and (y < z)
Traceback (most recent call last):
...
TypeError: cannot determine truth value of Relational
[1]

这个实现细节是,Python 没有提供可靠的方法来确定正在构建链式不等式。链式比较运算符是成对评估的,使用“与”逻辑(参见 https://docs.python.org/3/reference/expressions.html#not-in)。这是以一种高效的方式完成的,因此每个被比较的对象只评估一次,并且比较可以短路。例如,1 > 2 > 3 被 Python 评估为 (1 > 2) and (2 > 3)and 运算符将每一侧强制转换为布尔值,当短路时返回对象本身。–Than 运算符的布尔值会故意引发 TypeError,因为 SymPy 无法确定符号表达式的数学顺序。因此,如果我们计算 x > y > z,其中 xyz 是符号,Python 将语句(大致)转换为以下步骤:

  1. x > y > z

  2. (x > y) 且 (y > z)

  3. (GreaterThanObject) 和 (y > z)

  4. (GreaterThanObject.__bool__()) 并且 (y > z)

  5. 类型错误

由于在第2步中添加了 and ,该语句被转换为一个弱三元语句,并且第一个对象的 __bool__ 方法将引发 TypeError。因此,创建链式不等式是不可能的。

在Python中,无法重载 and 运算符,也无法控制其短路行为,因此无法使类似 x > y > z 的表达式工作。曾有一个PEP试图改变这一点,PEP 335,但它在2012年3月被正式关闭。

示例

通常不会直接实例化这些类,而是使用各种便捷方法:

>>> for f in [Ge, Gt, Le, Lt]:  # convenience wrappers
...     print(f(x, 2))
x >= 2
x > 2
x <= 2
x < 2

另一个选项是直接使用 Python 的不等式运算符 (>=, >, <=, <)。它们相对于 Ge, Gt, Le, 和 Lt 的主要优势在于,可以编写一个更“数学化”的表达式,而不是在数学表达式中混入奇怪的函数调用。然而,有一些(较小的)注意事项需要注意(搜索 ‘gotcha’,见下文)。

>>> x >= 2
x >= 2
>>> _ == Ge(x, 2)
True

然而,以不那么简洁和方便的方式实例化一个 *Than 类也是完全有效的:

>>> Rel(x, 1, ">")
x > 1
>>> Relational(x, 1, ">")
x > 1
>>> StrictGreaterThan(x, 1)
x > 1
>>> GreaterThan(x, 1)
x >= 1
>>> LessThan(x, 1)
x <= 1
>>> StrictLessThan(x, 1)
x < 1
class sympy.core.relational.Unequality(lhs, rhs, **options)[源代码][源代码]

两个对象之间的不等关系。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

二进制符号
canonical

通过在右侧放置一个数字,规范地移除符号或以规范顺序排列参数,返回关系式的规范形式。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
lhs

关系的左侧。

negated

返回否定关系。

reversed

返回反转边的关系。

reversedsign

返回关系与符号反转。

rhs

关系的右侧。

strict

返回不等式的严格版本或自身

weak

返回不等式的非严格版本或自身

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_set()

重写布尔表达式为实数集的形式。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果关系的双方在数学上是相同的,并且关系的类型也相同,则返回 True。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

展开

is_hypergeometric

to_nnf

参见

Equality

注释

这个类与 != 运算符不同。 != 运算符测试两个表达式之间的精确结构相等性;这个类从数学上比较表达式。

此类实际上是 Equality 的逆操作。因此,它使用相同的算法,包括任何可用的 \(_eval_Eq\) 方法。

示例

>>> from sympy import Ne
>>> from sympy.abc import x, y
>>> Ne(y, x+x**2)
Ne(y, x**2 + x)
class sympy.core.relational.StrictGreaterThan(lhs, rhs, **options)[源代码][源代码]

不等式的类表示。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

二进制符号
canonical

通过在右侧放置一个数字,规范地移除符号或以规范顺序排列参数,返回关系式的规范形式。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

gts
is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
lhs

关系的左侧。

lts
negated

返回否定关系。

reversed

返回反转边的关系。

reversedsign

返回关系与符号反转。

rhs

关系的右侧。

strict

返回不等式的严格版本或自身

weak

返回不等式的非严格版本或自身

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_set()

重写布尔表达式为实数集的形式。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果关系的双方在数学上是相同的,并且关系的类型也相同,则返回 True。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

展开

is_hypergeometric

to_nnf

注释

在使用Python的操作符时,有几个需要注意的“陷阱”。

第一个是,你写的并不总是你得到的:

>>> 1 < x
x > 1

由于Python解析语句的顺序,它可能不会立即找到两个可比较的对象。当评估 1 < x 时,Python识别出数字1是原生数字,而x*不是*。因为一个原生Python数字不知道如何与一个SymPy对象进行比较,Python将尝试反射操作,x > 1,这就是被评估并因此返回的形式。

如果语句的顺序很重要(例如,对于控制台的视觉输出),可以通过几种方式解决这个问题:

  1. 在比较之前“sympify”字面量

>>> S(1) < x
1 < x

(2) use one of the wrappers or less succinct methods described above

>>> Lt(1, x)
1 < x
>>> Relational(1, x, "<")
1 < x

第二个需要注意的地方涉及到在关系测试中编写相等测试,当测试的一侧或两侧涉及一个字面关系时:

>>> e = x < 1; e
x < 1
>>> e == e  # neither side is a literal
True
>>> e == x < 1  # expecting True, too
False
>>> e != x < 1  # expecting False
x < 1
>>> x < 1 != x < 1  # expecting False or the same thing as before
Traceback (most recent call last):
...
TypeError: cannot determine truth value of Relational

此情况的解决方案是将字面关系运算符用括号括起来:

>>> e == (x < 1)
True
>>> e != (x < 1)
False
>>> (x < 1) != (x < 1)
False

第三个陷阱涉及不包含 ==!= 的链式不等式。偶尔,人们可能会想写:

>>> e = x < y < z
Traceback (most recent call last):
...
TypeError: symbolic boolean expression has no truth value.

由于Python [1] 的实现细节或决策,SymPy无法使用该语法创建链式不等式,因此必须使用And:

>>> e = And(x < y, y < z)
>>> type( e )
And
>>> e
(x < y) & (y < z)

虽然这也可以用 ‘&’ 运算符完成,但不能用 ‘and’ 运算符完成:

>>> (x < y) & (y < z)
(x < y) & (y < z)
>>> (x < y) and (y < z)
Traceback (most recent call last):
...
TypeError: cannot determine truth value of Relational
[1]

这个实现细节是,Python 没有提供可靠的方法来确定正在构建链式不等式。链式比较运算符是成对评估的,使用“与”逻辑(参见 https://docs.python.org/3/reference/expressions.html#not-in)。这是以一种高效的方式完成的,因此每个被比较的对象只评估一次,并且比较可以短路。例如,1 > 2 > 3 被 Python 评估为 (1 > 2) and (2 > 3)and 运算符将每一侧强制转换为布尔值,当短路时返回对象本身。–Than 运算符的布尔值会故意引发 TypeError,因为 SymPy 无法确定符号表达式的数学顺序。因此,如果我们计算 x > y > z,其中 xyz 是符号,Python 将语句(大致)转换为以下步骤:

  1. x > y > z

  2. (x > y) 且 (y > z)

  3. (GreaterThanObject) 和 (y > z)

  4. (GreaterThanObject.__bool__()) 并且 (y > z)

  5. 类型错误

由于在第2步中添加了 and ,该语句被转换为一个弱三元语句,并且第一个对象的 __bool__ 方法将引发 TypeError。因此,创建链式不等式是不可能的。

在Python中,无法重载 and 运算符,也无法控制其短路行为,因此无法使类似 x > y > z 的表达式工作。曾有一个PEP试图改变这一点,PEP 335,但它在2012年3月被正式关闭。

示例

通常不会直接实例化这些类,而是使用各种便捷方法:

>>> for f in [Ge, Gt, Le, Lt]:  # convenience wrappers
...     print(f(x, 2))
x >= 2
x > 2
x <= 2
x < 2

另一个选项是直接使用 Python 的不等式运算符 (>=, >, <=, <)。它们相对于 Ge, Gt, Le, 和 Lt 的主要优势在于,可以编写一个更“数学化”的表达式,而不是在数学表达式中混入奇怪的函数调用。然而,有一些(较小的)注意事项需要注意(搜索 ‘gotcha’,见下文)。

>>> x >= 2
x >= 2
>>> _ == Ge(x, 2)
True

然而,以不那么简洁和方便的方式实例化一个 *Than 类也是完全有效的:

>>> Rel(x, 1, ">")
x > 1
>>> Relational(x, 1, ">")
x > 1
>>> StrictGreaterThan(x, 1)
x > 1
>>> GreaterThan(x, 1)
x >= 1
>>> LessThan(x, 1)
x <= 1
>>> StrictLessThan(x, 1)
x < 1
class sympy.core.relational.StrictLessThan(lhs, rhs, **options)[源代码][源代码]

不等式的类表示。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

二进制符号
canonical

通过在右侧放置一个数字,规范地移除符号或以规范顺序排列参数,返回关系式的规范形式。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

gts
is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
lhs

关系的左侧。

lts
negated

返回否定关系。

reversed

返回反转边的关系。

reversedsign

返回关系与符号反转。

rhs

关系的右侧。

strict

返回不等式的严格版本或自身

weak

返回不等式的非严格版本或自身

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_set()

重写布尔表达式为实数集的形式。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果关系的双方在数学上是相同的,并且关系的类型也相同,则返回 True。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

展开

is_hypergeometric

to_nnf

注释

在使用Python的操作符时,有几个需要注意的“陷阱”。

第一个是,你写的并不总是你得到的:

>>> 1 < x
x > 1

由于Python解析语句的顺序,它可能不会立即找到两个可比较的对象。当评估 1 < x 时,Python识别出数字1是原生数字,而x*不是*。因为一个原生Python数字不知道如何与一个SymPy对象进行比较,Python将尝试反射操作,x > 1,这就是被评估并因此返回的形式。

如果语句的顺序很重要(例如,对于控制台的视觉输出),可以通过几种方式解决这个问题:

  1. 在比较之前“sympify”字面量

>>> S(1) < x
1 < x

(2) use one of the wrappers or less succinct methods described above

>>> Lt(1, x)
1 < x
>>> Relational(1, x, "<")
1 < x

第二个需要注意的地方涉及到在关系测试中编写相等测试,当测试的一侧或两侧涉及一个字面关系时:

>>> e = x < 1; e
x < 1
>>> e == e  # neither side is a literal
True
>>> e == x < 1  # expecting True, too
False
>>> e != x < 1  # expecting False
x < 1
>>> x < 1 != x < 1  # expecting False or the same thing as before
Traceback (most recent call last):
...
TypeError: cannot determine truth value of Relational

此情况的解决方案是将字面关系运算符用括号括起来:

>>> e == (x < 1)
True
>>> e != (x < 1)
False
>>> (x < 1) != (x < 1)
False

第三个陷阱涉及不包含 ==!= 的链式不等式。偶尔,人们可能会想写:

>>> e = x < y < z
Traceback (most recent call last):
...
TypeError: symbolic boolean expression has no truth value.

由于Python的实现细节或决策 [1],SymPy无法使用该语法创建链式不等式,因此必须使用And:

>>> e = And(x < y, y < z)
>>> type( e )
And
>>> e
(x < y) & (y < z)

虽然这也可以用 ‘&’ 运算符完成,但不能用 ‘and’ 运算符完成:

>>> (x < y) & (y < z)
(x < y) & (y < z)
>>> (x < y) and (y < z)
Traceback (most recent call last):
...
TypeError: cannot determine truth value of Relational
[1]

这个实现细节是,Python 没有提供可靠的方法来确定正在构建链式不等式。链式比较运算符是成对评估的,使用“与”逻辑(参见 https://docs.python.org/3/reference/expressions.html#not-in)。这是以一种高效的方式完成的,因此每个被比较的对象只评估一次,并且比较可以短路。例如,1 > 2 > 3 被 Python 评估为 (1 > 2) and (2 > 3)and 运算符将每一侧强制转换为布尔值,当短路时返回对象本身。–Than 运算符的布尔值会故意引发 TypeError,因为 SymPy 无法确定符号表达式的数学顺序。因此,如果我们计算 x > y > z,其中 xyz 是符号,Python 将语句(大致)转换为以下步骤:

  1. x > y > z

  2. (x > y) 且 (y > z)

  3. (GreaterThanObject) 和 (y > z)

  4. (GreaterThanObject.__bool__()) 并且 (y > z)

  5. 类型错误

由于在第2步中添加了 and ,该语句被转换为一个弱三元语句,并且第一个对象的 __bool__ 方法将引发 TypeError。因此,创建链式不等式是不可能的。

在Python中,无法重载 and 运算符,也无法控制其短路行为,因此无法使类似 x > y > z 的表达式工作。曾有一个PEP试图改变这一点,PEP 335,但它在2012年3月被正式关闭。

示例

通常不会直接实例化这些类,而是使用各种便捷方法:

>>> for f in [Ge, Gt, Le, Lt]:  # convenience wrappers
...     print(f(x, 2))
x >= 2
x > 2
x <= 2
x < 2

另一个选项是直接使用 Python 的不等式运算符 (>=, >, <=, <)。它们相对于 Ge, Gt, Le, 和 Lt 的主要优势在于,可以编写一个更“数学化”的表达式,而不是在数学表达式中混入奇怪的函数调用。然而,有一些(较小的)注意事项需要注意(搜索 ‘gotcha’,见下文)。

>>> x >= 2
x >= 2
>>> _ == Ge(x, 2)
True

然而,以不那么简洁和方便的方式实例化一个 *Than 类也是完全有效的:

>>> Rel(x, 1, ">")
x > 1
>>> Relational(x, 1, ">")
x > 1
>>> StrictGreaterThan(x, 1)
x > 1
>>> GreaterThan(x, 1)
x >= 1
>>> LessThan(x, 1)
x <= 1
>>> StrictLessThan(x, 1)
x < 1

多维

class sympy.core.multidimensional.vectorize(*mdargs)[源代码][源代码]

将接受标量的函数泛化为接受多维参数。

方法

__call__(f)

返回一个包装器,用于处理多维参数的一维函数。

示例

>>> from sympy import vectorize, diff, sin, symbols, Function
>>> x, y, z = symbols('x y z')
>>> f, g, h = list(map(Function, 'fgh'))
>>> @vectorize(0)
... def vsin(x):
...     return sin(x)
>>> vsin([1, x, y])
[sin(1), sin(x), sin(y)]
>>> @vectorize(0, 1)
... def vdiff(f, y):
...     return diff(f, y)
>>> vdiff([f(x, y, z), g(x, y, z), h(x, y, z)], [x, y, z])
[[Derivative(f(x, y, z), x), Derivative(f(x, y, z), y), Derivative(f(x, y, z), z)], [Derivative(g(x, y, z), x), Derivative(g(x, y, z), y), Derivative(g(x, y, z), z)], [Derivative(h(x, y, z), x), Derivative(h(x, y, z), y), Derivative(h(x, y, z), z)]]

函数

class sympy.core.function.Lambda(signature, expr)[源代码][源代码]

Lambda(x, expr) 表示一个类似于 Python 中 ‘lambda x: expr’ 的 lambda 函数。多个变量的函数写作 Lambda((x, y, …), expr)。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

bound_symbols

函数内部表示中使用的变量

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr

函数的返回值

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_identity

如果这个 Lambda 是恒等函数,则返回 True

is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
nargs
signature

期望的参数形式将被解包到变量中

variables

函数内部表示中使用的变量

方法

__call__(*args)

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

类的好顺序。

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

示例

一个简单的例子:

>>> from sympy import Lambda
>>> from sympy.abc import x
>>> f = Lambda(x, x**2)
>>> f(4)
16

对于多元函数,使用:

>>> from sympy.abc import y, z, t
>>> f2 = Lambda((x, y, z, t), x + y**z + t**z)
>>> f2(1, 2, 3, 4)
73

也可以解包元组参数:

>>> f = Lambda(((x, y), z), x + y + z)
>>> f((1, 2), 3)
6

处理大量参数的便捷快捷方式:

>>> p = x, y, z
>>> f = Lambda(p, x + y*z)
>>> f(*p)
x + y*z
property bound_symbols

函数内部表示中使用的变量

property expr

函数的返回值

property is_identity

如果这个 Lambda 是恒等函数,则返回 True

property signature

期望的参数形式将被解包到变量中

property variables

函数内部表示中使用的变量

class sympy.core.function.WildFunction(*args)[源代码][源代码]

WildFunction 函数匹配任何函数(及其参数)。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

eval(*args)

返回应用于参数 args 的 cls 的规范形式。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

fdiff([argindex])

返回函数的导数。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

is_singular(a)

测试参数是否为本质奇点或分支点,或者函数是否为非全纯函数。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(**_)

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

示例

>>> from sympy import WildFunction, Function, cos
>>> from sympy.abc import x, y
>>> F = WildFunction('F')
>>> f = Function('f')
>>> F.nargs
Naturals0
>>> x.match(F)
>>> F.match(F)
{F_: F_}
>>> f(x).match(F)
{F_: f(x)}
>>> cos(x).match(F)
{F_: cos(x)}
>>> f(x, y).match(F)
{F_: f(x, y)}

要匹配具有给定数量参数的函数,请在实例化时将 nargs 设置为所需值:

>>> F = WildFunction('F', nargs=2)
>>> F.nargs
{2}
>>> f(x).match(F)
>>> f(x, y).match(F)
{F_: f(x, y)}

要匹配具有一系列参数的函数,请将 nargs 设置为一个包含所需参数数量的元组,例如,如果 nargs = (1, 2),那么具有1个或2个参数的函数将被匹配。

>>> F = WildFunction('F', nargs=(1, 2))
>>> F.nargs
{1, 2}
>>> f(x).match(F)
{F_: f(x)}
>>> f(x, y).match(F)
{F_: f(x, y)}
>>> f(x, y, 1).match(F)
class sympy.core.function.Derivative(expr, *variables, **kwargs)[源代码][源代码]

对给定的表达式对符号进行微分。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

规范
canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

derivative_count
表达式
expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
种类
variable_count
变量

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_finite_difference([points, x0, wrt])

将导数实例表示为有限差分。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

类的好顺序。

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

doit_numerically(z0)

数值计算 z 处的导数。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

注释

高阶导数的简化:

因为在进行多次微分时可以进行大量的简化,结果将以相当保守的方式自动简化,除非关键字 simplify 被设置为 False。

>>> from sympy import sqrt, diff, Function, symbols
>>> from sympy.abc import x, y, z
>>> f, g = symbols('f,g', cls=Function)
>>> e = sqrt((x + 1)**2 + x)
>>> diff(e, (x, 5), simplify=False).count_ops()
136
>>> diff(e, (x, 5)).count_ops()
30

变量排序:

如果 evaluate 设置为 True 且表达式无法求值,微分符号列表将被排序,即假设表达式具有所要求阶数的连续导数。

关于非符号的导数:

在大多数情况下,人们可能无法区分非符号。例如,我们不允许对 \(x*y\) 进行微分,因为在表达式中结构化定义 x*y 出现的位置有多种方式:一个非常严格的定义会使 (x*y*z).diff(x*y) == 0。也不允许对定义的函数(如 cos(x))进行微分:

>>> (x*y*z).diff(x*y)
Traceback (most recent call last):
...
ValueError: Can't calculate derivative wrt x*y.

然而,为了更容易处理变分微积分,允许对 AppliedUndef 和 Derivatives 进行求导。例如,在欧拉-拉格朗日方法中,可以写成 F(t, u, v),其中 u = f(t) 且 v = f’(t)。这些变量可以明确地写成时间的函数:

>>> from sympy.abc import t
>>> F = Function('F')
>>> U = f(t)
>>> V = U.diff(t)

关于 f(t) 的导数可以直接得到:

>>> direct = F(t, U, V).diff(U)

当尝试对非符号进行微分时,非符号会暂时转换为符号,在执行微分操作时,会得到相同的答案:

>>> indirect = F(t, U, V).subs(U, x).diff(x).subs(x, U)
>>> assert direct == indirect

这种非符号替换的含义是,所有函数都被视为与其他函数无关,并且符号与包含它们的函数无关:

>>> x.diff(f(x))
0
>>> g(x).diff(f(x))
0

这也意味着假定导数仅依赖于微分的变量,而不依赖于被微分表达式中的任何内容:

>>> F = f(x)
>>> Fx = F.diff(x)
>>> Fx.diff(F)  # derivative depends on x, not F
0
>>> Fxx = Fx.diff(x)
>>> Fxx.diff(Fx)  # derivative depends on x, not Fx
0

最后一个例子可以通过展示用 y 替换 Fxx 中的 Fx 来明确说明:

>>> Fxx.subs(Fx, y)
Derivative(y, x)

既然这本身将计算为零,对 Fx 求导也将为零:

>>> _.doit()
0

用具体表达式替换未定义函数

必须小心地将未定义的函数替换为包含与函数定义和微分变量一致的变量的表达式,否则将得到不一致的结果。考虑以下示例:

>>> eq = f(x)*g(y)
>>> eq.subs(f(x), x*y).diff(x, y).doit()
y*Derivative(g(y), y) + g(y)
>>> eq.diff(x, y).subs(f(x), x*y).doit()
y*Derivative(g(y), y)

结果不同是因为 \(f(x)\) 被替换为一个涉及两个微分变量的表达式。在抽象情况下,\(f(x)\)\(y\) 的微分为 0;在具体情况下,\(y\) 的存在使得该导数不为零,并产生了额外的 \(g(y)\) 项。

定义对象的微分

对象必须定义 ._eval_derivative(symbol) 方法,该方法返回微分结果。此函数只需要考虑 expr 包含 symbol 的非平凡情况,并且它应该在内部调用 diff() 方法(而不是 _eval_derivative);Derivative 应该是唯一调用 _eval_derivative 的对象。

任何类都可以允许对其自身进行求导(同时指示其标量性质)。请参阅 Expr._diff_wrt 的文档字符串。

示例

>>> from sympy import Derivative, Function, symbols, Subs
>>> from sympy.abc import x, y
>>> f, g = symbols('f g', cls=Function)
>>> Derivative(x**2, x, evaluate=True)
2*x

导数的去嵌套保留了变量的顺序:

>>> Derivative(Derivative(f(x, y), y), x)
Derivative(f(x, y), y, x)

连续相同的符号会被合并成一个元组,包含符号及其计数:

>>> Derivative(f(x), x, x, y, x)
Derivative(f(x), (x, 2), y, x)

如果无法进行导数运算,并且 evaluate 为 True,则微分变量的顺序将被规范化为:

>>> Derivative(f(x, y), y, x, evaluate=True)
Derivative(f(x, y), x, y)

关于未定义函数的导数可以被计算:

>>> Derivative(f(x)**2, f(x), evaluate=True)
2*f(x)

当使用链式法则计算导数时,这些导数将会出现:

>>> f(g(x)).diff(x)
Derivative(f(g(x)), g(x))*Derivative(g(x), x)

替换用于表示函数的导数,其参数不是符号或函数:

>>> f(2*x + 3).diff(x) == 2*Subs(f(y).diff(y), y, 2*x + 3)
True
property _diff_wrt

如果表达式处于基本形式,则可以对其进行关于导数的微分。

示例

>>> from sympy import Function, Derivative, cos
>>> from sympy.abc import x
>>> f = Function('f')
>>> Derivative(f(x), x)._diff_wrt
True
>>> Derivative(cos(x), x)._diff_wrt
False
>>> Derivative(x + 1, x)._diff_wrt
False

一个导数可能是未求值的形式,如果求值,它将不是一个有效的微分变量。例如,

>>> Derivative(f(f(x)), x).doit()
Derivative(f(x), x)*Derivative(f(f(x)), f(x))

这种表达式将呈现与处理任何其他产品(如 2*x)时相同的歧义,因此 _diff_wrt 为 False:

>>> Derivative(f(f(x)), x)._diff_wrt
False
classmethod _sort_variable_count(vc)[源代码][源代码]

在保留微分时不可交换的变量的顺序的同时,将(变量,计数)对排序为规范顺序:

  • 符号和函数相互交换

  • 导数相互交换

  • 导数与其包含的任何内容都不交换

  • 如果一个对象与其他对象有共同的自由符号,则不允许它与其他对象交换。

示例

>>> from sympy import Derivative, Function, symbols
>>> vsort = Derivative._sort_variable_count
>>> x, y, z = symbols('x y z')
>>> f, g, h = symbols('f g h', cls=Function)

连续的项目会被合并成一对:

>>> vsort([(x, 1), (x, 1)])
[(x, 2)]
>>> vsort([(y, 1), (f(x), 1), (y, 1), (f(x), 1)])
[(y, 2), (f(x), 2)]

排序是规范的。

>>> def vsort0(*v):
...     # docstring helper to
...     # change vi -> (vi, 0), sort, and return vi vals
...     return [i[0] for i in vsort([(i, 0) for i in v])]
>>> vsort0(y, x)
[x, y]
>>> vsort0(g(y), g(x), f(y))
[f(y), g(x), g(y)]

符号尽可能地向左排序,但绝不会移动到其变量中具有相同符号的导数的左侧;同样适用于总是排在符号之后的 AppliedUndef:

>>> dfx = f(x).diff(x)
>>> assert vsort0(dfx, y) == [y, dfx]
>>> assert vsort0(dfx, x) == [dfx, x]
as_finite_difference(
points=1,
x0=None,
wrt=None,
)[源代码][源代码]

将导数实例表示为有限差分。

参数:
序列或系数,可选

如果序列: 用于生成有限差分权重的自变量的离散值(长度 >= 阶数+1)。如果它是一个系数,它将被用作步长,用于生成以 x0 为中心的等距序列,长度为阶数+1。默认值: 1(步长为1)

x0数字或符号,可选

导数要近似的自变量 (wrt) 的值。默认值:与 wrt 相同。

wrt符号, 可选

关于要近似其(偏)导数的变量。如果未提供,则要求导数是普通的。默认值:None

示例

>>> from sympy import symbols, Function, exp, sqrt, Symbol
>>> x, h = symbols('x h')
>>> f = Function('f')
>>> f(x).diff(x).as_finite_difference()
-f(x - 1/2) + f(x + 1/2)

默认的步长和点的数量分别是1和``order + 1``。我们可以通过传递一个符号作为参数来改变步长:

>>> f(x).diff(x).as_finite_difference(h)
-f(-h/2 + x)/h + f(h/2 + x)/h

我们也可以指定要在序列中使用的离散化值:

>>> f(x).diff(x).as_finite_difference([x, x+h, x+2*h])
-3*f(x)/(2*h) + 2*f(h + x)/h - f(2*h + x)/(2*h)

该算法不限于使用等距间距,我们也不需要在 x0 附近进行近似,但我们可以得到一个估计导数在偏移处的表达式:

>>> e, sq2 = exp(1), sqrt(2)
>>> xl = [x-h, x+h, x+e*h]
>>> f(x).diff(x, 1).as_finite_difference(xl, x+h*sq2)  
2*h*((h + sqrt(2)*h)/(2*h) - (-sqrt(2)*h + h)/(2*h))*f(E*h + x)/...

为了在使用非等距间距步长的情况下近似 x0 周围的 导数 ,该算法支持将未定义的函数分配给

>>> dx = Function('dx')
>>> f(x).diff(x).as_finite_difference(points=dx(x), x0=x-h)
-f(-h + x - dx(-h + x)/2)/dx(-h + x) + f(-h + x + dx(-h + x)/2)/dx(-h + x)

也支持偏导数:

>>> y = Symbol('y')
>>> d2fdxdy=f(x,y).diff(x,y)
>>> d2fdxdy.as_finite_difference(wrt=x)
-Derivative(f(x - 1/2, y), y) + Derivative(f(x + 1/2, y), y)

我们可以使用 replaceas_finite_difference 应用于复合表达式中的 Derivative 实例:

>>> (1 + 42**f(x).diff(x)).replace(lambda arg: arg.is_Derivative,
...     lambda arg: arg.as_finite_difference())
42**(-f(x - 1/2) + f(x + 1/2)) + 1
doit_numerically(z0)[源代码][源代码]

数值计算 z 处的导数。

当我们能够在某点表示导数时,这应该被折叠到正常的 evalf 中。目前,我们需要一个特殊的方法。

sympy.core.function.diff(f, *symbols, **kwargs)[源代码][源代码]

对符号求 f 的导数。

参见

Derivative
idiff

隐式计算导数

参考文献

示例

>>> from sympy import sin, cos, Function, diff
>>> from sympy.abc import x, y
>>> f = Function('f')
>>> diff(sin(x), x)
cos(x)
>>> diff(f(x), x, x, x)
Derivative(f(x), (x, 3))
>>> diff(f(x), x, 3)
Derivative(f(x), (x, 3))
>>> diff(sin(x)*cos(y), x, 2, y, 2)
sin(x)*cos(y)
>>> type(diff(sin(x), x))
cos
>>> type(diff(sin(x), x, evaluate=False))
<class 'sympy.core.function.Derivative'>
>>> type(diff(sin(x), x, 0))
sin
>>> type(diff(sin(x), x, 0, evaluate=False))
sin
>>> diff(sin(x))
cos(x)
>>> diff(sin(x*y))
Traceback (most recent call last):
...
ValueError: specify differentiation variables to differentiate sin(x*y)

注意 diff(sin(x)) 语法仅用于交互式会话中的便利,在库代码中应避免使用。

class sympy.core.function.FunctionClass(*args, **kwargs)[源代码][源代码]

函数类的基类。FunctionClass 是 type 的子类。

使用 Function(‘<函数名>’ [ , signature ]) 来创建未定义的函数类。

属性:
自由符号
nargs

返回函数允许的参数数量集合。

xreplace

方法

__call__(*args, **kwargs)

作为函数调用自身。

mro(/)

返回类型的方法解析顺序。

property nargs

返回函数允许的参数数量集合。

示例

>>> from sympy import Function
>>> f = Function('f')

如果函数可以接受任意数量的参数,则返回一组整数:

>>> Function('f').nargs
Naturals0

如果函数被初始化为接受一个或多个参数,将返回相应的一组参数:

>>> Function('f', nargs=1).nargs
{1}
>>> Function('f', nargs=(2, 1)).nargs
{1, 2}

未定义的函数,在应用之后,也具有 nargs 属性;实际的参数数量总是可以通过检查 args 属性来获取:

>>> f = Function('f')
>>> f(1).nargs
Naturals0
>>> len(f(1).args)
1
class sympy.core.function.Function(*args)[源代码][源代码]

应用数学函数的基类。

它还作为未定义函数类的构造器。

有关如何子类化 Function 以及可以定义哪些方法的详细信息,请参阅 自定义函数 指南。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

eval(*args)

返回应用于参数 args 的 cls 的规范形式。

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

fdiff([argindex])

返回函数的导数。

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

is_singular(a)

测试参数是否为本质奇点或分支点,或者函数是否为非全纯函数。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(**_)

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

示例

未定义函数

要创建一个未定义的函数,将函数名的字符串传递给 Function

>>> from sympy import Function, Symbol
>>> x = Symbol('x')
>>> f = Function('f')
>>> g = Function('g')(x)
>>> f
f
>>> f(x)
f(x)
>>> g
g(x)
>>> f(x).diff(x)
Derivative(f(x), x)
>>> g.diff(x)
Derivative(g(x), x)

假设可以传递给 Function ,就像传递给 Symbol 一样。或者,你可以使用带有假设的 Symbol 作为函数名,函数将继承与 Symbol 相关联的名称和假设:

>>> f_real = Function('f', real=True)
>>> f_real(x).is_real
True
>>> f_real_inherit = Function(Symbol('f', real=True))
>>> f_real_inherit(x).is_real
True

请注意,函数上的假设与调用它的变量上的假设无关。如果你想添加关系,请子类化 Function 并定义自定义假设处理方法。更多详情请参阅 编写自定义函数 指南中的 假设 部分。

自定义函数子类

自定义函数`指南》中有几个:ref:`自定义函数-完整示例,展示了如何通过子类化``Function``来创建自定义函数。

fdiff(argindex=1)[源代码][源代码]

返回函数的导数。

classmethod is_singular(a)[源代码][源代码]

测试参数是否为本质奇点或分支点,或者函数是否为非全纯函数。

备注

并非所有功能都相同

SymPy 定义了许多函数(如 cosfactorial)。它还允许用户创建作为参数占位符的通用函数。这些函数就像符号一样创建:

>>> from sympy import Function, cos
>>> from sympy.abc import x
>>> f = Function('f')
>>> f(2) + f(x)
f(2) + f(x)

如果你想查看表达式中出现了哪些函数,可以使用 atoms 方法:

>>> e = (f(x) + cos(x) + 2)
>>> e.atoms(Function)
{f(x), cos(x)}

如果你只想要你定义的函数,而不是 SymPy 函数,那么要搜索的是 AppliedUndef:

>>> from sympy.core.function import AppliedUndef
>>> e.atoms(AppliedUndef)
{f(x)}
class sympy.core.function.Subs(expr, variables, point, **assumptions)[源代码][源代码]

表示表达式的未求值替换。

Subs(expr, x, x0) 表示在 expr 中将 x 替换为 x0 后得到的表达式。

参数:
表达式表达式

一个表达式。

xtuple, 变量

一个变量或一组不同的变量。

x0元组或元组的列表

与这些变量对应的评估点或评估点列表。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

bound_symbols

要评估的变量

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr

替换操作所基于的表达式

expr_free_symbols

类似于 free_symbols,但仅在自由符号包含在表达式节点中时返回它们。

free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_number

如果 self 没有自由符号且没有未定义的函数(确切地说,是 AppliedUndef),则返回 True。

is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
point

要替换变量的值

variables

要评估的变量

方法

apart([x])

请参阅 sympy.polys 中的 apart 函数。

args_cnc([cset, warn, split_1])

返回 [交换因子, 非交换因子] 的自身。

as_coeff_Add([rational])

高效地提取求和的系数。

as_coeff_Mul([rational])

高效地提取乘积的系数。

as_coeff_add(*deps)

返回元组 (c, args),其中 self 被写成一个 Add,a

as_coeff_exponent(x)

c*x**e -> c,e 其中 x 可以是任何符号表达式。

as_coeff_mul(*deps, **kwargs)

返回元组 (c, args),其中 self 被写成一个 Mul,m

as_coefficient(expr)

提取给定表达式中的符号系数。

as_coefficients_dict(*syms)

返回一个字典,将术语映射到它们的 Rational 系数。

as_content_primitive([radical, clear])

此方法应递归地从所有参数中移除一个 Rational,并返回该内容和新的 self(原始类型)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

as_expr(*gens)

将多项式转换为 SymPy 表达式。

as_independent(*deps, **hint)

将 Mul 或 Add 的大部分天真分离为不依赖于 deps 的参数。

as_leading_term(*symbols[, logx, cdir])

返回自身级数展开的主导(非零)项。

as_numer_denom()

返回一个表达式的分子和分母。

as_ordered_factors([order])

返回有序因子列表(如果是 Mul),否则返回 [self]。

as_ordered_terms([order, data])

将表达式转换为有序的项列表。

as_poly(*gens, **args)

self 转换为多项式,或返回 None

as_powers_dict()

将自身作为一个因子的字典返回,每个因子都被视为一个幂。

as_real_imag([deep])

对 'self' 执行复杂的扩展,并返回一个包含收集到的实部和虚部的元组。

as_terms()

将一个表达式转换为项的列表。

aseries([x, n, bound, hir])

自变量的渐近级数展开

atoms(*types)

返回构成当前对象的原子。

cancel(*gens, **args)

参见 sympy.polys 中的取消函数

class_key()

类的好顺序。

coeff(x[, n, right, _first])

返回包含 x**n 的项中的系数。

collect(syms[, func, evaluate, exact, ...])

请参阅 sympy.simplify 中的 collect 函数。

combsimp()

请参阅 sympy.simplify 中的 combsimp 函数。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

compute_leading_term(x[, logx])

已弃用的函数,用于计算级数的首项。

conjugate()

返回 'self' 的复数共轭。

could_extract_minus_sign()

如果 self 以 -1 作为前导因子,或在求和中有比正号更多的负号,则返回 True,否则返回 False。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

doit(**hints)

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

equals(other[, failing_expression])

如果 self == other 则返回 True,如果不相等则返回 False,或者返回 None。

evalf([prec])

expand([deep, modulus, power_base, ...])

使用提示扩展表达式。

extract_additively(c)

如果可以从自身减去 c 并且使所有匹配的系数趋向于零,则返回 self - c,否则返回 None。

extract_branch_factor([allow_half])

尝试以 exp_polar(2*pi*I*n)*z 的方式优雅地表达自身。

extract_multiplicatively(c)

如果无法以一种良好的方式将 self 表示为 c * something,即保留 self 参数的属性,则返回 None。

factor(*gens, **args)

参见 sympy.polys.polytools 中的 factor() 函数

find(query[, group])

查找所有匹配查询的子表达式。

fourier_series([limits])

计算自身的傅里叶正弦/余弦级数。

fps([x, x0, dir, hyper, order, rational, full])

计算自身的形式幂级数。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

gammasimp()

参见 sympy.simplify 中的 gammasimp 函数

getO()

如果有加法 O(..) 符号,则返回该符号,否则返回 None。

getn()

返回表达式的顺序。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

integrate(*args, **kwargs)

请参阅 sympy.integrals 中的 integrate 函数。

invert(g, *gens, **args)

返回 selfg 的乘法逆元,其中 self``(和 ``g)可以是符号表达式。

is_algebraic_expr(*syms)

此测试给定的表达式是否在给定的符号 syms 中是代数的。

is_constant(*wrt, **flags)

如果 self 是常量则返回 True,如果不是则返回 False,如果无法明确确定常量性则返回 None。

is_meromorphic(x, a)

此测试表达式是否作为给定符号 x 的函数在点 a 处是亚纯的。

is_polynomial(*syms)

如果 self 是 syms 中的多项式,则返回 True,否则返回 False。

is_rational_function(*syms)

测试函数是否是给定符号 syms 中的两个多项式的比率。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

leadterm(x[, logx, cdir])

返回前导项 a*x**b 作为元组 (a, b)。

limit(x, xlim[, dir])

计算极限 x->xlim。

lseries([x, x0, dir, logx, cdir])

用于生成序列项的迭代器的包装器。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

n([prec])

normal()

返回表达式为分数形式。

nseries([x, x0, n, dir, logx, cdir])

如果假设允许,则包装到 _eval_nseries,否则包装到 series。

nsimplify([constants, tolerance, full])

参见 sympy.simplify 中的 nsimplify 函数

powsimp(*args, **kwargs)

请参阅 sympy.simplify 中的 powsimp 函数

primitive()

返回可以从自身每个项中非递归提取的正有理数(即,将自身视为一个加法)。

radsimp(**kwargs)

参见 sympy.simplify 中的 radsimp 函数

ratsimp()

参见 sympy.simplify 中的 ratsimp 函数。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

removeO()

如果存在,移除加性的 O(..) 符号

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

round([n])

返回 x 四舍五入到给定的十进制位数。

separate([deep, force])

参见 sympy.simplify 中的单独函数

series([x, x0, n, dir, logx, cdir])

x = x0 附近对 "self" 进行级数展开,当 n=None 时逐项给出级数项(即惰性级数),否则当 n != None 时一次性给出所有项。

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

taylor_term(n, x, *previous_terms)

泰勒项的一般方法。

together(*args, **kwargs)

请参阅 sympy.polys 中的 together 函数。

trigsimp(**args)

参见 sympy.simplify 中的 trigsimp 函数

xreplace(rule)

替换表达式中对象的出现。

伴随

as_base_exp

复制

差异

目录

is_hypergeometric

转置

注释

Subs 对象通常用于表示在某个点计算的未求值导数。

变量可以是表达式,但它们受到 subs() 的限制,因此通常最好只使用符号作为变量,因为在这种情况下不会有歧义。

没有自动扩展 - 使用 .doit() 方法来实现对象及其表达式内部所有可能的替换。

当在不是符号的点上求导时,会返回一个 Subs 对象。也可以计算 Subs 对象的导数 - 在这种情况下,表达式总是被展开(对于未求值的形式,使用 Derivative())。

为了在执行 doit 之前允许表达式组合,内部使用 Subs 表达式的表示形式,使表面上不同的表达式比较相同:

>>> a, b = Subs(x, x, 0), Subs(y, y, 0)
>>> a + b
2*Subs(x, x, 0)

在使用像 \(has\) 这样被缓存的方法时,这可能会导致意外的后果:

>>> s = Subs(x, x, 0)
>>> s.has(x), s.has(y)
(True, False)
>>> ss = s.subs(x, y)
>>> ss.has(x), ss.has(y)
(True, False)
>>> s, ss
(Subs(x, x, 0), Subs(y, y, 0))

示例

>>> from sympy import Subs, Function, sin, cos
>>> from sympy.abc import x, y, z
>>> f = Function('f')

当特定的替换无法进行时,会创建子项。导数中的 x 不能被替换为 0,因为 0 不是一个有效的微分变量:

>>> f(x).diff(x).subs(x, 0)
Subs(Derivative(f(x), x), x, 0)

一旦 f 已知,导数和在 0 处的求值可以进行:

>>> _.subs(f, sin).doit() == sin(x).diff(x).subs(x, 0) == cos(0)
True

子项也可以通过一个或多个变量直接创建:

>>> Subs(f(x)*sin(y) + z, (x, y), (0, 1))
Subs(z + f(x)*sin(y), (x, y), (0, 1))
>>> _.doit()
z + f(0)*sin(1)
property bound_symbols

要评估的变量

property expr

替换操作所基于的表达式

property point

要替换变量的值

property variables

要评估的变量

sympy.core.function.expand(
e,
deep=True,
modulus=None,
power_base=True,
power_exp=True,
mul=True,
log=True,
multinomial=True,
basic=True,
**hints,
)[源代码][源代码]

使用作为提示给出的方法展开表达式。

注释

  • 你可以关闭不需要的方法:

    >>> (exp(x + y)*(x + y)).expand()
    x*exp(x)*exp(y) + y*exp(x)*exp(y)
    >>> (exp(x + y)*(x + y)).expand(power_exp=False)
    x*exp(x + y) + y*exp(x + y)
    >>> (exp(x + y)*(x + y)).expand(mul=False)
    (x + y)*exp(x)*exp(y)
    
  • 使用 deep=False 仅在顶层展开:

    >>> exp(x + exp(x + y)).expand()
    exp(x)*exp(exp(x)*exp(y))
    >>> exp(x + exp(x + y)).expand(deep=False)
    exp(x)*exp(exp(x + y))
    
  • 提示以任意但一致的顺序应用(在当前实现中,它们按字母顺序应用,除了 multinomial 在 mul 之前,但这可能会改变)。因此,某些提示如果首先应用,可能会阻止其他提示的扩展。例如,mul 可能会分配乘法并阻止 logpower_base 扩展它们。此外,如果 mulmultinomial 之前应用,表达式可能不会完全分配。解决方案是使用各种 expand_hint 辅助函数,或者使用 hint=False 来精细控制应用哪些提示。以下是一些示例:

    >>> from sympy import expand, expand_mul, expand_power_base
    >>> x, y, z = symbols('x,y,z', positive=True)
    
    >>> expand(log(x*(y + z)))
    log(x) + log(y + z)
    

    在这里,我们看到 log 是在 mul 之前应用的。要得到 mul 的展开形式,以下任意一种方法都可以:

    >>> expand_mul(log(x*(y + z)))
    log(x*y + x*z)
    >>> expand(log(x*(y + z)), log=False)
    log(x*y + x*z)
    

    类似的情况也可能发生在 power_base 提示上:

    >>> expand((x*(y + z))**x)
    (x*y + x*z)**x
    

    要获取 power_base 的展开形式,以下任一方法均可:

    >>> expand((x*(y + z))**x, mul=False)
    x**x*(y + z)**x
    >>> expand_power_base((x*(y + z))**x)
    x**x*(y + z)**x
    
    >>> expand((x + y)*y/x)
    y + y**2/x
    

    有理表达式的部分可以被定位:

    >>> expand((x + y)*y/x/(x + 1), frac=True)
    (x*y + y**2)/(x**2 + x)
    >>> expand((x + y)*y/x/(x + 1), numer=True)
    (x*y + y**2)/(x*(x + 1))
    >>> expand((x + y)*y/x/(x + 1), denom=True)
    y*(x + y)/(x**2 + x)
    
  • modulus 元提示可以在表达式展开后用于减少系数:

    >>> expand((3*x + 1)**2)
    9*x**2 + 6*x + 1
    >>> expand((3*x + 1)**2, modulus=5)
    4*x**2 + x + 1
    
  • 可以使用 expand() 函数或 .expand() 方法。两者是等价的:

    >>> expand((x + 1)**2)
    x**2 + 2*x + 1
    >>> ((x + 1)**2).expand()
    x**2 + 2*x + 1
    

示例

>>> from sympy import Expr, sympify
>>> class MyClass(Expr):
...     def __new__(cls, *args):
...         args = sympify(args)
...         return Expr.__new__(cls, *args)
...
...     def _eval_expand_double(self, *, force=False, **hints):
...         '''
...         Doubles the args of MyClass.
...
...         If there more than four args, doubling is not performed,
...         unless force=True is also used (False by default).
...         '''
...         if not force and len(self.args) > 4:
...             return self
...         return self.func(*(self.args + self.args))
...
>>> a = MyClass(1, 2, MyClass(3, 4))
>>> a
MyClass(1, 2, MyClass(3, 4))
>>> a.expand(double=True)
MyClass(1, 2, MyClass(3, 4, 3, 4), 1, 2, MyClass(3, 4, 3, 4))
>>> a.expand(double=True, deep=False)
MyClass(1, 2, MyClass(3, 4), 1, 2, MyClass(3, 4))
>>> b = MyClass(1, 2, 3, 4, 5)
>>> b.expand(double=True)
MyClass(1, 2, 3, 4, 5)
>>> b.expand(double=True, force=True)
MyClass(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
class sympy.core.function.PoleError[源代码][源代码]
属性:
参数

方法

with_traceback

Exception.with_traceback(tb) -- 将 self.__traceback__ 设置为 tb 并返回 self。

sympy.core.function.count_ops(expr, visual=False)[源代码][源代码]

返回表达式 expr 中操作的表示形式(整数或表达式)。

参数:
表达式表达式

如果 expr 是一个可迭代对象,将返回其中各项的 op 计数的总和。

视觉bool, 可选

如果 False``(默认),则将返回视觉表达式系数的总和。如果 ``True,则显示每种操作类型的数量,并显示核心类类型(或其虚拟等效类型)乘以它们出现的次数。

示例

>>> from sympy.abc import a, b, x, y
>>> from sympy import sin, count_ops

虽然没有 SUB 对象,但减号被解释为否定或减法:

>>> (x - y).count_ops(visual=True)
SUB
>>> (-x).count_ops(visual=True)
NEG

这里,有两个加法和一个幂运算:

>>> (1 + a + b**2).count_ops(visual=True)
2*ADD + POW

在下面,有一个加法、乘法、幂运算和两个函数:

>>> (sin(x)*x + sin(x)**2).count_ops(visual=True)
ADD + MUL + POW + 2*SIN

总共 5 个:

>>> (sin(x)*x + sin(x)**2).count_ops(visual=False)
5

请注意,“你输入的内容”并不总是你得到的结果。表达式 1/x/y 被 sympy 翻译为 1/(x*y),因此它给出一个 DIV 和一个 MUL,而不是两个 DIV:

>>> (1/x/y).count_ops(visual=True)
DIV + MUL

视觉选项可用于展示不同形式表达式在操作上的差异。这里,将霍纳表示法与多项式的展开形式进行了比较:

>>> eq=x*(1 + x*(2 + x*(3 + x)))
>>> count_ops(eq.expand(), visual=True) - count_ops(eq, visual=True)
-MUL + 3*POW

count_ops 函数也处理可迭代对象:

>>> count_ops([x, sin(x), None, True, x + 2], visual=False)
2
>>> count_ops([x, sin(x), None, True, x + 2], visual=True)
ADD + SIN
>>> count_ops({x: sin(x), x + 2: y + 1}, visual=True)
2*ADD + SIN
sympy.core.function.expand_mul(expr, deep=True)[源代码][源代码]

围绕 expand 的包装器,仅使用 mul 提示。有关更多信息,请参阅 expand 的文档字符串。

示例

>>> from sympy import symbols, expand_mul, exp, log
>>> x, y = symbols('x,y', positive=True)
>>> expand_mul(exp(x+y)*(x+y)*log(x*y**2))
x*exp(x + y)*log(x*y**2) + y*exp(x + y)*log(x*y**2)
sympy.core.function.expand_log(
expr,
deep=True,
force=False,
factor=False,
)[源代码][源代码]

围绕 expand 的包装器,仅使用日志提示。有关更多信息,请参阅 expand 的文档字符串。

示例

>>> from sympy import symbols, expand_log, exp, log
>>> x, y = symbols('x,y', positive=True)
>>> expand_log(exp(x+y)*(x+y)*log(x*y**2))
(x + y)*(log(x) + 2*log(y))*exp(x + y)
sympy.core.function.expand_func(expr, deep=True)[源代码][源代码]

围绕 expand 的包装器,仅使用 func 提示。有关更多信息,请参阅 expand 的文档字符串。

示例

>>> from sympy import expand_func, gamma
>>> from sympy.abc import x
>>> expand_func(gamma(x + 2))
x*(x + 1)*gamma(x)
sympy.core.function.expand_trig(expr, deep=True)[源代码][源代码]

围绕 expand 的包装器,仅使用 trig 提示。有关更多信息,请参阅 expand 的文档字符串。

示例

>>> from sympy import expand_trig, sin
>>> from sympy.abc import x, y
>>> expand_trig(sin(x+y)*(x+y))
(x + y)*(sin(x)*cos(y) + sin(y)*cos(x))
sympy.core.function.expand_complex(expr, deep=True)[源代码][源代码]

围绕 expand 的包装器,仅使用复杂提示。有关更多信息,请参阅 expand 的文档字符串。

示例

>>> from sympy import expand_complex, exp, sqrt, I
>>> from sympy.abc import z
>>> expand_complex(exp(z))
I*exp(re(z))*sin(im(z)) + exp(re(z))*cos(im(z))
>>> expand_complex(sqrt(I))
sqrt(2)/2 + sqrt(2)*I/2
sympy.core.function.expand_multinomial(expr, deep=True)[源代码][源代码]

围绕 expand 的包装器,仅使用多项式提示。有关更多信息,请参阅 expand 的文档字符串。

示例

>>> from sympy import symbols, expand_multinomial, exp
>>> x, y = symbols('x y', positive=True)
>>> expand_multinomial((x + exp(x + 1))**2)
x**2 + 2*x*exp(x + 1) + exp(2*x + 2)
sympy.core.function.expand_power_exp(expr, deep=True)[源代码][源代码]

围绕扩展的包装器,仅使用 power_exp 提示。

查看扩展的文档字符串以获取更多信息。

示例

>>> from sympy import expand_power_exp, Symbol
>>> from sympy.abc import x, y
>>> expand_power_exp(3**(y + 2))
9*3**y
>>> expand_power_exp(x**(y + 2))
x**(y + 2)

如果 x = 0 ,表达式的值取决于 y 的值;如果表达式被展开,结果将是 0。因此,只有在 x != 0 时才会进行展开:

>>> expand_power_exp(Symbol('x', zero=False)**(y + 2))
x**2*x**y
sympy.core.function.expand_power_base(expr, deep=True, force=False)[源代码][源代码]

围绕扩展的包装器,仅使用 power_base 提示。

一个包装器,用于展开(power_base=True),它将一个以Mul为基数的幂分解为幂的乘积,而不执行任何其他展开,前提是关于幂的基数和指数的假设允许。

deep=False(默认是True)将仅应用于顶级表达式。

force=True(默认是 False)将导致扩展忽略关于底数和指数的假设。当为 False 时,扩展仅在底数为非负数或指数为整数时发生。

>>> from sympy.abc import x, y, z
>>> from sympy import expand_power_base, sin, cos, exp, Symbol
>>> (x*y)**2
x**2*y**2
>>> (2*x)**y
(2*x)**y
>>> expand_power_base(_)
2**y*x**y
>>> expand_power_base((x*y)**z)
(x*y)**z
>>> expand_power_base((x*y)**z, force=True)
x**z*y**z
>>> expand_power_base(sin((x*y)**z), deep=False)
sin((x*y)**z)
>>> expand_power_base(sin((x*y)**z), force=True)
sin(x**z*y**z)
>>> expand_power_base((2*sin(x))**y + (2*cos(x))**y)
2**y*sin(x)**y + 2**y*cos(x)**y
>>> expand_power_base((2*exp(y))**x)
2**x*exp(y)**x
>>> expand_power_base((2*cos(x))**y)
2**y*cos(x)**y

注意,求和项保持不变。如果这不是期望的行为,请对表达式应用完整的 expand()

>>> expand_power_base(((x+y)*z)**2)
z**2*(x + y)**2
>>> (((x+y)*z)**2).expand()
x**2*z**2 + 2*x*y*z**2 + y**2*z**2
>>> expand_power_base((2*y)**(1+z))
2**(z + 1)*y**(z + 1)
>>> ((2*y)**(1+z)).expand()
2*2**z*y**(z + 1)

未扩展的能量在 y != 0 时可以安全地扩展,否则可能会得到表达式的不同值:

>>> prev = _

如果我们指示 y 是正数,但在展开后将其替换为0值,表达式将变为0:

>>> p = Symbol('p', positive=True)
>>> prev.subs(y, p).expand().subs(p, 0)
0

但如果 z = -1 ,表达式将不会为零:

>>> prev.subs(y, 0).subs(z, -1)
1

参见

expand
sympy.core.function.nfloat(expr, n=15, exponent=False, dkeys=False)[源代码][源代码]

将 expr 中的所有 Rationals 转换为 Floats,除非它们在指数中(除非指数标志设置为 True)或在未定义的函数中。在处理字典时,除非 dkeys=True,否则不要修改键。

示例

>>> from sympy import nfloat, cos, pi, sqrt
>>> from sympy.abc import x, y
>>> nfloat(x**4 + x/2 + cos(pi/3) + 1 + sqrt(y))
x**4 + 0.5*x + sqrt(y) + 1.5
>>> nfloat(x**4 + sqrt(y), exponent=True)
x**4.0 + y**0.5

容器类型不会被修改:

>>> type(nfloat((1, 2))) is tuple
True

evalf

class sympy.core.evalf.EvalfMixin[源代码][源代码]

添加 evalf 功能的 Mixin 类。

方法

evalf([n, subs, maxn, chop, strict, quad, ...])

将给定的公式计算到 n 位精度。

n([n, subs, maxn, chop, strict, quad, verbose])

将给定的公式计算到 n 位精度。

evalf(
n=15,
subs=None,
maxn=100,
chop=False,
strict=False,
quad=None,
verbose=False,
)[源代码][源代码]

将给定的公式计算到 n 位精度。

参数:
subsdict, 可选

用数值替换符号,例如 subs={x:3, y:1+pi}。替换必须以字典形式给出。

maxnint, 可选

允许最大临时工作精度为 maxn 位数字。

布尔值或数字,可选

指定如何将子结果中的微小实数或虚部替换为精确的零。

True 时,chop 值默认为标准精度。

否则,chop 值用于确定“小”的幅度,以便进行截断。

>>> from sympy import N
>>> x = 1e-4
>>> N(x, chop=True)
0.000100000000000000
>>> N(x, chop=1e-5)
0.000100000000000000
>>> N(x, chop=1e-4)
0
严格bool, 可选

如果在给定的可用最大精度(maxprec)下,任何子结果无法完全准确地评估,则引发 PrecisionExhausted

四边形str, 可选

选择数值积分的算法。默认使用 tanh-sinh 积分法。对于无限区间上的振荡积分,尝试 quad='osc'

详细bool, 可选

打印调试信息。

注释

当浮点数被简单地代入表达式时,精度误差可能会对结果产生不利影响。例如,将 1e16(一个浮点数)加到 1 上会截断为 1e16;如果随后减去 1e16,结果将是 0。这正是以下情况中发生的事情:

>>> from sympy.abc import x, y, z
>>> values = {x: 1e16, y: 1, z: 1e16}
>>> (x + y - z).subs(values)
0

使用 subs 参数进行 evalf 是评估此类表达式的准确方法:

>>> (x + y - z).evalf(subs=values)
1.00000000000000
n(
n=15,
subs=None,
maxn=100,
chop=False,
strict=False,
quad=None,
verbose=False,
)[源代码]

将给定的公式计算到 n 位精度。

参数:
subsdict, 可选

用数值替换符号,例如 subs={x:3, y:1+pi}。替换必须以字典形式给出。

maxnint, 可选

允许最大临时工作精度为 maxn 位数字。

布尔值或数字,可选

指定如何将子结果中的微小实数或虚部替换为精确的零。

True 时,chop 值默认为标准精度。

否则,chop 值用于确定“小”的幅度,以便进行截断。

>>> from sympy import N
>>> x = 1e-4
>>> N(x, chop=True)
0.000100000000000000
>>> N(x, chop=1e-5)
0.000100000000000000
>>> N(x, chop=1e-4)
0
严格bool, 可选

如果在给定的可用最大精度(maxprec)下,任何子结果无法完全准确地评估,则引发 PrecisionExhausted

四边形str, 可选

选择数值积分的算法。默认使用 tanh-sinh 积分法。对于无限区间上的振荡积分,尝试 quad='osc'

详细bool, 可选

打印调试信息。

注释

当浮点数被简单地代入表达式时,精度误差可能会对结果产生不利影响。例如,将 1e16(一个浮点数)加到 1 上会截断为 1e16;如果随后减去 1e16,结果将是 0。这正是以下情况中发生的事情:

>>> from sympy.abc import x, y, z
>>> values = {x: 1e16, y: 1, z: 1e16}
>>> (x + y - z).subs(values)
0

使用 subs 参数进行 evalf 是评估此类表达式的准确方法:

>>> (x + y - z).evalf(subs=values)
1.00000000000000
class sympy.core.evalf.PrecisionExhausted[源代码][源代码]
属性:
参数

方法

with_traceback

Exception.with_traceback(tb) -- 将 self.__traceback__ 设置为 tb 并返回 self。

sympy.core.evalf.N(x, n=15, **options)[源代码][源代码]

调用 x.evalf(n, **options)。

示例

>>> from sympy import Sum, oo, N
>>> from sympy.abc import k
>>> Sum(1/k**k, (k, 1, oo))
Sum(k**(-k), (k, 1, oo))
>>> N(_, 4)
1.291

容器

class sympy.core.containers.Tuple(*args, **kwargs)[源代码][源代码]

内置元组对象的包装器。

参数:
sympify布尔

如果 False,则不会对 args 调用 sympify。这对于元素已知为 SymPy 对象的非常大的元组来说,可以用于加速。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
kind

Tuple 实例的类型。

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

index(value[, start, stop])

搜索并返回值的第一个索引。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

tuple_count(value)

返回值出现的次数。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

is_hypergeometric

示例

>>> from sympy import Tuple, symbols
>>> a, b, c, d = symbols('a b c d')
>>> Tuple(a, b, c)[1:]
(b, c)
>>> Tuple(a, b, c).subs(a, d)
(d, b, c)
index(value, start=None, stop=None)[源代码][源代码]

搜索并返回值的第一个索引。

property kind

Tuple 实例的类型。

Tuple 的类型总是 TupleKind 的,但它由元素的数量和每个元素的类型参数化。

示例

>>> from sympy import Tuple, Matrix
>>> Tuple(1, 2).kind
TupleKind(NumberKind, NumberKind)
>>> Tuple(Matrix([1, 2]), 1).kind
TupleKind(MatrixKind(NumberKind), NumberKind)
>>> Tuple(1, 2).kind.element_kind
(NumberKind, NumberKind)
tuple_count(value) int[源代码][源代码]

返回值出现的次数。

class sympy.core.containers.TupleKind(*args)[源代码][源代码]

TupleKind 是 Kind 的子类,用于定义 Tuple 的 Kind。

TupleKind 的参数将是 Tuples 中所有参数的种类,例如

参数:
参数tuple(元素类型)

element_kind 是元素的种类。args 是元素种类的元组。

示例

>>> from sympy import Tuple
>>> Tuple(1, 2).kind
TupleKind(NumberKind, NumberKind)
>>> Tuple(1, 2).kind.element_kind
(NumberKind, NumberKind)
class sympy.core.containers.Dict(*args)[源代码][源代码]

内置字典对象的包装器。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

返回对象 \(type\) 假设。

canonical_variables

返回一个字典,将 self.bound_symbols 中定义的任何变量映射到与表达式中任何自由符号不冲突的符号。

expr_free_symbols
free_symbols

从自身的原子中返回那些自由符号。

func

表达式中的顶级函数。

is_algebraic
is_antihermitian
is_commutative
is_comparable

如果 self 可以计算为一个具有精度的实数(或已经是一个实数),则返回 True,否则返回 False。

is_complex
is_composite
is_even
is_extended_negative
is_extended_nonnegative
is_extended_nonpositive
is_extended_nonzero
is_extended_positive
is_extended_real
is_finite
is_hermitian
is_imaginary
is_infinite
is_integer
is_irrational
is_negative
is_noninteger
is_nonnegative
is_nonpositive
is_nonzero
is_odd
is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero

方法

as_content_primitive([radical, clear])

一个存根,允许在计算表达式的内容和基本组件时跳过基本参数(如元组)。

as_dummy()

返回表达式,其中任何具有结构绑定符号的对象都被替换为在其出现的对象中唯一的规范符号,并且仅对交换性具有默认假设为True。

atoms(*types)

返回构成当前对象的原子。

class_key()

类的好顺序。

compare(other)

如果对象在规范意义上小于、等于或大于其他对象,则返回 -1、0、1。

count(query)

计算匹配的子表达式的数量。

count_ops([visual])

用于返回操作计数的 count_ops 的包装器。

doit(**hints)

评估默认情况下不评估的对象,如极限、积分、求和和乘积。

dummy_eq(other[, symbol])

比较两个表达式并处理哑符号。

find(query[, group])

查找所有匹配查询的子表达式。

fromiter(args, **assumptions)

从可迭代对象创建一个新对象。

get(key[, default])

如果键在字典中,返回键对应的值。

has(*patterns)

测试是否有任何子表达式匹配任何模式。

has_free(*patterns)

如果 self 包含对象 x 作为自由表达式,则返回 True,否则返回 False。

has_xfree(s)

如果 self 有 s 中的任何一个模式作为自由参数,则返回 True,否则返回 False。

is_same(b[, approx])

如果 a 和 b 结构相同则返回 True,否则返回 False。

items()

返回一个类似集合的对象,提供对字典项的视图。

keys()

返回字典的键列表。

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

用于 match() 的辅助方法,用于在 self 中的通配符符号与 expr 中的表达式之间寻找匹配。

rcall(*args)

通过表达式树递归应用于参数。

refine([assumption])

请参阅 sympy.assumptions 中的 refine 函数。

replace(query, value[, map, simultaneous, exact])

self 中匹配的子表达式替换为 value

rewrite(*args[, deep])

使用定义的规则重写 self

simplify(**kwargs)

请参阅 sympy.simplify 中的 simplify 函数。

sort_key([order])

返回一个排序键。

subs(*args, **kwargs)

在简化参数后,在表达式中用新内容替换旧内容。

values()

返回字典值的列表。

xreplace(rule)

替换表达式中对象的出现。

复制

could_extract_minus_sign

is_hypergeometric

示例

>>> from sympy import Dict, Symbol
>>> D = Dict({1: 'one', 2: 'two'})
>>> for key in D:
...    if key == 1:
...        print('%s %s' % (key, D[key]))
1 one

参数被符号化,因此 1 和 2 是整数,而值是符号。查询会自动符号化参数,因此以下操作可以正常工作:

>>> 1 in D
True
>>> D.has(Symbol('one')) # searches keys and values
True
>>> 'one' in D # not in the keys
False
>>> D[1]
one
get(key, default=None)[源代码][源代码]

如果键在字典中,返回键对应的值。

items()[源代码][源代码]

返回一个类似集合的对象,提供对字典项的视图。

keys()[源代码][源代码]

返回字典的键列表。

values()[源代码][源代码]

返回字典值的列表。

exprtools

sympy.core.exprtools.gcd_terms(
terms,
isprimitive=False,
clear=True,
fraction=True,
)[源代码][源代码]

计算 terms 的最大公约数并将它们组合在一起。

参数:
术语表达式

可以是一个表达式或一系列非基本表达式,这些表达式将被视为一个和中的项来处理。

isprimitivebool, 可选

如果 isprimitive 为 True,_gcd_terms 将不会对项运行原始方法。

清除bool, 可选

它控制从 Add 表达式的分母中移除整数。当为 True(默认)时,所有数值分母将被清除;当为 False 时,只有当所有项的分母均为非 1 的数值时,分母才会被清除。

分数bool, 可选

当为 True 时(默认),会将表达式放在一个共同的分子上。

示例

>>> from sympy import gcd_terms
>>> from sympy.abc import x, y
>>> gcd_terms((x + 1)**2*y + (x + 1)*y**2)
y*(x + 1)*(x + y + 1)
>>> gcd_terms(x/2 + 1)
(x + 2)/2
>>> gcd_terms(x/2 + 1, clear=False)
x/2 + 1
>>> gcd_terms(x/2 + y/2, clear=False)
(x + y)/2
>>> gcd_terms(x/2 + 1/x)
(x**2 + 2)/(2*x)
>>> gcd_terms(x/2 + 1/x, fraction=False)
(x + 2/x)/2
>>> gcd_terms(x/2 + 1/x, fraction=False, clear=False)
x/2 + 1/x
>>> gcd_terms(x/2/y + 1/x/y)
(x**2 + 2)/(2*x*y)
>>> gcd_terms(x/2/y + 1/x/y, clear=False)
(x**2/2 + 1)/(x*y)
>>> gcd_terms(x/2/y + 1/x/y, clear=False, fraction=False)
(x/2 + 1/x)/y

在这种情况下,clear 标志被忽略了,因为返回的表达式是一个有理表达式,而不是一个简单的和。

sympy.core.exprtools.factor_terms(
expr,
radical=False,
clear=False,
fraction=False,
sign=True,
)[源代码][源代码]

从所有参数的项中移除公共因子,而不改变表达式的基本结构。不进行展开或简化(也不处理非交换项)。

参数:
radical: bool, 可选

如果 radical=True,那么所有项的公根将被从 expr 的任何 Add 子表达式中分解出来。

清除bool, 可选

如果 clear=False(默认),那么系数将不会从单个 Add 中分离,如果它们可以被分配以留下一个或多个具有整数系数的项。

分数bool, 可选

如果 fraction=True(默认是 False),那么将为表达式构造一个公共分母。

签名bool, 可选

如果 sign=True(默认),那么即使唯一的公因数是 -1,它也会从表达式中被分解出来。

示例

>>> from sympy import factor_terms, Symbol
>>> from sympy.abc import x, y
>>> factor_terms(x + x*(2 + 4*y)**3)
x*(8*(2*y + 1)**3 + 1)
>>> A = Symbol('A', commutative=False)
>>> factor_terms(x*A + x*A + x*y*A)
x*(y*A + 2*A)

clear 为 False 时,只有当 Add 表达式的所有项的系数都是分数时,才会从 Add 表达式中提取出有理数因子:

>>> factor_terms(x/2 + 1, clear=False)
x/2 + 1
>>> factor_terms(x/2 + 1, clear=True)
(x + 2)/2

如果只能提取出一个 -1,为了 提取它,标志 sign 必须为 False:

>>> factor_terms(-x - y)
-(x + y)
>>> factor_terms(-x - y, sign=False)
-x - y
>>> factor_terms(-2*x - 2*y, sign=False)
-2*(x + y)

种类

class sympy.core.kind.Kind(*args)[源代码][源代码]

种类的基础类。

对象的种类代表了实体所属的数学分类。期望函数和类能够通过其种类识别和过滤参数。

每个对象的类型必须仔细选择,以便体现设计意图。表达式可能根据其参数的类型而有所不同。例如,Add 的参数必须具有相同的类型,因为加法是群运算符,并且生成的 Add() 具有相同的类型。

在性能方面,每种类型都尽可能广泛,并且不基于集合论。例如,NumberKind 不仅包括复数,还包括包含 S.InfinityS.NaN 的表达式,这些并不是严格意义上的数字。

Kind 可能会有参数作为参数。例如,MatrixKind() 可以用一个表示其元素类型的元素来构造。

Kind 以单例的方式运行。相同的签名将返回相同的对象。

sympy.core.kind.NumberKind

NumberKind 的别名

sympy.core.kind.UndefinedKind

UndefinedKind 的别名

sympy.core.kind.BooleanKind

BooleanKind 的别名

排序

sympy.core.sorting.default_sort_key(item, order=None)[源代码][源代码]

返回一个可用于排序的键。

键具有以下结构:

(class_key, (len(args), args), exponent.sort_key(), coefficient)

item 是 Basic 对象或 sympifies 为 Basic 对象的对象(字符串除外)时,此键由 Basic 对象的 sort_key 例程提供。否则,此函数生成该键。

order 参数被传递给 sort_key 例程,用于确定表达式 内部 项的排序方式。(见下文示例)``order`` 选项包括:’lex’、’grlex’、’grevlex’,以及它们的反向值(例如 ‘rev-lex’)。默认的 order 值是 None(这相当于 ‘lex’)。

注释

返回的键对于将项目放入跨平台一致的规范顺序非常有用。它对于直接对表达式列表进行排序并不直接有用:

>>> a, b = x, 1/x

由于 a 只有一个术语,其 sort_key 的值不受 order 影响:

>>> a.sort_key() == a.sort_key('rev-lex')
True

如果 ab 结合,那么键将不同,因为存在可以排序的项:

>>> eq = a + b
>>> eq.sort_key() == eq.sort_key('rev-lex')
False
>>> eq.as_ordered_terms()
[x, 1/x]
>>> eq.as_ordered_terms('rev-lex')
[1/x, x]

但由于这些术语的键独立于 order 的值,当它们单独出现在列表中时,它们不会以不同的方式排序:

>>> sorted(eq.args, key=default_sort_key)
[1/x, x]
>>> sorted(eq.args, key=lambda i: default_sort_key(i, order='rev-lex'))
[1/x, x]

使用这些键获得的术语顺序是,如果这些术语是乘积中的*因子*,将获得的顺序。

尽管它对于快速将表达式按规范顺序排列很有用,但它不会根据操作数、变量幂等定义的复杂性来排序表达式:

>>> sorted([sin(x)*cos(x), sin(x)], key=default_sort_key)
[sin(x)*cos(x), sin(x)]
>>> sorted([x, x**2, sqrt(x), x**3], key=default_sort_key)
[sqrt(x), x, x**2, x**3]

示例

>>> from sympy import S, I, default_sort_key, sin, cos, sqrt
>>> from sympy.core.function import UndefinedFunction
>>> from sympy.abc import x

以下是获取对象键的等效方法:

>>> x.sort_key() == default_sort_key(x)
True

以下是生成键的一些示例:

>>> default_sort_key(UndefinedFunction('f'))
((0, 0, 'UndefinedFunction'), (1, ('f',)), ((1, 0, 'Number'),
    (0, ()), (), 1), 1)
>>> default_sort_key('1')
((0, 0, 'str'), (1, ('1',)), ((1, 0, 'Number'), (0, ()), (), 1), 1)
>>> default_sort_key(S.One)
((1, 0, 'Number'), (0, ()), (), 1)
>>> default_sort_key(2)
((1, 0, 'Number'), (0, ()), (), 2)

虽然 sort_key 是仅为 SymPy 对象定义的方法,但 default_sort_key 将接受任何内容作为参数,因此作为排序键更为稳健。对于以下情况,使用 key= lambda i: i.sort_key() 会失败,因为 2 没有 sort_key 方法;这就是为什么使用 default_sort_key。请注意,它还处理了类似整数的非字符串项的符号化:

>>> a = [2, I, -I]
>>> sorted(a, key=default_sort_key)
[2, -I, I]

返回的键可以用于任何可以指定键的函数中,例如排序、最小值、最大值等…:

>>> a.sort(key=default_sort_key); a[0]
2
>>> min(a, key=default_sort_key)
2
sympy.core.sorting.ordered(seq, keys=None, default=True, warn=False)[源代码][源代码]

返回一个序列的迭代器,其中键用于以保守的方式打破平局:如果在应用一个键后没有平局,则不会计算其他键。

如果没有提供键,或者提供的键不能解决所有平局(但仅当 default 为 True 时),将应用两个默认键。这两个键是 _nodes``(它将较小的表达式放在较大的表达式之前)和 ``default_sort_key,后者(如果对象的 sort_key 定义正确)应该能解决任何平局。这种策略类似于 Basic.compare 进行的排序,但不同的是 ordered 从不根据对象的名称做出决定。

如果 warn 为 True,则在没有任何剩余键来打破平局时会引发错误。如果预期不应有非相同项之间的平局,则可以使用此选项。

注释

装饰排序是一种对序列进行排序的最快方法之一,当需要对特殊项目进行比较时:序列被装饰,根据装饰(例如将所有字母转换为小写)进行排序,然后取消装饰。如果希望对具有相同装饰值的项目打破平局,可以使用第二个键。但如果第二个键的计算成本很高,那么用两个键装饰所有项目是低效的:只有那些具有相同第一个键值的项目才需要被装饰。此函数仅在需要打破平局时才依次应用键。通过生成一个迭代器,尽可能延迟使用平局打破器。

这个函数最适合在预期第一个键是一个好的哈希函数的情况下使用;如果没有从应用一个键中获得唯一哈希,那么那个键就不应该被使用。然而,例外的是,即使有很多冲突,如果第一个组很小,并且不需要处理列表中的所有项目,那么就不会浪费时间去排序那些不感兴趣的内容。例如,如果一个人在寻找列表中的最小值,并且有几个标准用于定义排序顺序,那么如果候选人的第一个组相对于正在处理的项目数量很小,这个函数将能够快速返回那个最小值。

示例

>>> from sympy import ordered, count_ops
>>> from sympy.abc import x, y

count_ops 不足以打破此列表中的平局,前两项按其原始顺序出现(即排序是稳定的):

>>> list(ordered([y + 2, x + 2, x**2 + y + 3],
...    count_ops, default=False, warn=False))
...
[y + 2, x + 2, x**2 + y + 3]

default_sort_key 允许打破平局:

>>> list(ordered([y + 2, x + 2, x**2 + y + 3]))
...
[x + 2, y + 2, x**2 + y + 3]

这里,序列按长度排序,然后按和排序:

>>> seq, keys = [[[1, 2, 1], [0, 3, 1], [1, 1, 3], [2], [1]], [
...    lambda x: len(x),
...    lambda x: sum(x)]]
...
>>> list(ordered(seq, keys, default=False, warn=False))
[[1], [2], [1, 2, 1], [0, 3, 1], [1, 1, 3]]

如果 warn 为 True,如果用于打破平局的键不足,则会引发错误:

>>> list(ordered(seq, keys, default=False, warn=True))
Traceback (most recent call last):
...
ValueError: not enough keys to break ties

随机

当您需要在 SymPy 库代码中使用随机数时,请从这里导入,以便 SymPy 只有一个生成器在工作。从这里导入的行为应与从 Python 的 random 模块导入相同。但这里只包含 SymPy 当前使用的例程。要使用其他例程,请导入 rng 并直接访问该方法。例如,要捕获生成器的当前状态,请使用 rng.getstate()

这里故意没有提供 Random 导入。如果你想控制生成器的状态,请导入 seed 并调用它,可以选择带参数或不带参数来设置状态。

示例

>>> from sympy.core.random import random, seed
>>> assert random() < 1
>>> seed(1); a = random()
>>> b = random()
>>> seed(1); c = random()
>>> assert a == c
>>> assert a != b  # remote possibility this will fail
sympy.core.random.random_complex_number(
a=2,
b=-1,
c=3,
d=1,
rational=False,
tolerance=None,
)[源代码][源代码]

返回一个随机的复数。

为了减少遇到分支切割或其他问题的可能性,我们保证 b <= Im z <= d, a <= Re z <= c

当 rational 为 True 时,在指定容差范围内,如果存在,则获得一个随机数的合理近似值。

sympy.core.random.verify_numerically(
f,
g,
z=None,
tol=1e-06,
a=2,
b=-1,
c=3,
d=1,
)[源代码][源代码]

在参数 z 中计算时,数值测试 f 和 g 是否一致。

如果 z 为 None,将测试所有符号。此例程不测试是否存在精度高于 15 位的浮点数,因此如果存在,由于舍入误差,您的结果可能与预期不符。

示例

>>> from sympy import sin, cos
>>> from sympy.abc import x
>>> from sympy.core.random import verify_numerically as tn
>>> tn(sin(x)**2 + cos(x)**2, 1, x)
True
sympy.core.random.test_derivative_numerically(
f,
z,
tol=1e-06,
a=2,
b=-1,
c=3,
d=1,
)[源代码][源代码]

数值测试符号计算的函数 f 对 z 的导数是否正确。

此例程不测试是否存在精度高于15位的浮点数,因此如果存在,由于舍入误差,您的结果可能与预期不符。

示例

>>> from sympy import sin
>>> from sympy.abc import x
>>> from sympy.core.random import test_derivative_numerically as td
>>> td(sin(x), x)
True
sympy.core.random._randrange(seed=None)[源代码][源代码]

返回一个 randrange 生成器。

seed 可以是

  • 无 - 返回随机种子的生成器

  • int - 返回一个以 int 为种子的生成器

  • list - 返回的值将按照给定的顺序从列表中获取;提供的列表不会被修改。

示例

>>> from sympy.core.random import _randrange
>>> rr = _randrange()
>>> rr(1000) 
999
>>> rr = _randrange(3)
>>> rr(1000) 
238
>>> rr = _randrange([0, 5, 1, 3, 4])
>>> rr(3), rr(3)
(0, 1)
sympy.core.random._randint(seed=None)[源代码][源代码]

返回一个 randint 生成器。

seed 可以是

  • 无 - 返回随机种子的生成器

  • int - 返回一个以 int 为种子的生成器

  • list - 返回的值将按照给定的顺序从列表中获取;提供的列表不会被修改。

示例

>>> from sympy.core.random import _randint
>>> ri = _randint()
>>> ri(1, 1000) 
999
>>> ri = _randint(3)
>>> ri(1, 1000) 
238
>>> ri = _randint([0, 5, 1, 2, 4])
>>> ri(1, 3), ri(1, 3)
(1, 2)

遍历

sympy.core.traversal.bottom_up(rv, F, atoms=False, nonbasic=False)[源代码][源代码]

从下到上对表达式树中的所有表达式应用 F。如果 atoms 为 True,即使没有参数也应用 F;如果 nonbasic 为 True,尝试对非 Basic 对象应用 F

sympy.core.traversal.postorder_traversal(node, keys=None)[源代码][源代码]

对树进行后序遍历。

此生成器递归地以后序方式生成它访问过的节点。也就是说,它会深度优先地遍历树,在生成节点本身之前生成其所有子节点的后序遍历。

参数:
节点SymPy 表达式

要遍历的表达式。

(默认 None) 排序键

用于排序 Basic 对象参数的键。当为 None 时,Basic 对象的参数以任意顺序处理。如果定义了键,它将被传递给 ordered() 作为唯一用于排序参数的键;如果 key 仅为 True,则将使用 ordered 的默认键(节点计数和 default_sort_key)。

Yields:
子树SymPy 表达式

树中的所有子树。

示例

>>> from sympy import postorder_traversal
>>> from sympy.abc import w, x, y, z

除非给出键,否则节点将按照遇到的顺序返回;只需传递 key=True 将保证遍历是唯一的。

>>> list(postorder_traversal(w + (x + y)*z)) 
[z, y, x, x + y, z*(x + y), w, w + z*(x + y)]
>>> list(postorder_traversal(w + (x + y)*z, keys=True))
[w, z, x, y, x + y, z*(x + y), w + z*(x + y)]
sympy.core.traversal.preorder_traversal(node, keys=None)[源代码][源代码]

对树进行前序遍历。

此迭代器以先序方式递归生成它访问过的节点。也就是说,它先生成当前节点,然后按广度优先顺序遍历树,生成所有节点的先序遍历。

对于一个表达式,遍历的顺序取决于 .args 的顺序,这在许多情况下可能是任意的。

参数:
节点SymPy 表达式

要遍历的表达式。

(默认 None) 排序键

用于对 Basic 对象的参数进行排序的键。当为 None 时,Basic 对象的参数将以任意顺序处理。如果定义了 key,它将被传递给 ordered() 作为唯一的键,用于对参数进行排序;如果 key 仅为 True,则将使用 ordered 的默认键。

Yields:
子树SymPy 表达式

树中的所有子树。

示例

>>> from sympy import preorder_traversal, symbols
>>> x, y, z = symbols('x y z')

除非给出键,否则节点将按照遇到的顺序返回;只需传递 key=True 将保证遍历是唯一的。

>>> list(preorder_traversal((x + y)*z, keys=None)) 
[z*(x + y), z, x + y, y, x]
>>> list(preorder_traversal((x + y)*z, keys=True))
[z*(x + y), z, x + y, x, y]
sympy.core.traversal.use(expr, func, level=0, args=(), kwargs={})[源代码][源代码]

使用 func 在给定级别上转换 expr

示例

>>> from sympy import use, expand
>>> from sympy.abc import x, y
>>> f = (x + y)**2*x + 1
>>> use(f, expand, level=2)
x*(x**2 + 2*x*y + y**2) + 1
>>> expand(f)
x**3 + 2*x**2*y + x*y**2 + 1
sympy.core.traversal.walk(e, *target)[源代码][源代码]

遍历给定类型的参数(目标)并返回遍历过的参数列表;未指定类型的参数不会被遍历。

参见

bottom_up

示例

>>> from sympy.core.traversal import walk
>>> from sympy import Min, Max
>>> from sympy.abc import x, y, z
>>> list(walk(Min(x, Max(y, Min(1, z))), Min))
[Min(x, Max(y, Min(1, z)))]
>>> list(walk(Min(x, Max(y, Min(1, z))), Min, Max))
[Min(x, Max(y, Min(1, z))), Max(y, Min(1, z)), Min(1, z)]