分区

class sympy.combinatorics.partitions.Partition(*partition)[源代码][源代码]

此类表示一个抽象分区。

一个分区是一些不相交集合的集合,这些集合的并集等于给定的集合。

属性:
RGS

返回分区的“受限增长字符串”。

args

返回 ‘self’ 的参数元组。

assumptions0

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

boundary

一个集合的边界或前沿。

canonical_variables

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

closure

返回集合闭包的属性方法。

expr_free_symbols
free_symbols

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

func

表达式中的顶级函数。

inf

self 的下确界。

interior

返回集合内部的属性方法。

is_Complement
is_EmptySet
is_Intersection
is_UniversalSet
is_algebraic
is_antihermitian
is_closed

一个检查集合是否闭合的属性方法。

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_open

检查集合是否为开集的属性方法。

is_polar
is_positive
is_prime
is_rational
is_real
is_transcendental
is_zero
kind

集合的种类

measure

self 的 (勒贝格) 测度

partition

返回分区为排序后的列表的列表。

rank

获取分区的等级。

sup

self 的上确界。

方法

as_content_primitive([radical, clear])

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

as_dummy()

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

as_relational(symbol)

用等式和逻辑运算符重写有限集。

atoms(*types)

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

class_key()

类的好顺序。

compare(other)

complement(universe)

相对于给定全集的 'self' 的补集。

contains(other)

返回一个 SymPy 值,指示 other 是否包含在 self 中:如果包含则返回 true,如果不包含则返回 false,否则返回一个未求值的 Contains 表达式(或者,在 ConditionSet 和 FiniteSet/Intervals 的并集的情况下,返回一个表示包含条件的表达式)。

count(query)

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

count_ops([visual])

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

doit(**hints)

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

dummy_eq(other[, symbol])

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

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

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

find(query[, group])

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

from_rgs(rgs, elements)

从受限增长字符串创建一个集合分区。

fromiter(args, **assumptions)

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

has(*patterns)

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

has_free(*patterns)

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

has_xfree(s)

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

intersect(other)

返回 'self' 和 'other' 的交集。

intersection(other)

别名 intersect()

is_disjoint(other)

如果 selfother 不相交,则返回 True。

is_proper_subset(other)

如果 selfother 的真子集,则返回 True。

is_proper_superset(other)

如果 selfother 的真超集,则返回 True。

is_same(b[, approx])

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

is_subset(other)

如果 selfother 的子集,则返回 True。

is_superset(other)

如果 selfother 的超集,则返回 True。

isdisjoint(other)

别名 is_disjoint()

issubset(other)

别名为 is_subset()

issuperset(other)

别名 is_superset()

match(pattern[, old])

模式匹配。

matches(expr[, repl_dict, old])

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

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

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

powerset()

找到 self 的幂集。

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)

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

symmetric_difference(other)

返回 selfother 的对称差集。

union(other)

返回 selfother 的并集。

xreplace(rule)

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

复制

could_extract_minus_sign

is_hypergeometric

property RGS

返回分区的“受限增长字符串”。

示例

>>> from sympy.combinatorics import Partition
>>> a = Partition([1, 2], [3], [4, 5])
>>> a.members
(1, 2, 3, 4, 5)
>>> a.RGS
(0, 0, 1, 2, 2)
>>> a + 1
Partition({3}, {4}, {5}, {1, 2})
>>> _.RGS
(0, 0, 1, 2, 3)
classmethod from_rgs(rgs, elements)[源代码][源代码]

从受限增长字符串创建一个集合分区。

示例

>>> from sympy.combinatorics import Partition
>>> Partition.from_rgs([0, 1, 2, 0, 1], list('abcde'))
Partition({c}, {a, d}, {b, e})
>>> Partition.from_rgs([0, 1, 2, 0, 1], list('cbead'))
Partition({e}, {a, c}, {b, d})
>>> a = Partition([1, 4], [2], [3, 5])
>>> Partition.from_rgs(a.RGS, a.members)
Partition({2}, {1, 4}, {3, 5})
property partition

返回分区为排序后的列表的列表。

示例

>>> from sympy.combinatorics import Partition
>>> Partition([1], [2, 3]).partition
[[1], [2, 3]]
property rank

获取分区的等级。

示例

>>> from sympy.combinatorics import Partition
>>> a = Partition([1, 2], [3], [4, 5])
>>> a.rank
13
sort_key(order=None)[源代码][源代码]

返回一个可用于排序的规范键。

排序基于分区的大小和排序后的元素,并使用排名来打破平局。

示例

>>> from sympy import default_sort_key
>>> from sympy.combinatorics import Partition
>>> from sympy.abc import x
>>> a = Partition([1, 2])
>>> b = Partition([3, 4])
>>> c = Partition([1, x])
>>> d = Partition(list(range(4)))
>>> l = [d, b, a + 1, a, c]
>>> l.sort(key=default_sort_key); l
[Partition({1, 2}), Partition({1}, {2}), Partition({1, x}), Partition({3, 4}), Partition({0, 1, 2, 3})]
class sympy.combinatorics.partitions.IntegerPartition(partition, integer=None)[源代码][源代码]

