天天看點

Apache Commons Math3學習筆記(2) - 多項式曲線拟合(轉)

多項式曲線拟合:org.apache.commons.math3.fitting.PolynomialCurveFitter類。

用法示例代碼:

Apache Commons Math3學習筆記(2) - 多項式曲線拟合(轉)

// ... 建立并初始化輸入資料:  

double[] x = new double[...];  

double[] y = new double[...];  

将原始的x-y資料序列合成帶權重的觀察點資料序列:  

WeightedObservedPoints points = new WeightedObservedPoints();  

// 将x-y資料元素調用points.add(x[i], y[i])加入到觀察點序列中  

// ...  

PolynomialCurveFitter fitter = PolynomialCurveFitter.create(degree);   // degree 指定多項式階數  

double[] result = fitter.fit(points.toList());   // 曲線拟合,結果儲存于雙精度數組中,由常數項至最高次幂系數排列  

首先要準備好待拟合的曲線資料x和y,這是兩個double數組,然後把這兩個數組合并到WeightedObservedPoints對象執行個體中,可以調用WeightedObservedPoints.add(x[i], y[i])将x和y序列中的資料逐個添加到觀察點序列對象中。随後建立PolynomialCurveFitter對象,建立時要指定拟合多項式的階數,注意階數要選擇适當,不是越高越好,否則拟合誤差會很大。最後調用PolynomialCurveFitter的fit方法即可完成多項式曲線拟合,fit方法的參數通過WeightedObservedPoints.toList()獲得。拟合結果通過一個double數組傳回,按元素順序依次是常數項、一次項、二次項、……。

完整的示範代碼如下:

http://blog.csdn.net/kingfox/article/details/44118319