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
有人可以帮帮我吗?如果我需要向您提供有关该问题的更多信息,请告诉我,这是我第一次使用此平台。提前谢谢!
答案 0 :(得分:0)
fminbound需要可调用,而profits(q)
尝试计算单个值。使用
fminbound(lambda q: -profits(q), 0, 1)
请注意,上面的lambda仅用于生成负利润的函数。最好为-profits
定义一个函数并将其提供给fminbound。
更好的是,使用minimize_scalar而不是fminbound。