origin使用python进行方程拟合–案例
1.1 软件版本要求
- origin2020a以上
- python 3.8以上
1.2 说明
- 本文主要是为方便实验室数据拟合。由于origin在实验的使用率远高于python等编程语言,因此通过本文给出在origin中使用python脚本完成一个简单函数的拟合。
- 案例中拟合的方程为HILL
1.3 优势
- 基于常用软件就可以运行,不用重新配制环境,上手简单快捷。
- 可以直接在origin本身的表格中进行扩增。
- 复杂传参过程需要借助程序设计
2. 使用过程
2.1 origin中打开python
- 界面中打开 连接
- 然后打开 untitled.py
- - 新建脚本,并将相关代码粘贴
- 在下方命令窗口处输入相关python包
本案例需要加载包
pip install numpy
pip install scipy
-安装完成后 重新启动origin才能运行
运行脚本 F5
# 最小二乘拟合实例
import numpy as np
from scipy.optimize import leastsq
def func( x, p,c):
"""
数据拟合所用的函数: A*cos(2*pi*k*x + theta)
"""
n, k = p
return c[1]+(c[0]-c[1])* (x ** n / (k ** n + x ** n))
def residuals(p, y, x,c):
"""
实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数
"""
return y - func(x, p,c)
xp = np.genfromtxt('C:/Users/Administrator/Desktop/1.txt')
#print(xp) # 返回list
# x = np.lipase(0, 20)
n, k = 50, 3 # 真实数据的函数参数
x = xp[:, 0]
y = xp[:, 1]
c=[max(y),min(y)]
# y0 = func(x, [n, k],c) # 真实数据
y1 = y
p0 = [1,50] # 第一次猜测的函数拟合参数 n,k
## 调用leastsq进行数据拟合
## residuals为计算误差的函数
## p0为拟合参数的初始值
## args为需要拟合的实验数据
plsq = leastsq(residuals, p0, args=(y,x,c))
#
y2=func(x,plsq[0],c)
# print (u"真实参数:", [A, k, theta] )
print(u"拟合参数", plsq[0]) # 实验数据拟合后的参数
RSS=np.dot(np.transpose(y1 - y2),(y1-y2))
R2=1-RSS/(np.var(y1)*(len(y1)-1))
print("MSE:",RSS)
print("R2:", R2)
#sklearn求解的MSE值
#
# pl.plot(x, y, color='r',label=u"真实数据")
# pl.plot(x, y1, color='b',label=u"带噪声的实验数据")
# pl.plot(x, func(x, plsq[0]), color='g', label=u"拟合数据")
# pl.legend()
# pl.show()
运行结果
- 拟合公式HIll
- R^2 计算公式
- 程序说明
直接使用origin内置函数拟合过程
- 输入数据
2,打开分析->拟合->非线性拟合 - 进入拟合界面 点击函数下拉框(类型 中选择origin自带)
- 打开下拉框中使用搜索
- 搜索界面中找到HIll模型
- 点击模型进行拟合
- 点击拟合
origin中自定义函数的拟合
与董说
。。。。。。。。。。。。。。没得冷笑话的一周