У меня есть проблема, связанная с решением конечного числового интеграла с использованием scipy или sympy.У меня есть набор из двух уравнений, которые определены следующим образом:
В обоих выражениях F относится к интегральной функции распределения, а f к вероятностимассовая функция.h1, h2, b, L1 и L2 - все числовые значения.Цель состоит в том, чтобы найти оба значения S1 и S2.Пример, который я пытаюсь решить, использует нормальное распределение со средним значением = 10 и стандартным отклонением = 5 (= стандартное отклонение);L1 = L2 = 5, h1 = 1,5, h2 = 1, b = 10.Я определил нормальные распределения с помощью scipy.stats следующим образом:
from scipy.stats import norm
d1 = norm(loc= mean * (L1 + 1), scale=stdev * sqrt(L1 + 1))
d2 = norm(loc = mean * L2, scale=stdev * sqrt(L2))
Первое уравнение может быть довольно легко решено с помощью встроенных функций из пакета scipy
S1 = d1.ppf((h2+b)/(h1+b))
, что приводит кS1 равно 80,96365553135416, что определяет верхнюю границу интеграла во втором уравнении.F_L2 - это совокупное распределение d2, а f_L1 + 1 - просто d1.Я попытался решить эту проблему с помощью символических представлений в sympy следующим образом:
from sympy import Symbol
from sympy.solvers import solve
from sympy.integrals import integrate
S2 = Symbol('S2')`
x = Symbol('x')`
eq = d2.cdf(S2-x) * d1.ppf(x) - b/(b+h1)
result = integrate(eq, 0, S1)
Однако это приводит к ошибке TypeError.Есть идеи о том, что я сделал не так?S2 должен быть приблизительно равен 129 для этого примера.Я новичок в симпати, и любая помощь будет оценена.