如何利用Python拟合函数曲线详解

目录
  • 拟合多项式
    • 函数说明
  • 拟合任意函数
    • 函数说明
  • 总结

使用Python拟合函数曲线需要用到一些第三方库:

  • numpy:科学计算的基础库(例如:矩阵)
  • matplotlib:绘图库
  • scipy:科学计算库

如果没有安装过这些库,需要在命令行中输入下列代码进行安装:

pip install numpy matplotlib scipy

拟合多项式

'''
Author: CloudSir
Date: 2021-08-01 13:40:50
LastEditTime: 2021-08-02 09:41:54
LastEditors: CloudSir
Description: Python拟合多项式
https://github.com/cloudsir
'''
import matplotlib.pyplot as plt
import numpy as np

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [2.83, 9.53, 14.52, 21.57, 38.26, 53.92, 73.15, 101.56, 129.54, 169.75, 207.59]
z1 = np.polyfit(x, y, 3) #用3次多项式拟合,输出系数从高到0
p1 = np.poly1d(z1) #使用次数合成多项式
y_pre = p1(x)

plt.plot(x,y,'.')
plt.plot(x,y_pre)
plt.show()

函数说明

np.polyfit(x, y, n)

功能:拟合曲线

参数:

  • x,y:x和y的原始数据
  • n:要拟合的次数

返回值:

  • 一个列表,拟合出的系数,顺序为从高到底

例: n=3时,会利用
a x 3 + b x 2 + c x + d 
拟合函数,并返回拟合出的系数 [a, b, c, d]​​​​

np.poly1d(li, r=False)

功能:生成多项式函数

参数:

li:

当没有r参数或 r=False 时,传入一个系数列表(次数从高到低),利用该列表生成多项式函数并返回

import numpy as np

f = np.poly1d([2, 3, 4])

