python3-曲线拟合(polyfit/polyval)

本文通过使用Python的NumPy库实现了一次多项式的曲线拟合,并展示了如何使用matplotlib进行图表绘制来比较原始数据与拟合后的数据。该示例有助于理解如何应用多项式拟合解决实际问题。
部署运行你感兴趣的模型镜像

【polyfit】多项式曲线拟合

【polyval】多项式曲线求值

import numpy as np
import matplotlib.pyplot as plt


x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3

poly = np.polyfit(x_data, y_data, deg = 1)

plt.plot(x_data, y_data, 'o')
plt.plot(x_data, np.polyval(poly, x_data))
plt.show()

效果:

 

 

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### Python 曲线拟合方法 #### 使用 `numpy.polyfit` 进行多项式拟合 对于简单的多项式拟合,可以使用 NumPy 提供的 `polyfit` 函数。该函数通过最小二乘法来寻找最佳拟合系数。 ```python import numpy as np import matplotlib.pyplot as plt # 原始数据点 x = np.array([0, 1, 2, 3, 4]) y = np.array([1, 3, 2, 5, 8]) # 执行二次多项式拟合 coefficients = np.polyfit(x, y, deg=2) # 构建用于绘图的新 x 轴坐标 x_new = np.linspace(min(x), max(x), num=len(x)*10) # 计算对应的 y 值 y_new = np.polyval(coefficients, x_new) plt.scatter(x, y, label="原始数据", color='blue') plt.plot(x_new, y_new, label=f"{int(coefficients[0])}x² + {int(coefficients[1])}x + {int(coefficients[2])}", color='red') plt.legend() plt.show() ``` 此代码片段展示了如何利用 `np.polyfit()` 对给定的数据集执行二次项拟合并绘制结果图表[^1]。 #### 使用 `scipy.optimize.curve_fit` 自定义模型拟合 当需要更复杂的非线性关系时,则可借助 SciPy 的 `curve_fit` 功能来进行参数估计。下面是一个关于高斯分布的例子: ```python from scipy.optimize import curve_fit import math def gaussian(x, a, b, c): """ 高斯函数 """ return a * np.exp(-(x-b)**2 / (2*c**2)) # 测试用的数据点 test_x = np.linspace(-10, 10, 100) test_y = gaussian(test_x, 2.5, 1., 1.) + np.random.normal(size=test_x.size)/10. popt, pcov = curve_fit(gaussian, test_x, test_y) print(f"最优参数: {popt}") plt.figure(figsize=(8,6)) plt.scatter(test_x, test_y, s=10, alpha=.5, marker='o', label="带噪声的数据") plt.plot(test_x, gaussian(test_x,*popt),'g--',label="拟合后的曲线") plt.title('Gaussian Fit Example') plt.xlabel('X Axis Label') plt.ylabel('Y Axis Label') plt.legend() plt.grid(True) plt.show() ``` 上述例子说明了怎样应用 `curve_fit` 来调整预设形式的概率密度函数至实际观测值上,并展示最终效果[^2]。 #### 注意事项与常见问题解决办法 有时可能会遇到拟合失败的情况,这可能是由于初始猜测不合理或者目标方程不适合当前数据等原因造成的。此时应该仔细检查输入数据的质量以及所选模型是否恰当[^3]。 另外,在配置开发环境过程中也需要注意版本兼容性和路径设置等问题,确保正确加载所需的第三方库文件[^5]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值