查找无差异曲线点
问题描述
我有以下Cobb Douglas实用程序函数:
x**0.35 * y**0.65
初始一篮子货物产生的效用为25
。
我想知道y
对于x
的不同值是如何变化的,例如x
[6,15]
z = solveset(Eq(x**0.35 * y**0.75, 25), y)
有没有办法使用x
值的数组和循环来解决这个问题?
我还想知道有没有比solveset
更好的命令。
解决方案
我认为nsolve
在这里是更好的选择,因为您不需要符号解,只需要数值解。nsolve
需要初始猜测,因此在找到1个值后,该值将用作连续值的初始猜测:
>>> from sympy import nsolve
>>> from sympy.abc import x, y
>>> eq = x**0.35*y**0.65 - 25
>>> xx = list(range(6,15+1))
>>> yy = [nsolve(eq.subs(x,xx[0]), 1)]
>>> for i, xi in enumerate(xx[1:]): yy.append(nsolve(eq.subs(x,xi), yy[i]))
...
>>> for i,j in zip(xx,yy):
... print(i,j.n(2))
...
6 54.
7 50.
8 46.
9 43.
10 41.
11 39.
12 37.
13 36.
14 34.
15 33.
相关文章