gpt4 book ai didi

python - 处理由 sympy integrate 返回的分段方程

转载 作者:太空狗 更新时间:2023-10-29 18:03:58 28 4
gpt4 key购买 nike

在 sympy 中,我有一个返回 Piecewise 对象的积分,例如

In [2]: from sympy.abc import x,y,z

In [3]: test = exp(-x**2/z**2)

In [4]: itest = integrate(test,(x,0,oo))

In [5]: itest
Out[5]:
⎧ ___
⎪ ╲╱ π ⋅z │ ⎛ 1 ⎞│ π
⎪ ─────── for │periodic_argument⎜──────────────, ∞⎟│ ≤ ─
⎪ 2 │ ⎜ 2 ⎟│ 2
⎪ │ ⎝polar_lift (z) ⎠│

⎪∞
⎪⌠
⎨⎮ 2
⎪⎮ -x
⎪⎮ ───
⎪⎮ 2
⎪⎮ z
⎪⎮ ℯ dx otherwise
⎪⌡
⎪0

我只想提取这个分段方程的第一个分支,换句话说,我希望能够执行类似itest.parts(0)的操作来简单地提取平方根(圆周率)*z/2。我似乎找不到任何方法来执行此操作,但也许我在文档中使用了错误的搜索词。有什么想法吗?

编辑

四处寻找,我设法发现如果我执行 itest.args[0][0] 我可以提取这个表达式。然而,这似乎有点像 hack。有没有更好的方法?

最佳答案

一般来说,使用.args 是访问部分表达式的正确方法。

不过,在这种情况下,有一个integrate选项可以让您忽略收敛条件

In [39]: integrate(test, (x, 0, oo), conds='none')
Out[39]:
___
╲╱ π ⋅z
───────
2

此外,如果您明确地设置您对变量已知的假设,收敛条件通常会自行解决(在这种情况下,对于 z 的任何简单假设似乎都不会发生,尽管).例如,如果您知道 z 是真实的,请使用 z = Symbol('z', real=True)。通常假设事情是真实的,甚至是积极的,当你知道这将有助于确保收敛。

关于python - 处理由 sympy integrate 返回的分段方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420816/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com