减少具有实数(非整数)系数的多项式的结果会导致错误

4
在Mathematica中,我尝试检查多项式的某些条件,其中参数在一定范围内变化。我的计算是5阶的,但我制作了一个简单的例子来展示我的需求。
当我创建一个具有整数作为参数的多项式时,我使用'Reduce',它可以给我正确的答案。
但是当我在多项式中使用实数时,'Reduce'不起作用并且会出现这个错误:
“Reduce无法解决具有不精确系数的系统。通过解决相应的精确系统并对结果进行数字化来获得答案。”
有人能帮忙吗? enter image description here

1
我觉得没问题...你期望的答案是什么? - user616736
我希望不会看到“Reduce: ratnz”错误。这让我对结果感到好奇。 - trante
1个回答

10

Reduce::ratnz 这个信息不是错误,而是一个警告信息。如果您点击 More 或者 >> 链接,无论在您的系统上显示什么,它都会带您进入文档,其中写道:

Reduce中的第一个参数包含非精确数时,经常会生成此消息。[...] 只要在输入到Reduce中使用精确数即可避免出现警告消息

如果你对该消息感到不满,请注意可以使用以下代码关闭该警告信息:

Off[Reduce::ratnz]

你可以通过这种方式关闭将为Reduce产生的所有进一步警告,或者你可以使用以下方法使此操作静音。

Quiet@Reduce[...]

如果你想要避免这个信息,那么正如文档所述,你必须使用精确的数字。一种方法是使用Rationalize。例如:

x = 1.391 + 0.771 a;
Reduce[Rationalize[x] > 0 && 1 <= a <= 80, {a}]

Out[1]= 1 <= a <= 80

这会给你想要的输出,而不会有警告。可能还有其他方法,具体取决于你正在做什么,但没有了解你的确切表达很难说。希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接