可以的,有多种方法进行任意函数曲线的拟合。但如果你是普朗克,你得先猜出来黑体辐射的公式样子,拟合只能给出系数。

——————————————

1、第一种是进行多项式拟合,数学上可以证明,任意函数都可以表示为多项式形式。具体示例如下:

###拟合年龄

import numpy as np

import matplotlib.pyplot as plt

#定义x、y散点坐标

x = [10,20,30,40,50,60,70,80]

x = np.array(x)

print('x is :\n',x)

num = [174,236,305,334,349,351,342,323]

y = np.array(num)

print('y is :\n',y)

#用3次多项式拟合

f1 = np.polyfit(x, y, 3)

print('f1 is :\n',f1)

p1 = np.poly1d(f1)

print('p1 is :\n',p1)

#也可使用yvals=np.polyval(f1, x)

yvals = p1(x) #拟合y值

print('yvals is :\n',yvals)

#绘图

plot1 = plt.plot(x, y, 's',label='original values')

plot2 = plt.plot(x, yvals, 'r',label='polyfit values')

plt.xlabel('x')

plt.ylabel('y')

plt.legend(loc=4) #指定legend的位置右下角

plt.title('polyfitting')

2 、第二种方案是给出具体的函数形式(可以是任意的,只要你能写的出来 下面的func就是),用最小二乘的方式去逼近和拟合,求出函数的各项系数,如下:

##使用curve_fit

import numpy as np

import matplotlib.pyplot as plt

from scipy.optimize import curve_fit

#自定义函数 e指数形式

def func(x, a, b,c):

return a*np.sqrt(x)*(b*np.square(x)+c)

#定义x、y散点坐标

x = [20,30,40,50,60,70]

x = np.array(x)

num = [453,482,503,508,498,479]

y = np.array(num)

#非线性最小二乘法拟合

popt, pcov = curve_fit(func, x, y)

#获取popt里面是拟合系数

print(popt)

a = popt[0]

b = popt[1]

c = popt[2]

yvals = func(x,a,b,c) #拟合y值

print('popt:', popt)

print('系数a:', a)

print('系数b:', b)

print('系数c:', c)

print('系数pcov:', pcov)

print('系数yvals:', yvals)

#绘图

plot1 = plt.plot(x, y, 's',label='original values')

plot2 = plt.plot(x, yvals, 'r',label='polyfit values')

plt.xlabel('x')

plt.ylabel('y')

plt.legend(loc=4) #指定legend的位置右下角

plt.title('curve_fit')

3、拟合高斯分布的方法

#encoding=utf-8

import numpy as np

import matplotlib.pyplot as plt

from scipy.optimize import curve_fit

import pandas as pd

#自定义函数 e指数形式

def func(x, a,u, sig):

return a*(np.exp(-(x - u) ** 2 /(2* sig **2))/(math.sqrt(2*math.pi)*sig))*(431+(4750/x))

#定义x、y散点坐标

x = [40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135]

x=np.array(x)

# x = np.array(range(20))

print('x is :\n',x)

num = [536,529,522,516,511,506,502,498,494,490,487,484,481,478,475,472,470,467,465,463]

y = np.array(num)

print('y is :\n',y)

popt, pcov = curve_fit(func, x, y,p0=[3.1,4.2,3.3])

#获取popt里面是拟合系数

a = popt[0]

u = popt[1]

sig = popt[2]

yvals = func(x,a,u,sig) #拟合y值

print(u'系数a:', a)

print(u'系数u:', u)

print(u'系数sig:', sig)

#绘图

plot1 = plt.plot(x, y, 's',label='original values')

plot2 = plt.plot(x, yvals, 'r',label='polyfit values')

plt.xlabel('x')

plt.ylabel('y')

plt.legend(loc=4) #指定legend的位置右下角

plt.title('curve_fit')

————————————————

版权声明:本文为CSDN博主「changdejie」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

