作业免责声明...
任务:
我们正在使用以下算法来求解二次方程:
指出运行此算法可能会遇到重大问题的两个地方。如何缓解这些问题?
这是我的猜测:第一个地方是:,我们在这里冒着灾难性取消的风险;第二个地方是:,如果我们得到一个 NaN是.
第二个似乎很简单:绝对更大的根的唯一方法是当两个根都,这意味着; 我们可以测试这种情况。
不过,我不知道如何缓解第一个问题。我想不出在不计算判别式的情况下求解二次方程的方法,而计算其判别式确实需要减法。当然,这可能会导致灾难性的取消。
在计算二次函数的判别式时,有什么方法可以避免灾难性的抵消?
编辑:根据评论的要求,将附加信息从答案转移到问题:
哈。关于. 另一位学生今天争辩说这不是问题:据他说,只有在以下情况下才会发生灾难性取消; 但是之后而且; 所以判别式本身和计算时引入的任何错误在计算时都失去了意义. 教授说他得考虑一下。如果/当他完成思考时,我会在这里发布更新。
但是,还有一个问题我没有注意到。即,如果很大,那么可能溢出;但是之后即使其准确值符合数字格式的范围,也会溢出;所以将被虚假设置为. 为了避免这种情况,教授说,如果它足够大,则需要重新调整。