在sage / maxima求解中将变量声明为* not *整数

时间:2016-09-21 09:22:38

标签: python sage maxima

我试图象征性地解决x:

的简单等式
solve(x^K + d == R, x)

我宣布这些变量和假设:

var('K, d, R')
assume(K>0)
assume(K, 'real')
assume(R>0)
assume(R<1)
assume(d<R)

assumptions()
︡> [K > 0, K is real, R > 0, R < 1, d < R]

然而,当我运行求解时,我得到以下错误:

  

第1-1行的错误

     

追踪(最近一次呼叫最后一次):

     

文件   &#34; /projects/sage/sage-7.3/local/lib/python2.7/site-packages/smc_sagews/sage_server.py" ;,   第957行,执行中       exec编译(阻止+&#39; \ n&#39;,&#39;&#39;,&#39;单&#39;)命名空间,本地人

     

...

     

File&#34; /projects/sage/sage-7.3/local/lib/python2.7/site-packages/sage/interfaces/interface.py",   第671行,在 init 中       提出TypeError(x)

     

TypeError:计算失败,因为Maxima请求了额外的约束;使用&#39;假设&#39;评估之前的命令可能帮助(合法语法的例子是假设(K> 0)&#39;,详见assume?

     

K是整数吗?

显然,maxima询问K是否是整数?但我明确宣布它是真实的&#39;! 如何拼写出最大值,它不应该假设K是一个整数?

我只希望(R-d)^(1/K)exp(log(R-d)/K)作为答案。

1 个答案:

答案 0 :(得分:2)

Sage和Maxima中的假设框架相当薄弱,但在这种情况下它并不重要,因为整数是实数,对吧?

但是,您可能想尝试assume(K,'noninteger'),因为显然Maxima does support this特殊假设(我之前没有见过)。我不能现在试试这个,不幸的是,祝你好运!