我有一个方程,如下所示:
R - ((1.0 - np.exp(-tau))/(1.0 - np.exp(-a*tau))) = 0

我想使用numpy中可用的数值求解器来解决此方程式中的tau。最好的方法是什么?

该公式中的Ra的值随此公式的不同实现而有所不同,但在要求解tau时固定为特定值。

最佳答案

用传统的数学符号,您的方程是

SciPy fsolve函数搜索给定表达式等于零(表达式的“零”或“根”)的点。您需要为fsolve提供“您的所需解决方案附近”的初始猜测。找到这种初始猜测的一种好方法是只绘制表达式并寻找零交叉。

#!/usr/bin/python

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

# Define the expression whose roots we want to find

a = 0.5
R = 1.6

func = lambda tau : R - ((1.0 - np.exp(-tau))/(1.0 - np.exp(-a*tau)))

# Plot it

tau = np.linspace(-0.5, 1.5, 201)

plt.plot(tau, func(tau))
plt.xlabel("tau")
plt.ylabel("expression value")
plt.grid()
plt.show()

# Use the numerical solver to find the roots

tau_initial_guess = 0.5
tau_solution = fsolve(func, tau_initial_guess)

print "The solution is tau = %f" % tau_solution
print "at which the value of the expression is %f" % func(tau_solution)

关于python-2.7 - 在numpy中使用python数值求解器求解方程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22742951/

10-12 18:37