当前位置: 首页 > 面试题库 >

在Java中找到二次回归曲线的最佳方法

范豪
2023-03-14
问题内容

我有三组数据,例如:

x   y
4   0
6   60
8   0

有谁知道任何(有效的)Java代码可以将a,b和c的值还给我(系数)?


问题答案:

我假设您想要这种形式的公式:

y = a * x^2 + b*x + c

如果只有三个点,则可以使用以下公式描述遍历所有三个点的二次曲线:

y = ((x-x2) * (x-x3)) / ((x1-x2) * (x1-x3)) * y1 +
    ((x-x1) * (x-x3)) / ((x2-x1) * (x2-x3)) * y2 +
    ((x-x1) * (x-x2)) / ((x3-x1) * (x3-x2)) * y3

在您的示例中:

x1 = 4, y1 = 0, x2 = 6, y2 = 60, x3 = 8, y3 = 0

要获得根据x1,x2,x3,y1,y2和y3表示的系数a,b,c,您只需要将公式相乘然后收集项。这并不困难,并且运行速度非常快,但是键入的代码很多。寻找已经为您完成此操作的软件包可能会更好,但是如果您想自己进行操作,这是你怎么做的。

在您的示例中y项中的两个为零的事实使公式更加简单,您也许可以利用这一点。但是,如果这只是一个巧合,而不是一般规则,那么您需要完整的公式。



 类似资料:
  • 问题内容: 对于三次贝塞尔曲线,通常具有四个点a,b,c和d, 对于给定的值t 如何最优雅地找到 切线 ? 问题答案: 这是经过完全测试的代码,可以复制和粘贴: 它沿着曲线绘制 近似 点, 并 绘制切线。 找到要点 找到切线 有 两个版本 的下面提供: 完美地工作。 完全相同,但以扩展,清晰,解释性的方式编写。它使算法更容易理解。 使用这两个例程之一:结果相同。 在这两种情况下,都可用于查找切线。

  • 本节,我们将学习如何绘制二次曲线。跟其堂兄弟圆弧相比,二次曲线是创建自定义图形的优秀工具,它可以绘制出更柔和、曲率更自然的曲线。 图1-5 绘制二次曲线 绘制步骤 按照以下步骤绘制二次曲线: 1. 定义2D画布上下文,并设置曲线样式: window.onload  = function(){ var canvas  = document.getElementById("myCanvas");

  • 贝塞尔曲线 Bézier curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线。 曲线定义:起始点、终止点、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化。 1962年,法国数学家Pierre Bézier第一个研究了这种矢量绘制曲线的方法,并给出了详细的计算公式,因此按照这样的公式绘制出来的曲线就用他的姓氏来命名,称为贝塞尔曲线。 这里我们不介绍计算公式,只要知道贝塞尔曲线是一条由起始

  • 创建一条平滑的二维 二次贝塞尔曲线, 由起点、终点和一个控制点所定义。 代码示例 const curve = new THREE.QuadraticBezierCurve( new THREE.Vector2( -10, 0 ), new THREE.Vector2( 20, 15 ), new THREE.Vector2( 10, 0 ) ); const points = curv

  • 问题内容: 困难在于它应该是跨平台的。Windows 2000,XP,Vista,OSX,Linux和其他Unix变体。我正在寻找可以针对所有平台完成此操作的代码片段,以及一种检测平台的方法。 现在,你应该知道的错误4787931是不能正常工作,所以请不要为我提供教科书的答案,我可以在手册中找到这些我自己。 问题答案: 你引用的错误(错误4787391)已在Java 8中修复。即使你使用的Java

  • 有一项政策规定,一个项目的税收应该四舍五入到最接近的0.05。因此,1.499应四舍五入至1.5,7.125应四舍五入至7.25。 上述四舍五入要求可以使用以下逻辑实现: 把税加到该项目的成本上就会产生: 我尝试使用BigDecimal而不是float来存储所有的值,并将刻度设置为小数点后2位。这种方法的问题是,如果没有指定舍入策略,bigDecimal将在某些情况下引发异常。为BigDecima