亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Java怎么實現一個n階曲線擬合功能

發布時間:2021-04-08 17:50:16 來源:億速云 閱讀:215 作者:Leah 欄目:編程語言

這篇文章給大家介紹使用Java怎么實現一個n階曲線擬合功能,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

package commonAlgorithm;
import commonAlgorithm.PolynomialSoluter;
import java.lang.Math;
public class LeastSquare {
  private double[][] matrixA;
  private double[] arrayB;
  private double[] factors;
  private int order;
  public LeastSquare() {
  }
  /*
   * 實例化后,計算前,先要輸入參數并生成公式 arrayX為采樣點的x軸坐標,按照采樣順序排列
   * arrayY為采樣點的y軸坐標,按照采樣順序與x一一對應排列 order
   * 為進行擬合的階數。用低階來擬合高階曲線時可能會不準確,但階數過高會導致計算緩慢
   */
  public boolean generateFormula(double[] arrayX, double[] arrayY, int order) {
    if (arrayX.length != arrayY.length)
      return false;
    this.order = order;
    int len = arrayX.length;
    // 擬合運算中的x矩陣和y矩陣
    matrixA = new double[order + 1][order + 1];
    arrayB = new double[order + 1];
    // 生成y矩陣以及x矩陣中冪<=order的部分
    for (int i = 0; i < order + 1; i++) {
      double sumX = 0;
      for (int j = 0; j < len; j++) {
        double tmp = Math.pow(arrayX[j], i);
        sumX += tmp;
        arrayB[i] += tmp * arrayY[j];
      }
      for (int j = 0; j <= i; j++)
        matrixA[j][i - j] = sumX;
    }
    // 生成x矩陣中冪>order的部分
    for (int i = order + 1; i <= order * 2; i++) {
      double sumX = 0;
      for (int j = 0; j < len; j++)
        sumX += Math.pow(arrayX[j], i);
      for (int j = i - order; j < order + 1; j++) {
        matrixA[i - j][j] = sumX;
      }
    }
    // 實例化PolynomiaSoluter并解方程組,得到各階的系數序列factors
    PolynomialSoluter soluter = new PolynomialSoluter();
    factors = soluter.getResult(matrixA, arrayB);
    if (factors == null)
      return false;
    else
      return true;
  }
  // 根據輸入坐標,以及系數序列factors計算指定坐標的結果
  public double calculate(double x) {
    double result = factors[0];
    for (int i = 1; i <= order; i++)
      result += factors[i] * Math.pow(x, i);
    return result;
  }
}

關于使用Java怎么實現一個n階曲線擬合功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

同德县| 防城港市| 芜湖市| 高雄市| 冷水江市| 乃东县| 武山县| 老河口市| 泰安市| 卢龙县| 灌云县| 廊坊市| 钟祥市| 新竹县| 苏州市| 芜湖市| 扎鲁特旗| 瑞金市| 若尔盖县| 连云港市| 常宁市| 宁夏| 阿合奇县| 怀化市| 东乡| 肥乡县| 康保县| 平度市| 建宁县| 望奎县| 额济纳旗| 永康市| 西青区| 大石桥市| 深州市| 吴旗县| 潜江市| 彰化县| 丁青县| 阿巴嘎旗| 南部县|