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()

运行结果

python origin python origin交互_数据

  • 拟合公式HIll

python origin python origin交互_数据_02

  • R^2 计算公式
    python origin python origin交互_拟合_03
  • 程序说明

直接使用origin内置函数拟合过程

  • 输入数据

    2,打开分析->拟合->非线性拟合
  • 进入拟合界面 点击函数下拉框(类型 中选择origin自带)
  • 打开下拉框中使用搜索
  • 搜索界面中找到HIll模型
  • 点击模型进行拟合
  • 点击拟合

origin中自定义函数的拟合



与董说

。。。。。。。。。。。。。。没得冷笑话的一周