numerical-methods - 什么时候应该开始将二次方程视为数值求根中的线性?
问题描述
我有一组二次系数 a、b 和 c 需要求解,以确定平面上两个图形之间的交点(比如说,抛物线和直线)。
然而,我的问题是,当我的抛物线如此“拉伸”以至于它开始表现得像感兴趣区域周围的一条线时,似乎忽略了 a 系数,而是线性求解 b 和 c 效果很好。
我的问题是,你在什么时候决定线性求解二次方程?推而广之,什么时候应该二次解三次方程?
当然,二次方实际上有 2 个根,但是(从计算机的角度来看,出于所有强烈和目的)只有 1 个根。
编辑:
我在数学堆栈交换上为这个问题添加了更多细节,但我仍然觉得因为这与数值不稳定性有关,我应该在这里问。这是措辞略有不同的数学问题:https ://math.stackexchange.com/questions/4000135/quadratic-formula-fails-numerically-at-small-a-coefficients
解决方案
牛顿的想法是围绕x
三次方程的根的猜测展开
0 = (x+h)^3 + a*(x+h)^2 + b*(x+h) + c
= x^2+a*x^2+b*x+c + (3*x^2+2*a*x+b)*h + ...
并采用常数项和线性项来确定h
根的改进(一般而言,该方法仅在几十年后由 Raphson 和 Simpson 制定)。
哈雷在计算以他的名字命名的彗星时,还提出了采用泰勒展开式的二次项并使用二次解公式的想法。切换平方根的泰勒展开式或除法会产生现代的哈雷方法、拉盖尔方法和(欧拉-)切比雪夫方法,都是三阶的。在具有多个解的公式中,h
选择给出最小的那个。
推荐阅读
- es6-modules - 从 index.js 导出命名空间
- typescript - 如何导入从 TypeScript 导出单个函数的 CommonJS 模块
- php - 如果页面为空,则 Mpdf 不应显示页面
- sql - 如何计算不同表中 2 个时间列之间的差异?
- r - 使用 R 中的简单数据集在 KNN 中选择 K 值
- c# - 如何根据数据集中的列索引和行索引更改单元格颜色?
- sql - Presto - 提取数组中的键
- javascript - 在 RxJS 中,Observer 是否被注入到 Observable 执行中?
- python - 无法使用计数创建新列并保留 GroupBy 列
- python - 使用 DictReader 时如何在 csv 文件中查找最后一行