我想写一个函数来解决从Python中的另一个函数的变量,有点像Excel解算器所做的。返回解决变量使用python
为了简化我的例子,我有一个函数需要几个变量,然后计算一个价格。我将传递实际值(a,b,c,d,x)到该函数中,以便返回数值。
def calc_price(a,b,c,d,x):
value = a+b*c-d + x
return value
现在我给出了一个目标价格,a,b,c,d。只有未知的是变量x,所以我想回去求解变量x。我想将其构建到一个函数中,该函数采用与calc_price相同的变量,并使用额外的变量target_price。
def solve(target_price, a,b,c,d):
#this function takes in values for target_price, a,b,c,d
#and should do something like this:
target_price = calc_price(a,b,c,d,x)
solve for x <---------this is the part I'm not sure how to do
return x
我创造了这样的下方备份解决由一个循环中值x的函数,但它在计算大型数据集低效的,所以我在寻找一种更有效的解决方案。
def solve(target_price,a,b,c,d):
x = 0.01
while x < 1:
if abs(target_price - calc_price(a,b,c,d,x)) < 0.001:
return x
x += 0.001
谢谢!
[scipy.optimize.minimize_scalar](https://docs.scipy.org/doc/scipy-0.19.1/reference/generated /scipy.optimize.minimize_scalar.html)。这将是黄金标准(在数值方法中,为其他世界查找计算机代数系统,不一定推荐)。如果这是一个太重的代码/库依赖:查找根发现和合作。 – sascha
@sascha,你是不是指'金'标准:-) https://docs.scipy.org/doc/scipy-0.19.1/reference/optimize.minimize_scalar-golden.html –
相当不错的斯图尔特。但我会使用布伦特(至少当有人已经为我实现了它):-) – sascha