Python使用curve_fit进行直线与曲线拟合实战

周叙
周叙
发布时间:2026-10-11| 6人浏览过
原创

本文介绍如何使用Python的scipy.optimize模块中的curve_fit函数进行直线、二次及三次曲线的拟合与绘制。通过定义多项式方程,结合numpy和matplotlib,实现散点数据的曲线拟合与可视化展示,适用于任意形式曲线的拟合需求。

核心原理与工具

在Python中进行曲线拟合,主要依赖 scipy.optimize 模块提供的 curve_fit() 函数。该函数能够根据用户定义的数学模型,对给定的数据点进行最优参数估计,从而生成拟合曲线。它支持直线、二次曲线、三次曲线以及高斯曲线等多种形式的拟合。

代码实现步骤

以下是完整的拟合与绘制示例,包含直线、二次和三次曲线的拟合过程:

# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize

# 定义直线方程函数
def f_1(x, A, B):
  return A*x + B

# 定义二次曲线方程
def f_2(x, A, B, C):
  return A*x*x + B*x + C

# 定义三次曲线方程
def f_3(x, A, B, C, D):
  return A*x*x*x + B*x*x + C*x + D

def plot_test():
  plt.figure()
  # 原始数据点
  x0 = [1, 2, 3, 4, 5]
  y0 = [1, 3, 8, 18, 36]
  
  # 绘制原始散点
  plt.scatter(x0[:], y0[:], 25, "red")
  
  # 直线拟合与绘制
  A1, B1 = optimize.curve_fit(f_1, x0, y0)[0]
  x1 = np.arange(0, 6, 0.01)
  y1 = A1*x1 + B1
  plt.plot(x1, y1, "blue")
  
  # 二次曲线拟合与绘制
  A2, B2, C2 = optimize.curve_fit(f_2, x0, y0)[0]
  x2 = np.arange(0, 6, 0.01)
  y2 = A2*x2*x2 + B2*x2 + C2
  plt.plot(x2, y2, "green")
  
  # 三次曲线拟合与绘制
  A3, B3, C3, D3 = optimize.curve_fit(f_3, x0, y0)[0]
  x3 = np.arange(0, 6, 0.01)
  y3 = A3*x3*x3*x3 + B3*x3*x3 + C3*x3 + D3
  plt.plot(x3, y3, "purple")
  
  plt.title("www.jb51.net test")
  plt.xlabel('x')
  plt.ylabel('y')
  plt.show()
  return

plot_test()

高斯曲线拟合示例

对于非多项式曲线,如高斯曲线,需要定义对应的数学模型。以下是一个高斯曲线拟合函数的定义示例:

def f_gauss(x, A, B, C, sigma):
  return A*np.exp(-(x-B)**2/(2*sigma**2)) + C

总结

通过定义合适的曲线方程,curve_fit() 可以灵活地应用于各种形式的曲线拟合任务。结合 numpy 和 matplotlib,可以轻松实现数据的可视化展示。以上就是Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】的详细内容,更多关于Python曲线拟合的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。