我不确定这是否是问这个问题的正确地方,如果不是,如果你们告诉我,我会删除它,但我的问题与将数学技术转移到程序中有关。我的问题是:
如果我要使用程序通过以下方法求解二次方程ax^2+bx+c=0
:
x_1 = (-b-sign(b)*sqrt(b^2-4*a*c) ) / (2*a)
x_2 = (c) / (a * x_1)
与普通公式相比,使用计算机有什么优势?我知道它会减少所涉及的错误,但除此之外。
我不确定这是否是问这个问题的正确地方,如果不是,如果你们告诉我,我会删除它,但我的问题与将数学技术转移到程序中有关。我的问题是:
如果我要使用程序通过以下方法求解二次方程ax^2+bx+c=0
:
x_1 = (-b-sign(b)*sqrt(b^2-4*a*c) ) / (2*a)
x_2 = (c) / (a * x_1)
与普通公式相比,使用计算机有什么优势?我知道它会减少所涉及的错误,但除此之外。
我假设您在问使用代码有什么区别
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在线查阅本书,您将在第 183 页和第 184 页的第5.6 节二次和三次方程中找到公式。
Higham 教授的书Accuracy and Stability of Numerical Algorithms, 2nd Edition有介绍部分1.8。求解进一步详细说明第二个代码的二次方程。也许你可以通过谷歌书籍通过查询阅读它higham 1.8. solving a quadratic equation
;在我看来,他只是谈论第二个代码的准确性和稳健性,而没有描述任何额外的优势。
如需更长的解释(在 Python Scilab 上下文中),您可以查看Michael Baudin 的Scilab is not naive :http: //forge.scilab.org/index.php/p/docscilabisnotnaive/downloads/get/scilabisnotnaive_v2.2 .pdf
计算机程序是我所知道的几乎立即获得数百万个 和 值的解决方案的唯一a
方法。b
c
自动化和加速重复的微积分任务是计算机最近流行的原因之一。