用Java实现二次拟合,输出所有项并给出个点偏差
时间: 2024-11-25 11:12:31 浏览: 6
Java课程设计(拟合二次函数)
在Java中,我们可以使用数学库,如Apache Commons Math,来实现二次函数的拟合。二次函数通常表示为 `y = ax^2 + bx + c` 的形式。以下是使用最小二乘法(Least Squares Method)进行二次拟合的一个简单示例:
```java
import org.apache.commons.math3.stat.regression.SimpleRegression;
public class QuadraticFit {
public static void main(String[] args) {
// 假设我们有数据点 (x1, y1), (x2, y2), ..., (xn, yn)
double[] xData = {1, 2, 3, 4, 5};
double[] yData = {3, 7, 12, 18, 24}; // 期望它们成二次关系
SimpleRegression regression = new SimpleRegression();
for (int i = 0; i < xData.length; i++) {
regression.addData(xData[i], yData[i]);
}
// 获取拟合参数 a, b, c
double a = regression.getIntercept(); // c = a
double b = regression.getSlope();
System.out.println("二次函数系数 (a): " + a);
System.out.println("一次项系数 (b): " + b);
// 输出二次函数表达式
String quadraticFunction = String.format("y = %.2fx^2 + %.2fx + %.2f", a, b, a); // 因为c=a,这里合并了两项
System.out.println("二次函数表达式: " + quadraticFunction);
// 计算每个点的偏差 (实际值 - 预测值)
for (int i = 0; i < xData.length; i++) {
double predictedY = a * xData[i] * xData[i] + b * xData[i];
double residual = yData[i] - predictedY;
System.out.printf("对于点 (%d, %.2f), 偏差: %.2f\n", xData[i], yData[i], residual);
}
}
}
```
这个程序会计算出最佳拟合的二次方程,并输出每个给定点的预测值和偏差。
阅读全文