小编典典

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

java

我有三组数据,例如:

x   y
4   0
6   60
8   0

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


阅读 353

收藏
2020-11-26

共1个答案

小编典典

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

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项中的两个为零的事实使公式更加简单,您也许可以利用这一点。但是,如果这只是一个巧合,而不是一般规则,那么您需要完整的公式。

2020-11-26