python应用 曲线拟合04
python应用 曲线拟合04 → 多项式拟合
- 主要是使用 numpy 库中的 polyfit() 函数,见第 66 行, z = np.polyfit(x_proton, y, 3) ,其中待拟合曲线的横纵坐标分别为第 1, 2 个参数,第 3 个参数 3 表示使用 3 次多项式拟合。得到的拟合结果写入返回列表 z,按照幂指数从高到低排序,比如这里 z[0] 代表 x3 前面的系数,z[1] 代表 x2 前面的系数,以此类推。
import xlrd
import xlwt
import numpy as np
import matplotlib.pyplot as plt def pol2(x, a, b, c):
x = np.array(x)
return a + b*x + c*pow(x, 2) def pol3(x, a, b, c, d):
x = np.array(x)
return a + b*x + c*pow(x, 2) + d*pow(x, 3) def pol4(x, a, b, c, d, e):
x = np.array(x)
return a + b*x + c*pow(x, 2) + d*pow(x, 3) + e*pow(x, 4) def pol5(x, a, b, c, d, e, f):
x = np.array(x)
return a + b*x + c*pow(x, 2) + d*pow(x, 3) + e*pow(x, 4) + f*pow(x, 5) def pol6(x, a, b, c, d, e, f, g):
x = np.array(x)
return a + b*x + c*pow(x, 2) + d*pow(x, 3) + e*pow(x, 4) + f*pow(x, 5) +\
g*pow(x, 6) def main():
data_file = xlrd.open_workbook('./data_78As.xlsx')
sheet_proton = data_file.sheet_by_name('proton')
sheet_neutron = data_file.sheet_by_name('neutron') write_excl = xlwt.Workbook(encoding='utf-8')
write_sheet_proton = write_excl.add_sheet('proton')
write_sheet_neutron = write_excl.add_sheet('neutron') x_proton = sheet_proton.col_values(0)
x_proton_add = x_proton[:]
x_proton_add.insert(0, 0.23)
x_proton_add.insert(0, 0.22)
x_proton_add.insert(0, 0.21)
x_proton_add.insert(0, 0.20)
x_proton_add.append(0.36)
x_proton_add.append(0.37)
x_proton_add.append(0.38)
x_proton_add.append(0.39)
x_proton_add.append(0.40) j = 0
for temp in x_proton_add:
write_sheet_proton.write(j, 0, temp)
j = j + 1 for i in range(18):
y = sheet_proton.col_values(i+1)
plt.scatter(x_proton, y)
print(y)
# popt, pcov = curve_fit(pol5, x_proton, y, [1, 1, 1, 1, 1, 1])
# print(popt) z = np.polyfit(x_proton, y, 3) y_fit = pol3(x_proton_add, z[3], z[2], z[1], z[0])
plt.plot(x_proton_add, y_fit, color='green', linewidth=1.0)
plt.show()
j = 0
for temp in y_fit:
print(x_proton_add[j])
if x_proton_add[j] <= 0.23:
write_sheet_proton.write(j, i+1, temp)
j = j + 1
elif x_proton_add[j] > 0.23 and x_proton_add[j] < 0.35:
write_sheet_proton.write(j, i+1, y[j-4])
j = j + 1
else:
write_sheet_proton.write(j, i+1, temp)
j = j + 1 plt.clf()
x_neutron = sheet_neutron.col_values(0)
x_neutron_add = x_neutron[:]
x_neutron_add.insert(0, 0.23)
x_neutron_add.insert(0, 0.22)
x_neutron_add.insert(0, 0.21)
x_neutron_add.insert(0, 0.20)
x_neutron_add.append(0.36)
x_neutron_add.append(0.37)
x_neutron_add.append(0.38)
x_neutron_add.append(0.39)
x_neutron_add.append(0.40) j = 0
for temp in x_neutron_add:
write_sheet_neutron.write(j, 0, temp)
j = j + 1 for i in range(18):
y = sheet_neutron.col_values(i+1)
plt.scatter(x_neutron, y)
print(y)
# popt, pcov = curve_fit(pol5, x_proton, y, [1, 1, 1, 1, 1, 1])
# print(popt) z = np.polyfit(x_neutron, y, 3) y_fit = pol3(x_neutron_add, z[3], z[2], z[1], z[0])
plt.plot(x_neutron_add, y_fit, color='green', linewidth=1.0)
plt.show()
j = 0
for temp in y_fit:
if x_neutron_add[j] <= 0.23:
write_sheet_neutron.write(j, i+1, temp)
j = j + 1
elif x_neutron_add[j] > 0.23 and x_neutron_add[j] < 0.35:
write_sheet_neutron.write(j, i+1, y[j-4])
j = j + 1
else:
write_sheet_neutron.write(j, i+1, temp)
j = j + 1 write_excl.save("result_78As.xls") if __name__ == '__main__':
main()
得到结果:

