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,一个具 ...
随机推荐
- 定宽整形(C++11起)
定义于头文件 cstdint中int8_t.int16_t.int32_t.int64_t 分别为宽度恰为 8 . 16 . 32 和 64 位的有符号整数类型无填充位并对负值使用补码(仅若实现支持该 ...
- 使用 .NET Core 3.x 构建 RESTFUL Api (续)
关于Entity Model vs 面向外部的Model Entity Framework Core 使用 Entity Model 用来表示数据库里面的记录. 面向外部的Model 则表示要传输的东 ...
- 面试中的老大难-mysql事务和锁,一次性讲清楚!
众所周知,事务和锁是mysql中非常重要功能,同时也是面试的重点和难点.本文会详细介绍事务和锁的相关概念及其实现原理,相信大家看完之后,一定会对事务和锁有更加深入的理解. 本文主要内容是根据掘金小册& ...
- action中return returnSuccess()
1.action中return returnSuccess() 作用是什么?
- 校内测试:T1秋末的落叶(命题人gxl)官方题解
秋末的落叶 题解 传送门:https://www.luogu.com.cn/problem/U121886 Part 1:疏通题意 首先,我们从题意和样例解释中很容易提取到以下信息: \(1.\)本题 ...
- OAuth2.0分布式系统环境搭建
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 介绍 OAuth(开放授权)是一 ...
- Macbook pro 下修改MySQL数据库密码
步骤: 1. 打开终端 Terminal, 找到Mysql 的安装路径,一般默认安装路径为:/usr/local/mysql-5.7.12-osx10.11-x86_64/bin [注:我安装的Mys ...
- Jmeter 常用函数(26)- 详解 __chooseRandom
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 从指定的范围里面取值 语法格式 ${_ ...
- springboot 新建的时候 pom 第一行出现红叉,项目可以正常运行
原因 : maven的插件版本的问题,造成与IDE的不兼容 解决办法 :在pom中加上 <maven-jar-plugin.version>3.1.1</maven-jar-plug ...
- 团队作业3:需求改进&系统设计(歪瑞古德小队)
目录 一.需求&原型改进 1.1 用户需求调查 1.2 选题需求改进 1.3 功能分析的四个象限 1.4 完善需求规格说明书 1.5 任务分解WBS调整 1.6 项目进度计划调整 二.后端架构 ...