以下代码生成的曲线应适合点
1, 1
150, 250
10000, 500
100000, 750
100000, 1000
我根据文档here构建了此代码,但是,我并不完全确定如何正确使用数据进行进一步计算,以及PolynomialCurveFitter.create(3)
是否会影响这些未来计算中的答案。
例如,如果x
值为y
,我将如何使用输出的数据来计算200
值是什么?如果我{{1},该值将如何不同?而不是PolynomialCurveFitter.create(2)
?
PolynomialCurveFitter.create(3)
答案 0 :(得分:2)
关于为您的功能更改d的后果
PolynomialCurveFitter.create
将多项式的次数作为参数。
非常(非常)粗略地说,多项式程度将描述"复杂性"你想要适合的曲线。低水平度将产生简单的曲线(d = 2时仅为抛物线),而较高度将产生更复杂的曲线,具有大量峰和谷,具有高度变化的尺寸,因此更能够完美地适应" #34;你所有的数据点,代价不一定是好的预测"所有其他价值观。
与此图中的蓝色曲线类似:
您可以看到直线如何更好"近似",而不能正确拟合数据点。
如何计算计算函数中任何y值的x
你"简单地"需要解决多项式!使用相同的库。将反转的y值添加到您的系数列表中,并找到它的根。
让我们说你选择了2的学位。
你的系数数组coeffs
将包含3个因子{a0, a1, a2}
,它们描述了这样的等式:
如果要为特定值解决此问题,例如y = 600,则需要解决:
所以,基本上,
所以,只需将600减去a0:
coeffs[0] -= 600
使用专用函数找到多项式的根:
PolynomialFunction polynomial = new PolynomialFunction(coeffs);
LaguerreSolver laguerreSolver = new LaguerreSolver();
double x = laguerreSolver.solve(100, polynomial, 0, 1000000);
System.out.println("For y = 600, we found x = " + x);