中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

使用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

武邑县| 潼南县| 三亚市| 吴桥县| 滨海县| 靖安县| 扶沟县| 德兴市| 长兴县| 疏勒县| 五莲县| 武山县| 牙克石市| 松桃| 锦州市| 台前县| 府谷县| 苗栗县| 东光县| 平陆县| 锡林浩特市| 太湖县| 桐乡市| 嘉兴市| 海兴县| 禄丰县| 平度市| 七台河市| 呼和浩特市| 衢州市| 保亭| 昌乐县| 天台县| 牟定县| 长葛市| 柏乡县| 永福县| 大兴区| 焦作市| 贞丰县| 霍州市|