Уравнение, которое вы пытаетесь решить:
In [23]: eq
Out[23]:
⎛ -n⎞
C⋅⎝1 - (r + 1) ⎠ -n
P = ───────────────── + fv⋅(r + 1)
r
Мы можем переставить это в многочлен, например:
In [24]: eq2 = Eq(eq.lhs * (1+r)**n * r, eq.rhs * (1+r)**n * r).expand()
In [25]: eq2
Out[25]:
n n
P⋅r⋅(r + 1) = C⋅(r + 1) - C + fv⋅r
Теперь мы видим, что это многочлен, за исключением того, что показатель n
является символом c. В общем случае уравнение такого типа не будет иметь решения, выражаемого в замкнутой форме, поэтому у sympy нет алгоритмов для этого конкретного случая (это не ограничение самого sympy).
Это можно решить Уравнение численно, но численное решение работает, только если у нас есть числовые значения для каждого из параметров. Если мы подставим числа для параметров, то nsolve
сможет найти решение численно:
In [26]: eq3 = eq.subs({P:1, C:2, fv:1, n:100})
In [27]: eq3
Out[27]:
⎛ 1 ⎞
2⋅⎜1 - ──────────⎟
⎜ 100⎟
1 ⎝ (r + 1) ⎠
1 = ────────── + ──────────────────
100 r
(r + 1)
In [28]: nsolve(eq3, r, 1)
Out[28]: 2.00000000000000
Но обратите внимание, что решения этого уравнения не являются уникальными, например, -2 также является решением здесь:
In [52]: nsolve(eq3, r, -1.9)
Out[52]: -2.00000000000000
Это конкретное уравнение имеет что-то вроде 100 корней, хотя не обязательно все реальные.