- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我了解,str
将 SymPy 表达式转换为字符串,sympify
将字符串转换为 SymPy 表达式。因此,我希望以下内容成立(对于合理的表达)。
>>> sy.sympify(str(expr)) == expr
True
我试过了,对于简单的例子确实是这样(例如,expr = x+y
)。但是,当我用下面的表达式尝试时,它不起作用:
import sympy as sy
a = sy.symbols("a")
A = sy.Matrix(3,3, a)
c0,c1,c2 = sy.symbols("c0 c1 c2", positive = True)
c1*c2**2*a(0, 1)**2*a(1, 2)*a(2, 2) - c1*c2**2*a(0, 1)**2*a(2, 2)**2 - c1*c2**2*a(0, 1)*a(0, 2)*a(1, 1)*a(2, 2) + c1*c2**2*a(0, 1)*a(0, 2)*a(2, 1)*a(2, 2) - c1*c2**2*a(0, 1)*a(1, 1)*a(1, 2)*a(2, 2) + c1*c2**2*a(0, 1)*a(1, 1)*a(2, 2)**2 + c1*c2**2*a(0, 2)*a(1, 1)**2*a(2, 2) - c1*c2**2*a(0, 2)*a(1, 1)*a(2, 1)*a(2, 2) - c1*a(0, 0)**2*a(1, 1)*a(2, 1) + c1*a(0, 0)**2*a(2, 1)**2 + c1*a(0, 0)*a(0, 1)*a(1, 1)*a(2, 0) - c1*a(0, 0)*a(0, 1)*a(2, 0)*a(2, 1) + c1*a(0, 0)*a(1, 0)*a(1, 1)*a(2, 1) - c1*a(0, 0)*a(1, 0)*a(2, 1)**2 - c1*a(0, 0)*a(1, 1)**2*a(2, 0) + c1*a(0, 0)*a(1, 1)*a(2, 0)*a(2, 1) - c2**2*a(0, 0)*a(0, 1)*a(1, 2)*a(2, 2) + c2**2*a(0, 0)*a(0, 1)*a(2, 2)**2 + c2**2*a(0, 0)*a(0, 2)*a(1, 1)*a(2, 2) - c2**2*a(0, 0)*a(0, 2)*a(2, 1)*a(2, 2) + c2**2*a(0, 1)*a(1, 0)*a(1, 2)*a(2, 2) - c2**2*a(0, 1)*a(1, 0)*a(2, 2)**2 - c2**2*a(0, 2)*a(1, 0)*a(1, 1)*a(2, 2) + c2**2*a(0, 2)*a(1, 0)*a(2, 1)*a(2, 2) + c2*a(0, 0)**2*a(1, 2)*a(2, 1) - c2*a(0, 0)**2*a(2, 1)*a(2, 2) - c2*a(0, 0)*a(0, 1)*a(1, 2)*a(2, 0) + c2*a(0, 0)*a(0, 1)*a(2, 0)*a(2, 2) - c2*a(0, 0)*a(1, 0)*a(1, 2)*a(2, 1) + c2*a(0, 0)*a(1, 0)*a(2, 1)*a(2, 2) + c2*a(0, 0)*a(1, 1)*a(1, 2)*a(2, 0) - c2*a(0, 0)*a(1, 1)*a(2, 0)*a(2, 2)
有人能告诉我为什么它对这个表达式不起作用吗?
PS:我知道我应该举一个最小的工作示例,但我只是没有找到表达式的哪一部分导致了问题。
最佳答案
一个最小的例子是
x = sy.symbols("x", positive=True)
expr = 2*x
sy.sympify(str(expr)) == expr # False
这很有道理:expr
的字符串表示形式,即 "2*x"
,没有关于 x 为正数的信息。因此,sy.sympify(str(expr))
创建了一个名为“x”并带有默认假设的新符号。这是与原始符号不同的符号。
如果没有正假设,比较将返回 True。
保持正假设的一种方法是使用 locals
字典明确说明字符串中的字符“x”表示现有符号 x
:
x = sy.symbols("x", positive=True)
expr = 2*x
sy.sympify(str(expr), locals={"x": x}) == expr # True
关于python - sy.sympify(str(expression)) 不等于表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50694693/
假设我有以下字符串 str1 = "a*(-d*(b+d)+d*(e*f))" 如果我简化它,结果是 a*(d*e*f - d*(b + d)) 但我不希望 Sympy 删除那些括号。我希望最终的表达
很容易理解 from sympy import * x = symbols('x', real=True) y = sin(x) dy = y.diff(x) ddy = y.diff(x, 2) p
是否有包含自定义方法的 sympify() 字符串的解决方案? Sympy 拥有漂亮的函数 sympify。 它可以将字符串简化为 sympy 函数并简化所有表达式。不错! 它允许将“sympify”
我正在编写一个脚本,通过 pandas 将 CSV 中的值读取到 DataFrame 中。值“A”和“B”是方程式的输入。该等式是从外部程序的 XML 输出文件中获得的。该等式逐行提供 DataFra
我最近遇到了一个我无法修复的 SympPy 问题;我是图书馆的新手,我花了很多时间在网上寻找解决方案,但没有找到,这就是我来到这里的原因。 这就是问题所在:我有一个 javascript 网络应用程序
以下代码可以简化逻辑表达式: sympify('a&b') # And(a, b) sympify('a|b') # Or(a, b) 但是如何得到 Not(a) 的结果呢? 最佳答案 原来你要找的符
据我了解,str 将 SymPy 表达式转换为字符串,sympify 将字符串转换为 SymPy 表达式。因此,我希望以下内容成立(对于合理的表达)。 >>> sy.sympify(str(expr)
我正在编写一个程序,用户需要能够使用自己编写的数学函数,其中包含来自 numpy 和 scipy 的函数,例如。 scipy.special.wofz()。 这些函数将存储在文件中并由程序作为字符串导
我正在尝试解析(普通)微分方程。理想情况下,我更愿意使用现有的解析器 - 否则,这会直接导致诸如语法之类的事情,并且可能相当费力。 编辑:想法是将方程提供给 SymPy 的求解器和积分器,并用它做一些
我有一个 pandas 数据框,有 4 列,分别代表 alpha 和 beta 2 个点的 X 和 Y 坐标。我想返回 alpha 和 beta 之间的欧几里德距离。 这是我的数据框: alph
我们知道 Python 的 eval() 是邪恶的 http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html 整个 Stac
我在同时使用 sympify 和 Lambda 时遇到问题。我想声明一个函数 (func_mx),它接受参数 S。 然后我想将其包含在符号表达式中 X 这是我尝试执行的代码: import sympy
我是一名优秀的程序员,十分优秀!