You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sympy使用solve函数求解后如何返回分数形式结果

Sympy solve函数返回分数形式结果的实现方法

你用Rational、Fraction未生效,通常是传入solve的方程参数本身为浮点数类型,Sympy默认优先做数值计算返回浮点结果,按以下方案处理即可:

  • 方案1:定义方程时所有数值用Rational包裹
    从根源保证求解时就用精确有理数定义方程的所有系数、常数项,避免使用Python原生float数值:
from sympy import symbols, solve, Rational
x = symbols('x')
# 错误写法:直接用float定义方程
eq_float = 0.5*x + 1.2 - 3.4
print(solve(eq_float, x)) # 输出 [4.4]

# 正确写法:所有数值用Rational定义
eq_rational = Rational(1,2)*x + Rational(6,5) - Rational(17,5)
print(solve(eq_rational, x)) # 输出 [22/5]
  • 方案2:solve调用时传入rational=True参数
    Sympy的solve支持传入rational参数,会自动把输入的浮点数转成有理数再求解,不需要手动修改原方程定义:
print(solve(eq_float, x, rational=True)) # 输出 [22/5]
  • 方案3:用nsimplify()转换已有浮点结果
    如果已经拿到浮点形式的解,可以直接用nsimplify函数转成精确分数:
from sympy import nsimplify
res = solve(eq_float, x)
frac_res = [nsimplify(item) for item in res]
print(frac_res) # 输出 [22/5]

内容的提问来源于stack exchange,提问作者Shean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:06:02