Решающая функция, содержащая гамму в Python - PullRequest
0 голосов
/ 29 мая 2020

Я новичок в программировании с python.

Мне было интересно, есть ли умный способ решить функцию, которая включает гамма-функцию с определенной формой и масштабом.

Я уже создал функцию G (x), которая является cdf гамма-функцией с точностью до переменной x. Теперь я хочу решить другую функцию, включая G (x). Должно получиться так: 0 = x + 2 * G (x) -b. Где b - константа.

Мой код выглядит так:

b= 10

def G(x): 
  return gamma.cdf(x,a=4,scale=25)

f = solve(x+2*G(x)-b,x,dict=True)

Как можно получить реальное значение для G (x) в моей функции решения?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Чтобы получить root-права из функции, в модуле scipy есть несколько инструментов.

Вот решение с методом fsolve ()

from scipy.stats import gamma
from scipy.optimize import fsolve

def G(x): 
  return gamma.cdf(x,a=4,scale=25)

# we define the function to solve
def f(x,b):
  return x+2*G(x)-b

b = 10
init = 0. # The starting estimate for the roots of f(x) = 0.
roots = fsolve(f,init,args=(b))

print roots

Выводит:

[9.99844838]

Учитывая, что G (10) близко к нулю, это решение кажется вероятным

Извините, я не учел вашу опцию dict = True, но я думаю, вы можете поместить результат в какую угодно структуру без моей помощи.

0 голосов
/ 29 мая 2020
rom sympy import *
# from scipy.stats import gamma
# from sympy.stats import Arcsin, density, cdf
x, y, z, t, gamma, cdf = symbols('x y z t gamma cdf')

#sol = solve([x - 3, y - 1], dict=True)

from sympy.stats import Cauchy, density
from sympy import Symbol
x0 = Symbol("x0")
gamma = Symbol("gamma", positive=True)
z = Symbol("z")
X = Cauchy("x", x0, gamma)
density(X)(z)
print(density(X)(z))

sol = solve([x+2*density(X)(z)-10, y ], dict=True)
print(sol)

Или:

from scipy.stats import gamma
from sympy import solve, Poly, Eq, Function, exp
from sympy.abc import x, y, z, a, b

def G(x): 
  return gamma.cdf(x,a=4,scale=25)

b= 10

f = solve(x+2*G(x)-b,x,dict=True)

stats cdf gamma решить sympy

...