在Python中获得Hermite系列对数据的最小二乘法拟合

  • Post category:Python

在Python中,要获得对数据的最小二乘法拟合,可以使用Numpy库中的polyfit函数。

Hermite多项式是一种特殊的多项式,其形式为 $H_n(x) = (-1)^ne^{x^2}\frac{d^n}{dx^n}(e^{-x^2})$。可以通过Numpy库中的hermite函数生成Hermite多项式。

以下是获得Hermite系列对数据的最小二乘法拟合的完整攻略。

1. 导入需要的库

import numpy as np

2. 生成样本数据

x = np.array([1, 2, 3, 4, 5])
y = np.array([0.5, 2, 4.5, 8, 12.5])

3. 计算Hermite系列对样本数据的最小二乘法拟合

n = 4 # 需要拟合的次数
p = [np.polynomial.hermite.Hermite.fit(x, y, i) for i in range(n+1)]
coeffs = [poly.coef for poly in p]

4. 打印拟合结果

for i in range(n+1):
print(“H{}(x)的系数:{}”.format(i, coeffs[i]))

执行以上代码,即可得到Hermite系列对样本数据的最小二乘法拟合结果。

注意:以上代码中,n为需要拟合的次数,可以根据具体情况进行调整。另外,可将生成样本数据的步骤替换为自己手头的实际数据。

以下是另一个示例,对于给定的函数 $f(x) = x^2 + 2x + 1$,用Hermite系列拟合该函数并绘制拟合曲线。

1. 导入需要的库

import numpy as np
import matplotlib.pyplot as plt

2. 定义函数f(x)

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

3. 生成用于拟合的样本数据

x = np.linspace(-5, 5, num=100)
y = f(x)

4. 计算Hermite系列对样本数据的最小二乘法拟合

n = 4 # 需要拟合的次数
p = [np.polynomial.hermite.Hermite.fit(x, y, i) for i in range(n+1)]
coeffs = [poly.coef for poly in p]

5. 绘制拟合曲线

x_new = np.linspace(-5, 5, num=300)
y_new = np.zeros_like(x_new)
for i in range(n+1):
y_new += coeffs[i][0] * np.polynomial.hermite.Hermite.basis(i)(x_new)
plt.plot(x_new, y_new, label=”Hermite Series Fit”)

6. 绘制原函数曲线

plt.plot(x, y, label=”Original Function”)

7. 添加图例及标题

plt.legend()
plt.title(“Hermite Series Fit vs Original Function”)

8. 显示图像

plt.show()

执行以上代码,即可得到用Hermite系列拟合函数的拟合曲线。需要注意的是,拟合的次数n及样本数据的数量应根据实际情况进行调整,以得到更好的拟合效果。