给定等式ax^2 + bx + c
,我们知道判别式D = b^2 - 4ac
告诉我们方程式是否有两个不同的根D > 0
,一个重复的根D = 0
,或者不是真的根D < 0
。显然,如果判别式为零,则错误可能使其为正或负,这取决于误差更大的位置。
证明如果判别式非零,则浮点计算中的错误不会使其符号翻转(即,从正到负,或从负到正)。错误可以使判别式等于零吗?
我知道这与实际编程没什么关系,但我究竟如何证明floating point calculation error of the discriminant
不可能导致正判别D以某种方式变为负数,反之亦然。
答案 0 :(得分:2)
这就是我所说的,因为这显然是家庭作业。如果你想张贴你的证据,我会很乐意提供建议,但我不会为你做你的工作。
最后:习惯于面对你不知道该怎么做的家庭作业,特别是在理论CS或数学课程中。如果你已经知道如何去做,你就不会学到任何东西,那会是什么意思呢?
编辑:Eric Postpischil是正确的,即使在二进制算术中,某些边缘情况的语句也是假的。
答案 1 :(得分:2)
声称如果评估判别式产生非零结果,则它具有与数学上准确的判别式不相符的相同符号。由于这是一个家庭作业问题,我暂时不会说更多,除了提示:考虑到即使最终结果不在浮点数范围之外也可能出现下溢或溢出。
答案 2 :(得分:0)
我认为必须检查决定因素是肯定的还是否定的,这实际上是检查b^2
是否大于或小于4ac
。
在这两种情况下,你将两个数相乘,所以错误是(类似的)?看起来就像你正在寻找的那种推理。
但是将案例推向极端,例如,如果您的数字是浮点数而“错误”实际上只是使用整数,则可以更改符号:
a = 2,b = 2,c = 2/3
行列式是:D = 2 ^ 2-4 * 2 * 2/3 = -1.333
取错误,将c舍入为0,行列式变为:D = 2 ^ 2 - 0 = 4
如果这太极端了,你可以根据需要划分所有这些系数,它仍然是相同的等式,误差较小,你应该得到相同的结果......
更多... 强>
也许答案是蒂姆所描述的,当数字彼此非常不同时会有取消(并且相当小的数字会被忽略),这不能改变差异的变化。
因此,如果abs(b^2)
比abs(4ac)
大得多,则行列式将是abs(b^2)
的符号......反之亦然。