最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Python實現(xiàn)Newton插值法

 更新時間:2021年04月16日 14:40:13   作者:Amiyai  
最近在做數(shù)值分析的作業(yè),作業(yè)里面的小數(shù)點讓計算能力本就薄弱的我雪上加霜,為了偷個小懶快速把作業(yè)完成,所以有了這篇博客。哈哈哈哈哈,讓我們一起復(fù)制copy,完成作業(yè),哈哈哈哈需要的朋友可以參考下

1. n階差商實現(xiàn)

def diff(xi,yi,n):
    """
    param xi:插值節(jié)點xi
    param yi:插值節(jié)點yi
    param n: 求幾階差商
    return: n階差商
    """
    if len(xi) != len(yi):  #xi和yi必須保證長度一致
        return
    else:
        diff_quot = [[] for i in range(n)]
        for j in range(1,n+1):
            if j == 1:
                for i in range(n+1-j):
                    diff_quot[j-1].append((yi[i]-yi[i+1]) / (xi[i] - xi[i + 1]))
            else:
                for i in range(n+1-j):
                    diff_quot[j-1].append((diff_quot[j-2][i]-diff_quot[j-2][i+1]) / (xi[i] - xi[i + j]))
    return diff_quot

測試一下:

xi = [1.615,1.634,1.702,1.828]
yi = [2.41450,2.46259,2.65271,3.03035]
n = 3
print(diff(xi,yi,n))

返回的差商結(jié)果為:

[[2.53105263157897, 2.7958823529411716, 2.997142857142854], [3.0440197857724347, 1.0374252793901158], [-9.420631485362996]]

2. 牛頓插值實現(xiàn)

def Newton(x):
    f = yi[0]
    v = []
    r = 1
    for i in range(n):
        r *= (x - xi[i])
        v.append(r)
        f += diff_quot[i][0] * v[i]
    return f

測試一下:

x = 1.682
print(Newton(x))

結(jié)果為:

2.5944760289639732

3.完整Python代碼

def Newton(xi,yi,n,x):
    """
    param xi:插值節(jié)點xi
    param yi:插值節(jié)點yi
    param n: 求幾階差商
    param x: 代求近似值
    return: n階差商
    """
    if len(xi) != len(yi):  #xi和yi必須保證長度一致
        return
    else:
        diff_quot = [[] for i in range(n)]
        for j in range(1,n+1):
            if j == 1:
                for i in range(n+1-j):
                    diff_quot[j-1].append((yi[i]-yi[i+1]) / (xi[i] - xi[i + 1]))
            else:
                for i in range(n+1-j):
                    diff_quot[j-1].append((diff_quot[j-2][i]-diff_quot[j-2][i+1]) / (xi[i] - xi[i + j]))
    print(diff_quot)
    
    f = yi[0]
    v = []
    r = 1
    for i in range(n):
        r *= (x - xi[i])
        v.append(r)
        f += diff_quot[i][0] * v[i]
    return f

到此這篇關(guān)于用Python實現(xiàn)牛頓插值法的文章就介紹到這了,更多相關(guān)python牛頓插值法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

灯塔市| 固安县| 杭锦旗| 沿河| 咸丰县| 定襄县| 逊克县| 苏州市| 三明市| 永济市| 雷州市| 三河市| 遂平县| 饶河县| 隆尧县| 大邑县| 柳河县| 大英县| 贵南县| 德清县| 东城区| 巨鹿县| 宽甸| 阿尔山市| 华坪县| 丹凤县| 六枝特区| 水富县| 招远市| 横峰县| 荆州市| 常山县| 满洲里市| 清水河县| 青州市| 特克斯县| 娱乐| 昌吉市| 海南省| 长汀县| 定西市|