拉格朗日插值法

这里写图片描述

python代码实现插值拟合 1/(1+25x^2)

import matplotlib.pyplot as plt
import numpy as np

def f(x):
    return 1/(1+x**2)


def L(x, X, Y1):

    Ln = 0.0000
    t = 0
    for j in X:
        Molecule = 1.0000
        Denominator = 1.0000
        for i in X:
             if i != j:
                 Molecule *= x-i
                 Denominator *= j-i
        k = Molecule/Denominator

        Ln += Y1[t] * k
        t+=1

    return Ln
X = np.arange(-5,5,0.5)
X1 = np.arange(-5,5,0.1)
Y = f(X)
Y1 = f(X1)
Y2 = L(X1, X, Y)
print(Y1)
print(Y2)
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111)

ax.set_ylim(-5,5)
ax.set_xlim(-5,5)
ax.plot(X1, Y1)
ax.plot(X1, Y2)

plt.show()

图结果这里写图片描述

两边的差距过大的现象成为龙格现象。解决方案是分段插值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值