【问题标题】:declare a variable as *not* an integer in sage/maxima solve在 sage/maxima 求解中将变量声明为 *not* 整数
【发布时间】:2016-09-21 09:22:38
【问题描述】:

我正在尝试用符号方式求解一个简单的 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 行错误

Traceback(最近一次调用最后一次):

文件 "/projects/sage/sage-7.3/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", 第 957 行,在执行中 exec compile(block+'\n', '', 'single') in namespace, locals

...

文件“/projects/sage/sage-7.3/local/lib/python2.7/site-packages/sage/interfaces/interface.py”, 第 671 行,在 init 中 引发 TypeError(x)

TypeError:由于 Maxima 请求了额外的约束,计算失败;在评估之前使用 'assume' 命令可能 帮助(合法语法的示例是 'assume(K>0)',请参阅assume? 了解更多详细信息)

K是整数吗?

显然,最大值是在问 K 是否是整数?但我明确宣布它是“真实的”! 我怎样才能拼出最大值,它不应该假设 K 是一个整数?

我只是期待(R-d)^(1/K)exp(log(R-d)/K) 作为答案。

【问题讨论】:

标签: python sage maxima


【解决方案1】:

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

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

【讨论】:

  • 完美,按预期工作!谢谢,不知怎的,它并没有出现在我的谷歌搜索中!
  • 太棒了。 noninteger 参数不在 Sage 文档中,据我所知,只有 Maxima 一个;我已经打开 trac.sagemath.org/ticket/21554 将其添加到文档中。 (PS 如果这确实回答了,请接受,以便未来的访问者知道这在不阅读 cmets 的情况下有效。)
  • 完成 - 在接受之前,我想检查一下我的实际代码是否也能正常工作(我只发布了一个玩具示例),确实如此,再次感谢。
猜你喜欢
  • 2017-04-07
  • 2021-08-11
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2013-05-28
  • 2015-09-04
  • 2012-02-13
  • 1970-01-01
相关资源
最近更新 更多