Sympy solve方法未返回全部解,是否使用方式有误?
SymPy solve方法未返回全部解的问题分析
你没有正确使用solve方法,问题出在传入的参数逻辑上:
- 直接将
y1和y2传入solve时,SymPy会默认求解**y1=0且y2=0**的联立方程组,也就是同时满足x²=0和x=0的解,自然只有x=0。 - 但你的实际需求是求解
y1=y2的解(即x²=x),需要把这个等式转化为SymPy能识别的方程形式。
正确的写法有两种:
- 直接传入等式(使用
==构建方程):
import sympy as sp x = sp.symbols('x') y1 = x**2 y2 = x sp.solve(y1 == y2, x, dict=True)
- 传入差值为0的表达式:
import sympy as sp x = sp.symbols('x') y1 = x**2 y2 = x sp.solve(y1 - y2, x, dict=True)
两种写法都会返回正确的全部解:[{x: 0}, {x: 1}]
内容的提问来源于stack exchange,提问作者R Walser
相关产品推荐
相关产品推荐

