编写一个函数,用于计算 n 阶插值多项式。这里采用 Lagrange 插值多项式的形式来计算:
时间: 2024-02-09 20:12:41 浏览: 71
Lagrange(x,y,x_inter):该函数用于计算拉格朗日插值多项式-matlab开发
好的,以下是一个计算 n 阶 Lagrange 插值多项式的 Python 函数:
```python
def Lagrange_interpolation(x, y):
"""
计算 n 阶 Lagrange 插值多项式
Parameters:
x: list, 插值节点 x 坐标
y: list, 插值节点 y 坐标
Returns:
P: str, 插值多项式字符串表示形式
"""
n = len(x)
P = ""
for i in range(n):
L = ""
for j in range(n):
if i != j:
if x[j] < 0:
L += f"(x+{-x[j]})"
elif x[j] > 0:
L += f"(x-{x[j]})"
else:
L += f"x"
L += f"/({x[i]}-{x[j]})"
P += f"+({y[i]})*({L})"
P = P.replace("+", "", 1)
return P
```
该函数接受两个列表 `x` 和 `y`,分别表示插值节点的 x 坐标和 y 坐标。函数返回一个字符串 P,表示 n 阶 Lagrange 插值多项式的形式。
例如,我们想要计算经过以下 3 个插值节点 (0,1), (1,2), (2,3) 的二次插值多项式,可以这样调用函数:
```python
x = [0, 1, 2]
y = [1, 2, 3]
P = Lagrange_interpolation(x, y)
print(P)
```
输出结果为:
```
+(-1)*((x-1)/(0-1))*((x-2)/(0-2))+2*((x-0)/(1-0))*((x-2)/(1-2))+3*((x-0)/(2-0))*((x-1)/(2-1))
```
这个字符串就是我们要求的二次 Lagrange 插值多项式。
阅读全文