欢迎访问宙启技术站
智能推送

使用numpy.linalg实现多项式拟合

发布时间:2023-12-25 12:31:35

numpy.linalg是NumPy库中的线性代数模块,提供了多种线性代数运算的函数。在多项式拟合中,可以使用numpy.linalg中的函数来求解最小二乘多项式拟合。

下面是一个使用numpy.linalg实现多项式拟合的例子。

首先,导入所需的库:

import numpy as np
import matplotlib.pyplot as plt

接下来,生成一些随机的样本数据:

# 生成随机的x坐标
x = np.linspace(0, 10, 100)
# 生成对应的y坐标,使用sin函数加上一个随机噪声
y = np.sin(x) + np.random.normal(0, 0.1, 100)

使用numpy.polyfit函数进行多项式拟合,polyfit函数的参数为x坐标、y坐标和拟合的阶数:

# 使用2次多项式进行拟合
z = np.polyfit(x, y, 2)

使用numpy.polyval函数根据拟合结果计算相应的y值:

# 计算拟合结果的y值
y_fit = np.polyval(z, x)

最后,绘制原始数据和拟合结果的图像:

# 绘制原始数据
plt.scatter(x, y, label='Original Data')
# 绘制拟合结果
plt.plot(x, y_fit, 'r', label='Fit Result')
plt.legend()
plt.show()

完整的代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 生成随机的x坐标
x = np.linspace(0, 10, 100)
# 生成对应的y坐标,使用sin函数加上一个随机噪声
y = np.sin(x) + np.random.normal(0, 0.1, 100)

# 使用2次多项式进行拟合
z = np.polyfit(x, y, 2)

# 计算拟合结果的y值
y_fit = np.polyval(z, x)

# 绘制原始数据
plt.scatter(x, y, label='Original Data')
# 绘制拟合结果
plt.plot(x, y_fit, 'r', label='Fit Result')
plt.legend()
plt.show()

运行上面的代码,可以看到原始数据和拟合结果的图像,拟合结果较好地拟合了原始数据。

使用numpy.linalg实现多项式拟合可以方便地进行曲线拟合,并且可以根据具体需求选择合适的多项式阶数来得到更好的拟合结果。