计算机的错误计算(四)

摘要  探讨了计算机对一元二次方程的计算精度问题。援引国外著名学者的话:“虽然求根公式在数学上是简单的, 但在数值计算中它更具挑战性. 我们既不能保证对求根公式的正确计算, 也不能确定根的精确度”。

       众所周知,给定一个一元二次方程 

ax^2+bx+c=0\, (a\neq0),

其求根公式为

x_{1,2}=\frac{-b\pm\sqrt{b^2-4ac}}{2a}.

       下面通过一个案例,我们来讨论计算机程序对求根公式的的计算精度。

例1. 设 a=10^{-17}, b=-10^{17}, c=10^{17},计算其较小的根[1]。

       若在 Visual Studio 2010 中用下列C语言代码计算

则输出为0;而正确结果为1。因此,计算机输出了错误结果。

       如果您不便于编程验证,最省事的方法是拷贝下列式子 

(-(-1e17)-((-1e17)^2-4*(1e-17)*(1e17))^0.5)/(2*(1e-17))

到 Excel 的单元格中计算(先输入 = ,然后 粘贴进去,再 回车),输出同样为错误结果0。

       事实上,对于一元二次方程的求根问题,文献[2]早已给出评价: “虽然求根公式在数学上是简单的, 但在数值计算中它更具挑战性。我们既不能保证对求根公式的正确计算, 也不能确定根的精确度(..., Numerically, the problem is more challenging, as neither the successful evaluation of ... nor the accuracy of the computed roots can be taken for granted.).”

参考文献

[1] Ward Cheney, David Kincaid. Numerical Mathematics and Computing. 6th Ed. CA: Thomson Higher Education, 2008. 71

[2] Nicholas J. Higham. Accuracy and Stability of Numerical Algorithms. 2nd Ed. Philadelphia: SIAM, 2002. 10

相关推荐

  1. 计算机等级考试:信息安全技术 知识

    2024-06-17 20:20:01       22 阅读
  2. 自己整理ICT云计算题库

    2024-06-17 20:20:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 20:20:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 20:20:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 20:20:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 20:20:01       20 阅读

热门阅读

  1. 在php中的序列化与反序列化

    2024-06-17 20:20:01       10 阅读
  2. 谈吐的艺术

    2024-06-17 20:20:01       8 阅读
  3. Mariadb/MySQL挂了且重启失败

    2024-06-17 20:20:01       7 阅读
  4. 软设之白盒测试

    2024-06-17 20:20:01       6 阅读
  5. 时区设置函数【man 3 tzset】

    2024-06-17 20:20:01       5 阅读