计算方法 - 拉格朗日插值多项式 / 牛顿型插值函数

该博客主要探讨了数值计算中的两种方法——插值和差分。通过示例代码展示了使用Python的numpy库进行线性插值和差分计算的过程。首先,用一维数组X和对应的Y值,计算了给定x值的插值结果L。接着,利用差分矩阵DQ和DC,分别计算了一阶向前差分和后向差分,并得出在特定x值处的差分近似值N1和N2。这些方法在数值求解、科学计算等领域有着广泛应用。
摘要由CSDN通过智能技术生成
import numpy as np

if __name__ == '__main__':
    X = [0.0, 0.1, 0.195, 0.3, 0.401, 0.5]
    Y = [0.39894, 0.39695, 0.39142, 0.38138, 0.36812, 0.35206]
    x = float(input())
    L = 0.0
    n = len(Y)
    for k in range(n):
        l = Y[k]
        for j in range(n):
            if j != k:
                l = l * (x - X[j]) / (X[k] - X[j])
        L = L + l
    print(np.round(L, 5))
import numpy as np

if __name__ == '__main__':
    X = np.array(input().split(" "))
    Y = np.array(input().split(" "))
    X = X.astype(float)
    Y = Y.astype(float)
    x = float(input())
    n = len(Y)
    DQ = np.zeros((n, n))
    for i in range(n):
        DQ[i][0] = Y[i]
    for i in range(1, n):
        for j in range(0, n):
            if j+i < n:
                DQ[j][i] = (DQ[j][i-1] - DQ[j+1][i-1]) / (X[j] - X[j+i])
    N1 = 0.0
    for i in range(0, n):
        a = DQ[0][i]
        for j in range(0, i):
            a = a * (x - X[j])
        N1 = N1 + a
    for i in range(n):
        for j in range(n):
            print(format(DQ[i][j], '.5f'), end=' ')
        print()
    print(format(N1, '.5f'))
    DC = np.zeros((n, n))
    for i in range(n):
        DC[i][0] = Y[i]
    for i in range(1, n):
        for j in range(0, n):
            if j+i < n:
                DC[j][i] = (DC[j+1][i-1] - DC[j][i-1])
    h = X[1] - X[0]
    t = (x - X[0]) / h
    N2 = 0.0
    for i in range(0, n):
        r = DC[0][i]
        for j in range(0, i):
            r = r * (t-j)
        r = r / np.math.factorial(i)
        N2 = N2 + r
    for i in range(n):
        for j in range(n):
            print(format(DC[i][j], '.5f'), end=' ')
        print()
    print(format(N2, '.5f'))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值