分区¶
- 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)如果
self
和other
不相交,则返回 True。is_proper_subset
(other)如果
self
是other
的真子集,则返回 True。is_proper_superset
(other)如果
self
是other
的真超集,则返回 True。is_same
(b[, approx])如果 a 和 b 结构相同则返回 True,否则返回 False。
is_subset
(other)如果
self
是other
的子集,则返回 True。is_superset
(other)如果
self
是other
的超集,则返回 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)返回
self
和other
的对称差集。union
(other)返回
self
和other
的并集。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]
- 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