python应用 曲线拟合04的更多相关文章
- Python web前端 04 盒子模型
Python web前端 04 盒子模型 盒子模型是由内容(content).内边距(padding).外边距(margin).边框(border)组成的 一.边框 border #border 边框 ...
- Python并发编程04 /多线程、生产消费者模型、线程进程对比、线程的方法、线程join、守护线程、线程互斥锁
Python并发编程04 /多线程.生产消费者模型.线程进程对比.线程的方法.线程join.守护线程.线程互斥锁 目录 Python并发编程04 /多线程.生产消费者模型.线程进程对比.线程的方法.线 ...
- Python网络编程04 /recv工作原理、展示收发问题、粘包现象
Python网络编程04 /recv工作原理.展示收发问题.粘包现象 目录 Python网络编程04 /recv工作原理.展示收发问题.粘包现象 1. recv工作原理 2. 展示收发问题示例 发多次 ...
- Configuring Ubuntu for deep learning with Python in Ubuntu16.04
博主最近浏览到一个网站PyImageSearch,看到里面的项目还不错,就顺手配置一下环境,试着去跑下里面的模型. 首先,需要配置好需要运行模型的环境,其实主要的步骤分为以下三步: 1. 安装Ubun ...
- 【Python】torrentParser1.04 增加获得磁力链URI功能
代码: #------------------------------------------------------------------------------------ # torrentP ...
- chrome headless+selenium+python+(ubuntu 16.04/centos7) 下的实现
Ubuntu 16.04 下: 0x01 安装chrome 1 下载源加入系统源列表 sudo wget http://www.linuxidc.com/files/repo/google-chrom ...
- Python标准库04 文件管理 (部分os包,shutil包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在操作系统下,用户可以通过操作系统的命令来管理文件,参考linux文件管理相关命令 ...
- Python快速学习04:循环 & 函数
前言 系列文章:[传送门] 也就今天认识了 LC ,很开心. 本文目录 循环 for while 中断 函数 函数定义 函数调用 for循环 Python 中的for 循环象shell 脚本里的for ...
- python数据分析---第04章 NumPy基础:数组和矢量计算
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...
随机推荐
- [深度学习] Pytorch学习(二)—— torch.nn 实践:训练分类器(含多GPU训练CPU加载预测的使用方法)
Learn From: Pytroch 官方Tutorials Pytorch 官方文档 环境:python3.6 CUDA10 pytorch1.3 vscode+jupyter扩展 #%% #%% ...
- Aspnet Zero中使用Windows service (Topshelf)来承载Quartz.net任务
Aspnet Zero使用Windows service (Topshelf)来承载Quartz.net任务 网上有很多关于如何使用Topshelf创建ABP的Quartz windows服务,但很少 ...
- Linux 实现密钥免密登录
Linux 实现密钥免密登录 环境:CentOS 7 一. 创建密钥 登录Linux,进入/root/.ssh/目录下 执行ssh-keygen -t rsa创建密钥一直回车即可,因为是免密所以直接回 ...
- asp.net core mvc和angular项目的一些问题
最近公司布置任务,用asp.net core mvc和angular改写原来的一个用Silverlight做的项目.从来没搞过,找了两本书看了一天,又看了一天代码,大致心里有底了,就开始动手.没想到一 ...
- SpringMVC+Spring+mybatis+maven+搭建多模块框架前后端分离开发框架的完整demo,拿走不谢。——猿实战02
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
- linux驱动之内核多线程(一)
本文摘自http://www.cnblogs.com/zhuyp1015/archive/2012/06/11/2545624.html Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进 ...
- 6.ssh免密码登录原理图
ssh免密码登录原理图
- 第一篇Scrum冲刺博客
目录 一.Alpha 阶段认领的任务 二.明日成员的任务安排 三.整个项目预期的任务量 四.敏捷开发前的感想 五.团队期望 一.Alpha 阶段认领的任务 陈起廷 任务 预计时间 日记天气.心情选择 ...
- Deep and Beautiful. The Reward Prediction Error Hypothesis of Dopamine
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Contents: Abstract 1. Introduction 2. Reward-Prediction Error Meets D ...
- ACM集训第一次积分赛赛前复习+day4
不知不觉4天过去了,我们迎来了我们第一次积分赛,赛前的四天我们学了以下知识点吧: day 1.排序 之前一直想用qsort,但是总是写不明白,STL的sort()可以说是很方便了. 先写一个最基础的数 ...