为什么用sympy无法在方程式中得到'r'的结果?

时间:2019-06-16 16:12:38

标签: python sympy

我已经将'r'定义为方程式中的符号变量,但仍然由于“未定义名称'r'”而出现错误

from sympy import symbols, solve
#Total money you loan
A=1690*74
#Total month you need to pay
m=37
#Every month the total money you need to pay
x=4000
# r is the monthly interest rate
r=symbols('r')
expr=(A*r*(1+r)**m)/((1+r)**m-1)-x
sol=solve(expr,dict=True)
print(sol)

运行文件,没有任何反馈。代码有什么问题?

1 个答案:

答案 0 :(得分:1)

您要求解的方程是(或可以重新排列为)37阶多项式:

                37       
125060⋅r⋅(r + 1)         
────────────────── - 4000
         37              
  (r + 1)   - 1 

SymPy努力寻找一个解析解,但是通常只能保证解析解存在到4阶(即使这样,也可能非常复杂)。

我认为您真正想要的是一个数值解决方案,因此nsolve应该可以做到:

>>> nsolve(expr,r,1)
0.00915469685511422

作为每月的小数利率,相当于〜11%的年化利率(x100x12)。