python - 无法将 SymPy 变量约束为实数
问题描述
SymPy 给了我复杂的解决方案,即使我将变量限制为真实的,就像在这个答案中一样。
这是一个找到单位球体与平面 X=1 的交点的示例。应该有 1 个真正的解决方案,(1,0,0)。
>>> import sympy
>>> x,y,z = sympy.symbols('x,y,z', real=True)
>>> list(sympy.solve([x**2 + y**2 + z**2 - 1, x - 1], [x,y,z]))
[(1, -I*z, z), (1, I*z, z)]
这些是正确的,但不是真实的。
我不能使用solveset(…, domain=S.Reals)
,因为solvset似乎不支持方程组。
解决方案
这似乎是 sympy 和已知问题的公开问题: https ://github.com/sympy/sympy/issues/9973
您可能会破解一个函数,该函数使用启发式检查是否存在真正的解决方案 - 对于每个复杂部分,它将求解将复杂部分设置为 0 的方程)。如果解决方案不简单,这可能会导致分支和大量工作。
推荐阅读
- rest - Docker REST API:创建图像问题:需要参数 fromSrc 的帮助:
- python - 如何检查字典中的至少一个键是否作为Python中另一个字典中的值存在?
- javascript - AngularJS如何检查多个http请求是否完成并在所有响应完成后做某事
- node.js - node-cmd 增加 maxBuffer 大小
- mysql - MySQL 列值不存在于同一张表的其他列中
- wix - Wix - 卸载时运行批处理文件
- c - 直接从 typedef 结构定义创建指针
- r - 如何提取关于我的线性回归线的信息(例如截距和梯度)
- sql - 计算特定名称的行数
- html - Css flex 等于