我不确定这是否是问这个问题的正确地方,如果不是,如果你们告诉我,我会删除它,但我的问题与将数学技术转移到程序中有关。我的问题是:
如果我使用一个程序来解决二次方程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;
《Numerical recipes in C - The Art of Scientific Computing-第二版》一书只是说,第二段代码会给你更准确的根。您可以在 http://apps.nrbook.com/c/index.html 在线查阅本书,您可以在第 5.6 二次方程和三次方程第 183 页和第 184 页找到公式。
Higham教授的著作《数值算法的准确性和稳定性,第2版》有1.8的介绍性部分。求解二次方程,进一步阐述第二个代码。也许你可以通过查询higham 1.8. solving a quadratic equation
的谷歌图书来阅读它;在我看来,他只是谈论第二代码的准确性和健壮性,而没有描述任何额外的优势。
有关更长的解释(在Python Scilab上下文中),您可以查看Michael Baudin的Scilab is Not naïve here: http://forge.scilab.org/index.php/p/docscilabisnotnaive/downloads/get/scilabisnotnaive_v2.2.pdf
计算机程序是我所知道的几乎立即获得数百万个a
、b
和c
值解的唯一方法。
自动化和加速重复的微积分任务是计算机最近流行的原因之一。