Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找到函数$f(\beta)=\gamma+;[1-e^{-j\beta}]/[1-e^{(-j+;1)\beta}]$,使用python_Python_Python 3.x_Computation - Fatal编程技术网

如何找到函数$f(\beta)=\gamma+;[1-e^{-j\beta}]/[1-e^{(-j+;1)\beta}]$,使用python

如何找到函数$f(\beta)=\gamma+;[1-e^{-j\beta}]/[1-e^{(-j+;1)\beta}]$,使用python,python,python-3.x,computation,Python,Python 3.x,Computation,我有以下等式,我无法找到$\beta$的封闭形式解,因此我想计算$\beta$的解: $$\gamma = \frac{1-e^{-jT\beta}}{1-e^{-(j+1)T\beta}}$$ 已知变量$\gamma$、$j$和$T$。不幸的是,我不知道方程根的方括号 python中是否有一种算法能够在不知道括号的情况下求解根?Scipy有几种用于根查找算法的选项: 这些算法倾向于想要可能解或导数的边界。在这种情况下,边界似乎少了工作量:) 编辑:重新阅读您的问题后,您似乎没有对上限和下限

我有以下等式,我无法找到
$\beta$
的封闭形式解,因此我想计算
$\beta$
的解:

$$\gamma = \frac{1-e^{-jT\beta}}{1-e^{-(j+1)T\beta}}$$

已知变量
$\gamma$、$j$
$T$
。不幸的是,我不知道方程根的方括号


python中是否有一种算法能够在不知道括号的情况下求解根?

Scipy有几种用于根查找算法的选项:

这些算法倾向于想要可能解或导数的边界。在这种情况下,边界似乎少了工作量:)

编辑:重新阅读您的问题后,您似乎没有对上限和下限的估计。在这种情况下,我建议使用牛顿法(,在这种情况下,你必须计算导数(手动或手动)

请参见其他解算器(包括多维解算器)的文档

祝你好运

奥利弗

import matplotlib
matplotlib.use('Agg')

import numpy as np
from scipy.optimize import brentq
import matplotlib.pyplot as plt

def gamma_func(beta, j, T):
    return (1-np.exp(-j*T*beta)) / (1-np.exp(-(j+1)*T*beta))

# Subtract gamma from both sides so that we have f(beta,...) = 0.
# Also, set beta, the independent variable, to the first
# argument for compatibility with solver
def f(beta, gamma, j, T):
    return gamma_func(beta, j, T) - gamma


# Parameters
gamma = 0.5
j = 2.3
T = 1.5

# Lower and upper bounds for solution
beta_low = -3
beta_high = 3

# Error tolerance for solution
tol = 1e-4

# True solution
beta_star = brentq(f, beta_low, beta_high, args=(gamma, j, T), xtol=tol)


# Plot the solution
plt.figure()
plt.clf()
beta_arr = np.linspace(-10, 10, 1001)
gamma_arr = gamma_func(beta_arr, j, T)
plt.plot(beta_arr, gamma_arr)
plt.plot(beta_star, gamma_func(beta_star, j, T), 'o')
plt.savefig('gamma_plot.png')

# Print the solution
print("beta_star = {:.3f}".format(beta_star))
print("gamma(beta_star) = {:.3f}".format(gamma_func(beta_star, j, T)))
beta_star = -0.357
gamma(beta_star) = 0.500