Python 中包含伽玛的求解函数
Solving function containing gamma in Python
我对使用 python 编程还很陌生。
我想知道,是否有解决函数的聪明方法,其中包括具有特定形状和比例的伽马函数。
我已经创建了一个函数 G(x),它是伽马函数到变量 x 的 cdf。现在我想解决另一个函数,包括 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) 的真实值?
提前致谢!
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)
要从函数中求根,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 选项,但我想你可以在没有我帮助的情况下将结果放入你想要的任何结构中。
我对使用 python 编程还很陌生。
我想知道,是否有解决函数的聪明方法,其中包括具有特定形状和比例的伽马函数。
我已经创建了一个函数 G(x),它是伽马函数到变量 x 的 cdf。现在我想解决另一个函数,包括 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) 的真实值?
提前致谢!
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)
要从函数中求根,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 选项,但我想你可以在没有我帮助的情况下将结果放入你想要的任何结构中。