如何生成元素比指定SymPy集合内元素大2的新集合
实现方案
方法1:使用ImageSet(推荐,匹配集合映射场景)
ImageSet是SymPy专门用于对集合所有元素做映射变换的工具,直接满足你给每个元素加2的需求,代码如下:
from sympy import FiniteSet, ImageSet, Lambda, Symbol y = FiniteSet(-3, 3) x = Symbol('x') # 定义映射规则:将集合y的每个元素x映射为x+2 new_set = ImageSet(Lambda(x, x + 2), y) print(new_set) # 输出结果为 {-1, 5}
方法2:修复ConditionalSet写法
你原有代码报错的原因是:Python原生的in运算符无法对SymPy符号变量做符号化的包含关系判断,需要替换为SymPy内置的Contains函数来表达条件:
from sympy import FiniteSet, ConditionalSet, Symbol, S, Contains y = FiniteSet(-3, 3) x = Symbol('x') new_set = ConditionalSet(x, Contains(x - 2, y), S.Reals) print(new_set.doit()) # 执行后得到 {-1, 5}
内容的提问来源于stack exchange,提问作者Kevin Moore
相关产品推荐
相关产品推荐

