Это сработает, если а) интеграл известен для вашей подынтегральной функции при наличии ограничений по символам c и б) полученное уравнение может быть решено:
from sympy import integrate
from sympy.abc import x, u
f = x + 3
lo = u
hi = 10
eq = integrate(f, (x, lo, hi))
eq, solve(eq, lo)
Это дает
(-u**2/2 - 3*u + 80, [-16, 10])
Но если вы определите f = exp(x) + 1/x
, вы получите уравнение, которое SymPy не может решить с помощью solve
, но nsolve
будет работать. (Если в итоге вы получите выражение, содержащее и Integral, то вам, возможно, придется использовать разделение пополам, многократно вставляя указанное значение c для неизвестного предела, и численно оценивать интеграл, пока не получите желаемый результат.)
Если вы хотите, чтобы интеграл равнялся определенному значению, v
, тогда solve(eq - v, u)
, где u
- символ, который использовался для неизвестного предела.