python周期函数的拟合_Python可以拟合函数(数学意义)吗?相关推荐

  1. python数据趋势算法_Python数据拟合与广义线性回归算法学习

    机器学习中的预测问题通常分为2类:回归与分类. 简单的说回归就是预测数值,而分类是给数据打上标签归类. 本文讲述如何用Python进行基本的数据拟合,以及如何对拟合结果的误差进行分析. 本例中使用一个 ...

  2. python 方法的实例_python调用自定义函数的实例操作

    在python中,想要调用自定义函数必须先声明,然后才能调用.使用函数时,只要按照函数定义的形式,向函数传递必需的参数,就可以调用函数完成相应的功能或者获得函数返回的处理结果. (1)声明函数 pyt ...

  3. python中非可选参数_python基础教程函数参数

    python里有很多的内置函数给我们的工作带来了很多发便利,在我们实现某些功能或者优化代码的时候,可以自己定义一个函数,同时我们在定义一个类的时候也会用到函数的一些知识去构造一个方法,这里就涉及到一些 ...

  4. python按照绝对值排序_Python高阶函数sorted排序

    sorted用法 sorted是Python提供的功能强大的排序函数.满足字符,数字等排序要求. 对数字进行排序: list = [-12, -2, -24, 20, 39, 10]; print(s ...

  5. python多变量拟合_python多元拟合问题

    貌似关于多元拟合的使用没有太多文章进行讲解. 首先给出数据集:数据集 目标函数: 在python中,我们使用scipy.optimize库中的curve_fit,首先给出其官方文档中一些比较重要的参数 ...

  6. python 直线拟合_python matplotlib拟合直线的实现

    这篇文章主要介绍了python matplotlib拟合直线的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 import numpy ...

  7. python线性拟合_python直线拟合实例

    由于最近在弄stm32控制小车的事情,小车的转速可以通过10ms内采集的编码脉冲数enc表示,控制信号由pwm占空比表示. 要用PID对小车速度进行控制,需要求得pwm-enc之间的增益系数Ka,于是 ...

  8. 用python进行多项式拟合_python多项式拟合

    import numpy as np p=np.poly1d([1,2,3]) //多项式的系数,p为多项式 //多项式可以做加减乘除 print(p+[1,2]) //表示多项式加上一个多项式系数为 ...

  9. python的id方法_python中id()函数的实用研究实例

    python中id()函数的实用研究实例 >>> a = 2.5 >>> b = 2.5 >>> c = b >>> a is ...

最新文章

  1. .Net Discovery 系列之四--深入理解.Net垃圾收集机制(下)
  2. Cissp-【第8章 软件开发安全】-2021-3-15(822页-918页)【完】
  3. mapper命名规范_Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件
  4. 数学建模——TOPSIS综合评价模型Python代码
  5. Python内置模块---random
  6. (转)bash条件判断之if语句
  7. python调用外部程序 退出_Python调用外部程序——os.system()和subprocess.call
  8. Android权威编程指南读书笔记(1-2章)
  9. L2-002 链表去重 (25 point(s))
  10. 为枪击事件默哀,程序员们确实要重视代码规范
  11. 【JAVASCRIPT】使用ztree树,实现右键增加,修改,删除节点。带有复选框。
  12. Linkerd、Consul、Istio、Kuma、Traefik、AWS App服务网格全方位对比
  13. 身份证复印件的正确写法
  14. [eCharts,angularjs]echarts小试-龙虎榜数据显示
  15. seo的日常工作内容
  16. 强化学习蘑菇书Easy RL第一章
  17. formality形式验证里的案件分析
  18. 代码管理工具:Git
  19. 小鸟云独享虚拟主机和共享虚拟主机区别对比
  20. C#DataSet处理数据

热门文章

  1. 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1...
  2. Android单选中listview中的一项
  3. 《javascript语言精髓与编程实践》--原型继承笔记
  4. 实现中文下的UITableView Index
  5. POJ-2226 Muddy Fields 最小点集覆盖
  6. nopcommerce插件深度剖析
  7. UVA11219 How old are you?【日期】
  8. JVM 内存管理、自带性能监测调优工具 (jstack、jstat)及 JVM GC 调优
  9. CMake 添加头文件目录,链接动态、静态库(添加子文件夹)
  10. σ 代数与测度(measures)