2017-03-17 108 views
1

我尝试使用其参数之一的约束来计算函数的限制。不幸的是,我陷入了参数约束。Sympy - 带参数限制的限制

我用下面的代码,其中0 <阿尔法< 1应当假定

import sympy 
sympy.init_printing() 
K,L,alpha = sympy.symbols("K L alpha") 
Y = (K**alpha)*(L**(1-alpha)) 
sympy.limit(sympy.assumptions.refine(Y.subs(L,1),sympy.Q.positive(1-alpha) & sympy.Q.positive(alpha)),K,0,"-") 

然而,这是行不通的。有没有可能像Mathematica一样处理假设?

最佳谢谢你, 费边

回答

2

据我所知,在假设模块所做的假设尚未被SymPy其余的理解。但是limit可以理解的假设是imposed at the time a symbol is created

K, L = sympy.symbols("K L") 
alpha = sympy.Symbol("alpha", positive=True) 
Y = (K**alpha)*(L**(1-alpha)) 
sympy.limit(Y.subs(L, 1), K, 0, "-") 

的限制,现在的计算结果为0。

没有申报符号为0和1之间的数字的方式,但人们可以能够通过声明一个正符号来解决这个问题,比如t,并让L = t /(1 + t)。

+0

我喜欢你的解决方法,谢谢你的诀窍。正如你所写的“尚未”,是否有计划提出可能性来宣布限制和其他操作的假设? – Fabian

+0

Sympy团队无法说话(这是一个开源项目)。如果有人愿意并能够重写微积分子模块,以便他们使用新的假设......那么就会发生。但自2013年以来没有发生过,请参阅http://stackoverflow.com/a/16435975 – FTP

+0

是的,我们希望这样做。我们只需要人们来实施它。 – asmeurer