Почему я не могу получить результат 'r' в уравнении с sympy? - PullRequest
0 голосов
/ 16 июня 2019

Я определил '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 Ответ

1 голос
/ 17 июня 2019

Уравнение, которое вы пытаетесь решить, является (или может быть переставлено) полиномом порядка 37:

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

SymPy изо всех сил пытается найти аналитическое решение, но в целом аналитические решения гарантированно существуют только до 4-го порядка (и даже тогда могут быть нелепо сложными).

Я думаю, что вы действительно хотите здесь числовое решение, поэтому nsolve должен сделать эту работу:

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

Как дробная месячная процентная ставка, соответствующая годовой ставке (x100x12) в размере ~ 11%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...