日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

拉格朗日插值算法

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拉格朗日插值算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

拉格朗日插值算法

    • 1. Python實現
    • 2. Java實現
    • 3. 源碼

拉格朗日線性差值,如果原始只有倆個點,那就是估計的一條直線,計算x對應的值y。

1. Python實現

這篇講的淺顯易懂,我反正看懂了,尤其是線性差值,很直觀哦
https://www.jianshu.com/p/2238ef6f3a59

  • Python庫已經實現了這個算法:

from scipy.interpolate import lagrange #導入拉格朗日插值函數直接用就ok了
https://zhuanlan.zhihu.com/p/136375783

  • python 源碼Lagrange.py

  • 缺失值處理之拉格朗日插值法

2. Java實現

  • https://blog.csdn.net/weixin_30624825/article/details/98612983

3. 源碼

import lombok.extern.slf4j.Slf4j;@Slf4j
public class LagrangeUtil {private static double[] Lag(double x[], double y[], double x0[]) {int m = x.length;int n = x0.length;double y0[] = new double[n];for (int ia = 0; ia < n; ia++) {double j = 0;for (int ib = 0; ib < m; ib++) {double k = 1;for (int ic = 0; ic < m; ic++) {if (ib != ic) {k = k * (x0[ia] - x[ic]) / (x[ib] - x[ic]);}}k = k * y[ib];j = j + k;}y0[ia] = j;}return y0;}public static double[] lagDouble(long x[], double y[], long x0[]) {int m = x.length;int n = x0.length;double y0[] = new double[n];for (int ia = 0; ia < n; ia++) {double j = 0;for (int ib = 0; ib < m; ib++) {double k = 1;for (int ic = 0; ic < m; ic++) {if (ib != ic) {k = k * (x0[ia] - x[ic]) / (x[ib] - x[ic]);}}k = k * y[ib];j = j + k;}y0[ia] = j;}return y0;}public static void main(String[] args) {long[] gpsTimeArr = new long[]{1607395389600L, 1607395389640L};long[] gpsTimeExpectArr = new long[]{1607395389600L, 1607395389640L, 1607395389633L};double[] lonArr = new double[]{22.5433462d, 22.5433463d};double[] lonRes = LagrangeUtil.lagDouble(gpsTimeArr, lonArr, gpsTimeExpectArr);log.info("原始數據:");for (int i = 0; i < gpsTimeArr.length; i++) {log.info("x0: {},y0: {}", gpsTimeArr[i], lonArr[i]);}log.info("運用拉格朗日插值法求解得:");for (int i = 0; i < gpsTimeExpectArr.length; i++) {log.info("x0: {},y0: {}", gpsTimeExpectArr[i], lonRes[i]);log.info("x0: {},y0: {}", gpsTimeExpectArr[i], Double.parseDouble(String.format("%.7f", lonRes[i])));}}
}

總結

以上是生活随笔為你收集整理的拉格朗日插值算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。