Эта функция Mathematica находит параметр b гамма-распределения, даны средние и 95% значения и масштабированы по среднему значению [Mu]; Две скобки значений [Beta] делают это быстрым, и есть ограничение для max pg95 = 5,8 [Mu] * gb [[Mu] , стр.95]. Мне нужно перевести этот код на Python:
gb[\[Mu]_, p95_] := Block[{p = Min[p95/\[Mu], 5.8]},
\[Mu] FindRoot[CDF[GammaDistribution[1/\[Beta], \[Beta]], p] - .95 == 0,
{\[Beta], 1, If[p == 1, 1.1, p]}][[1, 2]]];
Даже если вы не можете найти точно эквивалентные гамма-функции, вы должны быть в состоянии перевести gb
с помощью функций интеграции и поиска корней SciPy. Требуемые функции могут быть получены, например. (показаны некоторые демонстрационные значения)
Например
Как видите, код, созданный из более простых функций, дает тот же ответ, хотя и медленнее.
Код
gamma[z_] := \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(0\), \(\[Infinity]\)]\(
\*SuperscriptBox[\(t\), \(z - 1\)]
\*SuperscriptBox[\(E\), \(-t\)] \[DifferentialD]t\)\)
gamma[a_, z0_, z1_] := \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(z0\), \(z1\)]\(
\*SuperscriptBox[\(t\), \(a - 1\)]
\*SuperscriptBox[\(E\), \(-t\)] \[DifferentialD]t\)\)
gammaregularized[a_, z1_] := gamma[a, 0, z1]/gamma[a]
cdf[\[Beta]_, p_] :=
Piecewise[{{gammaregularized[1/\[Beta], p/\[Beta]], p > 0}}]
p = 1.2;
FindRoot[cdf[\[Beta], p] - .95, {\[Beta], 1, If[p == 1, 1.1, p]}]
FindRoot[CDF[GammaDistribution[1/\[Beta], \[Beta]],
p] - .95, {\[Beta], 1, If[p == 1, 1.1, p]}]
Как я продемонстрировал, вы часто можете найти информацию о функциях более высокого уровня в документации и с помощью символьных вычислений. Если вам нужна помощь в разбивке функции более высокого уровня, я бы посоветовал вам обратиться сюда: https:\\mathematica.stackexchange.com. В основном это сайт Mathematica, а не для Python, но поиск основных функций в функции Mathematica более высокого уровня должен быть в рамках темы.
Привет, Крис, у меня есть еще несколько функций Mathematica, которые мне нужно перевести на Python. Не могли бы вы помочь мне с этим заданием? Я мог бы отправить вам код раньше, чтобы вы могли подумать об этом. Это моя контактная информация [email protected]