#最小二乘法

import numpy as np

#numpy是一个基于python的基础的科学计算包,在本代码中我们会用它来实现方差和标准偏差的计算

from decimal import * #Python提供了decimal模块用于十进制数学计算,它具有以下特点:

#提供十进制数据类型,并且存储为十进制数序列;

#有界精度:用于存储数字的位数是固定的,可以通过decimal.getcontext().prec=x

来设定,不同的数字可以有不同的精度

#浮点:十进制小数点的位置不固定(但位数是固定的)

from scipy.optimize import

leastsq#从scipy的包里提取leastsq函数

#import matplotlib.pyplot as

plt#从matplotlib的包里提取绘图的函数

###采样点(Xi,Yi)###

data=np.loadtxt('5198.flux')#导入文件

data0=np.loadtxt('hat25.model.e.m.flux')#导入文件

X=data[:,0]#观测数据的时间

Y=data[:,1]#观测时间的归一流量

Y0=data0[:,1]#计算的归一流量

Y1=Y-Y0#残差

###需要拟合的函数func及误差error###

def func(p,x):

k,b=p

return k*x+b

def error(p,x,y,s):

print(s)

return func(p,x)-y

#x、y都是列表,故返回值也是个列表

#TEST

p0=[0,0]

#print( error(p0,X,Y1) )

###主函数从此开始###

s="Test the number of iteration"

#试验最小二乘法函数leastsq得调用几次error函数才能找到使得均方误差之和最小的k、b

Para=leastsq(error,p0,args=(X,Y1,s))

#把error函数中除了p以外的参数打包到args中

k,b=Para[0]#leastsq会返回两个数 一个是Para[0]

另一个是Para[1],Para[0],内含需要拟合的参数,而Para[1]一般为1,具体的含义暂时不清楚

print('b=',Decimal(b),"k=",k,"PARA[1]=",Para[1])#输出拟合的参数b和k,其中b保留了28位小数点,具体的保留原因请参见Decimal的函数说明

print('Y1=',k,'*X+',Decimal(b))#输出拟合得到的公式

Y2=k*X+b#创建光变曲线中隐含的斜率直线

Y3=Y-Y2#从观测得到的光变曲线中减去含斜率的直线

data[:,1]=Y3#将修正后的数据输入data中

###绘图,看拟合效果###

import matplotlib.pyplot as

plt

import numpy as np

fig1 = plt.figure('fig1')

plt.scatter(X,Y1,color="red",label="Sample Point",linewidth=3)

#画残差点

y=k*X+b

Y4=Y1-Y

var=np.var(Y4)

print('VAR=',var)#输出方差

plt.plot(X,y,color="orange",label="Fitting Line",linewidth=2)

#画拟合直线

plt.legend()

plt.show()

fig2 = plt.figure('fig2')

