python - 在 sympy 中集成分段函数时出现错误结果

标签 python sympy

我开始使用 sympy。我计算了一个卷积,但结果不正确:

enter image description here

enter image description here

这个结果是错误的:正确的结果是

enter image description here

那我做错了什么?我之前用sympy来整合分段函数,没问题...


代码:

from sympy import *
init_session()

f = lambda x: Piecewise( (1 , (x >= -1) & (x <= 1)) , (0 , True) )
Conv = lambda x: integrate( f(x-y)*f(y) , (y, -oo, +oo) )

最佳答案

你没有做错任何事。 Sympy 对两个分段表达式的乘积有疑问。通过调用 piecewise_fold(f(x-y)*f(y)),您可以看到它无法将此乘积分类,将其保留为嵌套的 Piecewise 构造。

Piecewise((Piecewise((1, And(x - y <= 1, x - y >= -1)), (0, True)), And(y <= 1, y >= -1)), (0, True))

符号积分例程在这个嵌套的东西上绊倒了,这可能值得 filing an issue on GitHub .

解决方法

如果您手动展平这个嵌套的 Piecewise,集成工作正常。

g = Piecewise((1, And(x-y <= 1, x-y >= -1, y <= 1, y >= -1)), (0, True))
integrate(g, (y, -oo, +oo))

输出 Min(1, x + 1) - Min(1, x + 1, Max(-1, x - 1))correct尽管可能不是人们期望的形式。

关于python - 在 sympy 中集成分段函数时出现错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43852159/

相关文章:

python - Anaconda如何导入keras-rl

python - 偶尔为变量赋值(占位符与 feed_dict)

python - 连续递增子序列

python - 将数据帧转换为不带括号的记录列表

python - 使用 numpy 数组的 sympy 数字

python - 如何在 sympy 1.3 上进行区间运算?

python - 获取 sympy 解决方案的某些部分

python - 如何转置 sympy 矩阵

python - 在 SymPy 中使用统计表达式而不指定分布

python - 在 python 中使用变量作为字符串查询以在 url 中传递参数