拉格朗日插值 Python
时间: 2023-11-05 14:18:05 浏览: 241
拉格朗日插值
拉格朗日插值是一种函数插值的方法,通过给定一组数据点和对应的函数值,可以使用拉格朗日多项式来拟合出一个插值函数。在Python中,可以使用以下代码来实现拉格朗日插值:
```python
import numpy as np
import matplotlib.pyplot as plt
def intLagrange(x, xcp, f):
hatf = np.zeros(len(x))
for n in range(len(x)):
for k in range(len(xcp)):
xcp1 = xcp.copy()
xcp1[k = xcp[k - 1
xcp2 = xcp.copy()
xcp2[k = x[n - 1
hatf[n = f(xcp[k]) * np.prod(x[n - xcp2) / np.prod(xcp[k - xcp1)
return hatf
if __name__ == '__main__':
plt.figure(figsize=(7, 4))
# parameters
cpnum = 17 # 插值节点数
xs = -9
xe = 11
x = np.arange(xs, xe, 0.1) # 待插值点
xcp = np.linspace(xs, xe, cpnum) # 插值节点
f = lambda x: x**2 + 30 * np.sin(x) # function to be interpolated
plt.plot(x, f(x)) # 原始函数曲线
hatf = intLagrange(x, xcp, f) # 拉格朗日插值函数
plt.plot(x, hatf) # 插值函数曲线
# 绘制插值节点
for i in range(len(xcp)):
plt.plot(xcp[i], f(xcp[i]), 'ro', markerfacecolor='none')
plt.legend(['original', 'Lagrange', 'control point'])
plt.title('Lagrange Interpolation')
plt.show()
```
这段代码使用numpy和matplotlib库来实现拉格朗日插值。首先定义了一个`intLagrange`函数,用于计算拉格朗日插值多项式的值。然后,在主程序中定义了插值节点个数、待插值点范围、插值节点的取值范围和待插值函数。最后,通过调用`intLagrange`函数计算插值函数的值,并使用matplotlib库绘制原始函数曲线、插值函数曲线和插值节点。
这段代码可以在给定的数据点上使用拉格朗日插值法计算插值函数的值,并将结果绘制成图形。通过调整插值节点的个数和待插值点的范围,可以得到不同精度和形状的插值函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [使用拉格朗日多项式(Lagrangian polynomials)的插值法(python,数值积分)](https://blog.csdn.net/seventonight/article/details/116566875)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [函数插值的python实现——拉格朗日、牛顿插值](https://blog.csdn.net/xfijun/article/details/108082019)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文