我不确定这是否是提出这个问题的正确位置,如果不是我会删除它,如果你们告诉我,但我的问题与将数学技术转移到一个程序有关。我的问题是:
如果我使用程序来解决二次方程 ax^2+bx+c=0
,请使用:
x_1 = (-b-sign(b)*sqrt(b^2-4*a*c) ) / (2*a)
x_2 = (c) / (a * x_1)
使用计算机而不是通用公式有什么好处?我知道它会减少所涉及的错误,但除此之外。
答案 0 :(得分:2)
我假设您在询问使用代码
之间有什么区别x1 = -b+sqrt(b*b-4*a*c)/(2*a);
x2 = -b-sqrt(b*b-4*a*c)/(2*a);
和代码
q = (-b-sign(b)*sqrt(b*b-4*a*c))/2;
x1 = q/a;
x2 = c/q;
书中的数字配方C - 科学计算的艺术 - 第二版只是说第二个代码将为您提供更准确的根源。您可以在http://apps.nrbook.com/c/index.html在线查阅该书,您可以在 5.6二次和三次方程部分的第183页和第184页找到公式。
Higham教授的书数值算法的准确性和稳定性,第2版有介绍部分 1.8。求解二次方程,进一步阐述了第二个代码。也许您可以通过带有查询higham 1.8. solving a quadratic equation
的Google图书阅读;在我看来,他只是在谈论第二代码的准确性和健壮性而没有描述任何额外的优势。
要获得更长的解释(在Python Scilab上下文中),您可以在此处查看Michael Baudin的 Scilab并非天真: http://forge.scilab.org/index.php/p/docscilabisnotnaive/downloads/get/scilabisnotnaive_v2.2.pdf
答案 1 :(得分:0)
计算机程序是我所知道的唯一可以立即获得数百万a
,b
和c
值的解决方案。
自动化和加速重复计算任务是计算机最近流行的原因之一。