如何解决无法将SymPy变量约束为实数
即使我将变量约束为实数,例如this answer,SymPy仍为我提供了复杂的解决方案。
下面是查找单位球面与平面X = 1的交点的示例。应该有1个真实的解决方案(1,0)。
>>> import sympy
>>> x,y,z = sympy.symbols('x,z',real=True)
>>> list(sympy.solve([x**2 + y**2 + z**2 - 1,x - 1],[x,z]))
[(1,-I*z,z),(1,I*z,z)]
这些是正确的,但不是真实的。
我不能使用solveset(…,domain=S.Reals)
,因为Solveset似乎不支持方程组。
解决方法
这似乎是sympy的公开问题和已知问题: https://github.com/sympy/sympy/issues/9973
您可能会破解一个使用启发式方法检查是否存在实际解决方案的函数-对于每个复杂零件,它将求解将复杂零件设置为0的方程式。如果解决方案不简单,则可能会导致分支工作和大量工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。