查找无差异曲线点

2022-04-06 00:00:00 python sympy

问题描述

我有以下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.

相关文章