如何使用Python求解指定含n的方程?现有Sympy代码报错如何修复?
求解三个含n方程的代码修正方案
报错原因
- 第一个方程报错:一是没有提前将
n声明为sympy的符号变量,二是混用了仅支持数值计算的math.sqrt,sympy符号运算需要使用自带的sqrt方法。 - 第二个方程报错:一是未声明符号变量
n,二是未导入对应对数函数,log2运算需要使用sympy的log方法指定底数为2。
完整求解代码
from sympy import symbols, solve, sqrt, log, Eq # 声明符号变量n,限定为正实数,避免返回无效复数解 n = symbols('n', real=True, positive=True) # 求解第一个方程:3553200 = 27 × (√n/5) eq1 = Eq(27 * (sqrt(n)/5), 3553200) res1 = solve(eq1, n) print("第一个方程的精确解:", res1[0]) # 求解第二个方程:3553200 = 1560878×log2(n)/13 eq2 = Eq(1560878 * log(n, 2) / 13, 3553200) res2 = solve(eq2, n) print("第二个方程的近似解:", res2[0].evalf()) # evalf()转为数值近似结果 # 求解第三个方程:3553200 = 9^n−2 eq3 = Eq(9**n - 2, 3553200) res3 = solve(eq3, n) print("第三个方程的近似解:", res3[0].evalf())
结果说明
- 第一个方程为整式开方方程,可得到精确整数解
- 第二个对数方程、第三个指数方程无简单整数解,调用
evalf()可输出指定精度的近似数值结果
内容的提问来源于stack exchange,提问作者Ghof-90
相关产品推荐
相关产品推荐