此类表示一个整数分区。

属性:
args

返回 ‘self’ 的参数元组。

assumptions0

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

canonical_variables

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

conjugate

计算自身的共轭分区。

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_dict()

返回一个字典,其键是分区整数,值是该整数的重数。

as_dummy()

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

as_ferrers([char])

打印一个分区的费雷尔图。

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 中的表达式之间寻找匹配。

next_lex()

返回整数 n 的下一个字典序分区,如果分区是 [1, ..., 1],则回绕到 [n]。

prev_lex()

返回整数 n 在词典顺序中的前一个分区,如果分区是 [n],则回绕到 [1, ..., 1]。

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

参考文献

as_dict()[源代码][源代码]

返回一个字典,其键是分区整数,值是该整数的重数。

示例

>>> from sympy.combinatorics.partitions import IntegerPartition
>>> IntegerPartition([1]*3 + [2] + [3]*4).as_dict()
{1: 3, 2: 1, 3: 4}
as_ferrers(char='#')[源代码][源代码]

打印一个分区的费雷尔图。

示例

>>> from sympy.combinatorics.partitions import IntegerPartition
>>> print(IntegerPartition([1, 1, 5]).as_ferrers())
#####
#
#
property conjugate

计算自身的共轭分区。

示例

>>> from sympy.combinatorics.partitions import IntegerPartition
>>> a = IntegerPartition([6, 3, 3, 2, 1])
>>> a.conjugate
[5, 4, 3, 1, 1, 1]
next_lex()[源代码][源代码]

返回整数 n 的下一个字典序分区,如果分区是 [1, …, 1],则回绕到 [n]。

示例

>>> from sympy.combinatorics.partitions import IntegerPartition
>>> p = IntegerPartition([3, 1])
>>> print(p.next_lex())
[4]
>>> p.partition < p.next_lex().partition
True
prev_lex()[源代码][源代码]

返回整数 n 在词典顺序中的前一个分区,如果分区是 [n],则回绕到 [1, …, 1]。

示例

>>> from sympy.combinatorics.partitions import IntegerPartition
>>> p = IntegerPartition([4])
>>> print(p.prev_lex())
[3, 1]
>>> p.partition > p.prev_lex().partition
True
sympy.combinatorics.partitions.random_integer_partition(n, seed=None)[源代码][源代码]

生成一个总和为 n 的随机整数分区,作为一个反向排序的整数列表。

示例

>>> from sympy.combinatorics.partitions import random_integer_partition

对于以下内容,给定了一个种子,以便可以显示已知值;实际上,种子不会被给出。

>>> random_integer_partition(100, seed=[1, 1, 12, 1, 2, 1, 85, 1])
[85, 12, 2, 1]
>>> random_integer_partition(10, seed=[1, 2, 3, 1, 5, 1])
[5, 3, 1, 1]
>>> random_integer_partition(1)
[1]
sympy.combinatorics.partitions.RGS_generalized(m)[源代码][源代码]

计算 m + 1 个广义无限制增长字符串,并将它们作为矩阵的行返回。

示例

>>> from sympy.combinatorics.partitions import RGS_generalized
>>> RGS_generalized(6)
Matrix([
[  1,   1,   1,  1,  1, 1, 1],
[  1,   2,   3,  4,  5, 6, 0],
[  2,   5,  10, 17, 26, 0, 0],
[  5,  15,  37, 77,  0, 0, 0],
[ 15,  52, 151,  0,  0, 0, 0],
[ 52, 203,   0,  0,  0, 0, 0],
[203,   0,   0,  0,  0, 0, 0]])
sympy.combinatorics.partitions.RGS_enum(m)[源代码][源代码]

RGS_enum 计算大小为 m 的超集中可能的受限增长字符串的总数。

示例

>>> from sympy.combinatorics.partitions import RGS_enum
>>> from sympy.combinatorics import Partition
>>> RGS_enum(4)
15
>>> RGS_enum(5)
52
>>> RGS_enum(6)
203

我们可以通过实际生成分区来检查枚举是否正确。这里,生成了4个项目的15个分区:

>>> a = Partition(list(range(4)))
>>> s = set()
>>> for i in range(20):
...     s.add(a)
...     a += 1
...
>>> assert len(s) == 15
sympy.combinatorics.partitions.RGS_unrank(rank, m)[源代码][源代码]

给定超集大小,生成无排序的受限增长字符串。

示例

>>> from sympy.combinatorics.partitions import RGS_unrank
>>> RGS_unrank(14, 4)
[0, 1, 2, 3]
>>> RGS_unrank(0, 4)
[0, 0, 0, 0]
sympy.combinatorics.partitions.RGS_rank(rgs)[源代码][源代码]

计算受限增长字符串的秩。

示例

>>> from sympy.combinatorics.partitions import RGS_rank, RGS_unrank
>>> RGS_rank([0, 1, 2, 1, 3])
42
>>> RGS_rank(RGS_unrank(4, 7))
4