fminbound为一个简单的等式

时间:2016-03-07 15:29:45

标签: python numpy scipy

def profits(q):
    range_price = range_p(q)
    range_profits = [(x-c(q))*demand(q,x) for x in range_price]
    price = range_price[argmax(range_profits)] # recall from above that argmax(V) gives 
                                           # the position of the greatest element in a vector V
                                           # further V[i] the element in position i of vector V
    return (price-c(q))*demand(q,price)

print profits(0.6)
print profits(0.8)
print profits(1)
0.18
0.2
0.208333333333

q[0,1](质量),我们知道最高质量是1。现在的问题是,我该如何解决这样的等式?我不断收到q尚未定义的错误(这是我们正在寻找的那种情况),或者我得到一些错误的错误。

q_firm = optimize.fminbound(-profits(q),0,1)

这是我尝试过的,但我收到了这个错误:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-99-b0a80dc20a3d> in <module>()
----> 1 q_firm = optimize.fminbound(-profits(q),0,1)

NameError: name 'q' is not defined

有人可以帮帮我吗?如果我需要向您提供有关该问题的更多信息,请告诉我,这是我第一次使用此平台。提前谢谢!

1 个答案:

答案 0 :(得分:0)

fminbound需要可调用,而profits(q)尝试计算单个值。使用

fminbound(lambda q: -profits(q), 0, 1)

请注意,上面的lambda仅用于生成负利润的函数。最好为-profits定义一个函数并将其提供给fminbound。

更好的是,使用minimize_scalar而不是fminbound。