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

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

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

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

def diff(xi,yi,n):
    """
    param xi:插值節(jié)點(diǎn)xi
    param yi:插值節(jié)點(diǎn)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. 牛頓插值實(shí)現(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é)點(diǎn)xi
    param yi:插值節(jié)點(diǎn)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實(shí)現(xiàn)牛頓插值法的文章就介紹到這了,更多相關(guān)python牛頓插值法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

江安县| 湾仔区| 虎林市| 和林格尔县| 怀柔区| 仁怀市| 靖州| 瑞安市| 广元市| 繁峙县| 青田县| 蓬莱市| 江山市| 新和县| 镇雄县| 宽甸| 斗六市| 滦平县| 临沧市| 麻阳| 当阳市| 汤原县| 韶关市| 乌苏市| 朝阳市| 克山县| 定州市| 新竹县| 新蔡县| 徐闻县| 睢宁县| 富源县| 富裕县| 芒康县| 休宁县| 阿巴嘎旗| 安阳市| 徐汇区| 潍坊市| 横峰县| 于田县|