【问题标题】:Managing cases of an expression containing positive integers管理包含正整数的表达式的情况
【发布时间】:2021-09-25 02:17:22
【问题描述】:

我有很多不同的表达方式,我想用 sympy 来简化。一个非常简单的例子是

form sympy import *
k=Symbol('k',integer=True,nonnegative=True)    
term=( 1-exp(-j*2*pi*k) )/(1-exp(-j*2*pi*k/5) )

结果我得到 term=0,但我希望 k=0 时 term=5,在所有其他情况下 term 为零。有没有一种简单的方法来简化 k=0 和 k!=0

【问题讨论】:

  • 对于 k=0,你的表达式是 0/0 所以未定义。
  • 是的,但是 sympy 返回零,所以未定义的属性消失了。
  • 问题是“我希望 k=0 的 term=5”,但是你有一个 0/0。也许这是你感兴趣的极限。
  • 感谢您的 cmets。在最后一步中,我有兴趣获得限制,但在第一步中,我想知道是否有一种通用方法可以以某种方式检测表达式未定义的 k 值。因为 k 是非负 term=0,所以 k>0 将是一个很好的结果。我只是想将我明确定义的“所有”k 值设为零。
  • 如果您不对k 使用假设,那么您将得到一个可以分为分子和分母的表达式,然后您可以分别检查其中一个为零的条件。

标签: python sympy simplify


【解决方案1】:

我仍然不清楚您真正想要什么,但也许这会有所帮助。如果您不将k 声明为整数,则分子不会自动计算为零,然后您可以分别操作分子和分母表达式以找出它们何时为零:

In [24]: k = Symbol('k')

In [25]: term = (1 - exp(-I*2*pi*k))/(1 - exp(-I*2*pi*k/5))

In [26]: num, den = term.as_numer_denom()

In [27]: solveset(num, k)
Out[27]: ℤ

In [28]: solveset(den, k)
Out[28]: {5⋅n │ n ∊ ℤ}

【讨论】:

    猜你喜欢
    • 2013-05-23
    • 2014-01-14
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多