plt.scatter(X,Y3,color="red",label="Sample

Point",linewidth=3)#画修正后的线

plt.plot(X,Y0,color="k",label="Sample

Point",linewidth=3)#画计算的曲线

plt.legend()

plt.show()

np.savetxt("result.txt",data,fmt="

.10f")

#逐步计算标准误差

import math

import numpy as np

from decimal import *

add=[]#创建空的数组

#data=np.loadtxt('5198.flux')#导入文件

data0=np.loadtxt('hat25.model.e.m.flux')#导入文件

print("逐步计算标准误差")

for i in range(0, 300 + 1):

if

np.all(data0[i,1]==data0[i+1,1]):

add.append(data[i,1]);通过append函数,每循环一次就会向add数组的末尾增加一个数

a=np.std(add);#求add的标准差

print(' .10f' % a)#输出格式的控制, .10f

就是一共可以有20位数字,小数点之后保留10位小数。

python画图代码的输入数据可以取出来_用Python写了个小程序:最小二乘法、读取文件、作图以及数据输出到文件...相关推荐

  1. python画图代码的输入数据可以取出来_python 导入数据及作图的实现

    我们经常需要导入数据,按列提取 XY作图 方法一. filename='/home/res/user/csluo/test.txt' #将文件名赋值为变量 X,Y,Z=[ ],[ ],[ ] #给三个 ...

  2. 简单的python画图代码_python opencv如何实现简易画图板 python opencv实现简易画图板代码...

    python opencv如何实现简易画图板?本篇文章小编给大家分享一下python opencv实现简易画图板代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 代码如下 ...

  3. python保存代码需要删除头部信息吗_用python删除java文件头上版权信息的方法

    在使用他人代码时,为不保留文件头部版权信息,需要一个个删掉,费时费力, 写了个脚本,简单清除掉目录下所有的文件的头部版权信息.# -*- coding: utf8 -*- ''''' 删除java文件 ...

  4. python爱心代码_母亲节快到了,用Python给老妈写个祝福小程序吧~

    导 语 看到好多人留言问我咋好久没更新文章了,于是看了下上篇文章的发布日期,好吧确实挺久的,是该上线更一波文章了.想到母亲节快到了,不如就用Python给老妈写个祝福小程序吧~让我们愉快地开始吧~ 相 ...

  5. python socket能做什么_用python写一个聊天小程序!和女朋友的专属聊天工具!

    原标题:用python写一个聊天小程序!和女朋友的专属聊天工具! 1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可 ...

  6. python用程序说爱你_用python写一个聊天小程序!和女朋友的专属聊天工具!

    1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可以发送封装的IP数据包的方法. Internet的传输层有两个协议 ...

  7. 用python写一个聊天小程序!和女朋友的专属聊天工具!

    1.UDP简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP).UDP为应用程序提供了无需建立就可以发送封装的IP数据包的方法. PS:如有需要Python学习资料 ...

  8. python日历小程序_python写的日历小程序

    查看: 14785|回复: 262 [作品展示] python写的日历小程序 电梯直达 发表于 2013-8-19 21:38:32 | 只看该作者 |倒序浏览 |阅读模式 马上注册,结交更多好友,享 ...

  9. python纯函数_理想国真恵玩Python从入门到精通第006天_纯函数写游戏管理系统

    原标题:理想国真恵玩Python从入门到精通第006天_纯函数写游戏管理系统 前面已经带大家学习了函数,高级数据类型,比如说字典,今天带大家用函数加字典做一个游戏管理系统,希望大家喜欢.废话不多说,直 ...

最新文章

  1. 陶哲轩实分析定理17.3.8(三)
  2. java怎么将加载图片消除_Java中加载图片的方法
  3. python split()方法_秘籍:10个Python字符串处理技巧(附代码)
  4. hdu4609 3-idiots
  5. Android 日志自动分析,Android Log Viewer:一个日志查看器工具,可简化实时对Android日志的分析...
  6. Docker发布镜像至Docker Hub
  7. 一个麻省理工学院毕业生对中国教育的反思 转
  8. PHP 数字缩短(最多1倍)与还原
  9. 山东新动能软件创新·创业大赛 首场宣讲答疑会顺利举行
  10. 计算机键盘的中心键,电脑键盘上各键的功能及作用
  11. 常用软件的替代软件 (免费和自由软件)
  12. 当cmd里安装不了Appium-Python-Client时,Requirement already satisfied: Appium-Python-Client in
  13. 微信图片去除马赛克_微信怎么把图片加上马赛克_微信如何将照片打码的方法介绍_3DM手游...
  14. Android Junit 单元测试 Method wrap in org.json.JSONObject not mocked
  15. 绘制二次贝塞尔曲线的几种方式
  16. 齿轮-转子-轴承系统动力学matlab程序代码
  17. 计算机专业除了当码农,还有什么好的就业方向?
  18. shopee数据分析:虾皮卖家如何正确分析shopee卖场数据?
  19. 【融职培训】Web前端学习 第7章 Vue基础教程4 组件传值
  20. mysql与mysqld

热门文章

  1. VS2010下测试程序性能瓶颈
  2. HDUOJ --2523
  3. slf4j 与log4j 日志管理
  4. 关于无人职守创建office文档的问题
  5. 浏览器 JavaScript HTTP 库的大比拼:SugerAgent VS Axios
  6. Nginx实现HTTP反向代理配置
  7. Kubernetes 为 Namespace 配置CPU和内存配额
  8. Hadoop教程(三)HDFS文件系统Shell命令
  9. 使用Python快速压缩目录中图片
  10. 怎么让前端项目运行起来_如何立即使您的前端项目看起来更好