“”" f ( x ) = 2 x 2 + 3 x + 4
"""

print(f(2)) # 18

当参数 r=True 时,传入一个根列表,利用该列表生成多项式函数并返回

import numpy as np

f = np.poly1d([2, 3, 4], True)

“”“ f ( x ) = ( x − 2 ) ∗ ( x − 3 ) ∗ ( x − 4 )
”""

print(f(0)) # -24

返回值:

见上

拟合任意函数

'''
Author: CloudSir
Date: 2021-08-03 15:01:17
LastEditTime: 2021-08-03 15:26:05
LastEditors: CloudSir
Description: Python拟合任意函数
https://github.com/cloudsir
'''
# 引用库函数

import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize as op

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文
plt.rcParams['axes.unicode_minus'] = False    # 用来正常显示负号

# 需要拟合的函数
def f_1(x, A, B, C):
    return A * x**2 + B * x + C

# 需要拟合的数据组
x_group = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y_group = [2.83, 9.53, 14.52, 21.57, 38.26, 53.92, 73.15, 101.56, 129.54, 169.75, 207.59]

# 得到返回的A,B值
A, B, C = op.curve_fit(f_1, x_group, y_group)[0]

# 数据点与原先的进行画图比较
plt.scatter(x_group, y_group, marker='o',label='真实值')
x = np.arange(0, 15, 0.01)
y = A * x**2 + B *x + C
plt.plot(x, y,color='red',label='拟合曲线')
plt.legend() # 显示label

plt.show()

函数说明

op.curve_fit(f, x, y)

功能:拟合任意函数

参数:

f:要拟合的函数类型

# 构建一个二次函数
def f(x, A, B, C):
    return A * x**2 + B * x + C

op.curve_fit(f, x, y) # 进行拟合

x, y:x和y的原始数据

返回值:一个元组 (popt,pcov)

  • popt是一个一维数组,表示得到的拟合方程的参数。
  • pcov是一个二维数组,是在popt参数下得到的协方差。

总结

到此这篇关于如何利用Python拟合函数曲线的文章就介绍到这了,更多相关Python拟合函数曲线内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解用Python为直方图绘制拟合曲线的两种方法

    直方图是用于展示数据的分组分布状态的一种图形,用矩形的宽度和高度表示频数分布,通过直方图,用户可以很直观的看出数据分布的形状.中心位置以及数据的离散程度等. 在python中一般采用matplotlib库的hist来绘制直方图,至于如何给直方图添加拟合曲线(密度函数曲线),一般来说有以下两种方法. 方法一:采用matplotlib中的mlab模块 mlab模块是Python中强大的3D作图工具,立体感效果极佳.在这里使用mlab可以跳出直方图二维平面图形的限制,在此基础上再添加一条曲线.在这里,

  • Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】

    本文实例讲述了Python实现曲线拟合操作.分享给大家供大家参考,具体如下: 这两天学习了用python来拟合曲线. 一.环境配置 本人比较比较懒,所以下载的全部是exe文件来安装,安装按照顺利来安装.自动会找到python的安装路径,一直点下一步就行.还有其他的两种安装方式:一种是解压,一种是pip.我没有尝试,就不乱说八道了. 没有ArcGIS 环境的,可以不看下面这段话了. 在配置环境时遇见一个小波折,就是原先电脑装过ArcGIS10.2 ,所以其会默认安装python2.7,而且pyth

  • Python基于最小二乘法实现曲线拟合示例

    本文实例讲述了Python基于最小二乘法实现曲线拟合.分享给大家供大家参考,具体如下: 这里不手动实现最小二乘,调用scipy库中实现好的相关优化函数. 考虑如下的含有4个参数的函数式: 构造数据 import numpy as np from scipy import optimize import matplotlib.pyplot as plt def logistic4(x, A, B, C, D): return (A-D)/(1+(x/C)**B)+D def residuals(p

  • Python 做曲线拟合和求积分的方法

    这是一个由加油站油罐传感器测量的油罐高度数据和出油体积,根据体积和高度的倒数,用截面积来描述油罐形状,求出拟合曲线,再用标准数据,求积分来验证拟合曲线效果和误差的一个小项目. 主要的就是首先要安装Anaconda  python库,然后来运用这些数学工具. ###最小二乘法试验### import numpy as np import pymysql from scipy.optimize import leastsq from scipy import integrate ###绘图,看拟合效

  • Python实现二维曲线拟合的方法

    如下所示: from numpy import * import numpy as np import matplotlib.pyplot as plt plt.close() fig=plt.figure() plt.grid(True) plt.axis([0,10,0,8]) #列出数据 point=[[1,2],[2,3],[3,6],[4,7],[6,5],[7,3],[8,2]] plt.xlabel("X") plt.ylabel("Y") #用于求出

  • python 绘制拟合曲线并加指定点标识的实现

    python 绘制拟合曲线并加指定点标识 import os import numpy as np from scipy import log from scipy.optimize import curve_fit import matplotlib.pyplot as plt import math from sklearn.metrics import r2_score # 字体 plt.rcParams['font.sans-serif']=['SimHei'] # 拟合函数 def f

  • 如何利用Python拟合函数曲线详解

    目录 拟合多项式 函数说明 拟合任意函数 函数说明 总结 使用Python拟合函数曲线需要用到一些第三方库: numpy:科学计算的基础库(例如:矩阵) matplotlib:绘图库 scipy:科学计算库 如果没有安装过这些库,需要在命令行中输入下列代码进行安装: pip install numpy matplotlib scipy 拟合多项式 ''' Author: CloudSir Date: 2021-08-01 13:40:50 LastEditTime: 2021-08-02 09:

  • 利用Python生成随机验证码详解

    目录 1.先搞环境 2.开始码代码 3. 加干扰 4. 加入更多的干扰 5. 验证码 + 随机字符 6. 验证码保存本地(选) 最近感觉被大数据定义成机器人了,随便看个网页都跳验证码. 怎么用python绕验证码是个令人头秃的事情, 我投降!那么今天手把手教大家如何写验证码,去为难别人,让他们头秃. 说错了,其实就是教大家如何通过python代码去生成验证码~~ 1.先搞环境 1.我们需要你电脑有python3.4以上的版本 2.pip安装PIL包 pip install pillow 3.默念

  • 利用Python还原方阵游戏详解

    目录 一.前言 二.游戏规则 三.numpy模块 四.第一步:大循环and获取规格 五.第二步:初始化棋盘 六.第三步:标注矩阵功能(难) 七.第四步:查看标注矩阵功能 八.第五步:胜利侦测 九.第六步:查看行列信息(难) 十.第七步:重新开始功能 十一.得分与完善and完整代码 一.前言 写这篇文章的灵感来源于我玩游戏的时候(为了避免过不了审就不说是啥游戏了),看见一个大佬在游戏里面建造了“还原方阵游戏”,就感觉很牛掰,就想着python不是有矩阵吗,可不可以还原一下呢? 说干就干,我写的那个

  • MySQL数据库设计之利用Python操作Schema方法详解

    弓在箭要射出之前,低声对箭说道,"你的自由是我的".Schema如箭,弓似Python,选择Python,是Schema最大的自由.而自由应是一个能使自己变得更好的机会. Schema是什么? 不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据.意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证.一般我都是加很多判断,各种if,导致代码很丑陋,能不能有一种方式比较优雅的验证用户数据呢

  • python groupby 函数 as_index详解

    在官方网站中对as_index有以下介绍: as_index : boolean, default True For aggregated output, return object with group labels as the index. Only relevant for DataFrame input. as_index=False is effectively "SQL-style" grouped output 翻译过来就是说as_index 的默认值为True, 对于

  • python isinstance函数用法详解

    这篇文章主要介绍了python isinstance函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 isinstance() 函数来判断一个对象是否是一个已知的类型类似 type(). isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系. isinstance() 会认为子类是一种父类类型,考虑继承关系. 如果要判断两个类型是否相同推荐使用 isinstance(). 语法

  • Python ord函数()案例详解

    python中ord函数 Python ord()函数 (Python ord() function) ord() function is a library function in Python, it is used to get number value from given character value, it accepts a character and returns an integer i.e. it is used to convert a character to an

  • Python的函数使用详解

    目录 前言 1 跳出循环-break 2 python函数 2.1 内置函数 2.2 自定义函数 2.3 main函数 前言 在两种python循环语句的使用中,不仅仅是循环条件达到才能跳出循环体.所以,在对python函数进行阐述之前,先对跳出循环的简单语句块进行介绍. 1 跳出循环-break python提供了一种方便快捷的跳出循环的方法-break,示例如下,计算未知数字个数的总和: if __name__ == "__main__": sum = 0 while True:

  • python的函数最详解

    目录 一.函数入门 1.概念 2.定义函数的语法格式 函数名 形参列表 返回值 3.函数的文档(注释→help) 4.举例 二.函数的参数 1.可变对象 2.参数收集(不定个数的参数) 3.解决一个实际问题 4.参数收集(收集关键字参数) 5.逆向参数收集(炸开参数) 6.参数的内存管理 7.函数中变量的作用域 8.获取指定范围内的变量 三.局部函数(函数的嵌套) 四.函数的高级内容 1.函数作为函数的形参 2.使用函数作为返回值 3.递归 五.局部函数与lambda 1.用lambda表达式代

  • Python groupby函数图文详解

    一.分组原理 核心: 1.不论分组键是数组.列表.字典.Series.函数,只要其与待分组变量的轴长度一致都可以传入groupby进行分组. 2.默认axis=0按行分组,可指定axis=1对列分组. groupby()语法格式 DataFrame.groupby(by=None, axis=0, level=None, as_index=True, group_keys=True, squeeze=False, observed=False, **kwargs) groupby原理 group

随机推荐