0

我不确定这是否是问这个问题的正确地方,如果不是,如果你们告诉我,我会删除它,但我的问题与将数学技术转移到程序中有关。我的问题是:

如果我要使用程序通过以下方法求解二次方程ax^2+bx+c=0

x_1 = (-b-sign(b)*sqrt(b^2-4*a*c) ) / (2*a) 

x_2 = (c) / (a * x_1) 

与普通公式相比,使用计算机有什么优势?我知道它会减少所涉及的错误,但除此之外。

4

2 回答 2

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在线查阅本书,您将在第 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

于 2013-03-03T11:34:52.173 回答
0

计算机程序是我所知道的几乎立即获得数百万个 和 值的解决方案的唯一a方法。bc

自动化和加速重复的微积分任务是计算机最近流行的原因之一。

于 2013-01-30T08:47:49.520 回答