以前都是用origin来进行拟合,但是参数初值需要猜测,有时候不一定能够得到正确结果。后来用过MATLAB的工具箱,可以拟合,但电脑要安装MATLAB还是占挺大空间的。花了一下午了解了一下用Python来拟合已有的函数,感觉还不错,分享出来给大家。初学Python,大神们多多包涵。

# -*- coding: utf-8 -*-

"""

Created on Tue Nov 24 14:50:56 2020

@author: fan

"""

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from scipy.optimize import curve_fit

df1 = pd.read_excel('F:/langmuir.xls',header=None,usecols="A") #导入数据,A列为x轴备用

df2 = pd.read_excel('F:/langmuir.xls',header=None,usecols="B") #导入数据,B列为y轴备用

Ce0 = np.array(df1) #dataframe转数组,此时为单列数组,需要转置为单行

Ce = Ce0[:,0]  #转置

print(Ce)

qe0 = np.array(df2) #dataframe转数组,此时为单列数组,需要转置为单行

qe = qe0[:,0] #转置

print(qe)

# 这里的函数可以自定义任意形式。

def func(Ce, qm, Ka):

return qm*Ka*Ce/(1+Ka*Ce)

# popt返回的是给定模型的最优参数。我们可以使用pcov的值检测拟合的质量,其对角线元素值代表着每个参数的方差。

param_bounds=([0,0],[np.inf,np.inf]) #参数上下限,第一个方括号为所有参数下限,第二个为所有参数上限

popt, pcov = curve_fit(func, Ce, qe, bounds=param_bounds) #拟合函数

qm = popt[0]

Ka = popt[1]

qe_pre = func(Ce,qm,Ka) #拟合y值

plot1 = plt.plot(Ce, qe, 's',label='original values')

plot2 = plt.plot(Ce, qe_pre, 'r',label='polyfit values')

plt.xlabel('Ce')

plt.ylabel('qe')

plt.legend(loc=4) #右下角画图例

SSE = ((qe_pre-qe)**2).sum()

chi_square = ((qe-qe_pre)**2/qe_pre).sum()

#计算R平方

from sklearn.metrics import r2_score

r2 = r2_score(qe, qe_pre)

print('qm=',qm)

print('Ka=',Ka)

print('拟合R方为:',r2)

print('SSE =',SSE)

print('chi_square =',chi_square)

python拟合非线性模型_初学Python拟合Langmuir非线性方程相关推荐

  1. python的难点_初学python的操作难点总结(新手必看篇)

    如下所示: 1 在cmd下 盘与盘之间的切换 直接 D或d: 就好 2 查找当前盘或者文件下面的目录 直接 dir 3 想在一个盘下进去一个文件夹,用cd空格目标文件 cd p 4 写文件的第一个字母 ...

  2. python xpath循环_初学Python,就用它爬取一点情话说给她听!

    老铁们,一年一度的520就要来了,大家有没有正在抓耳挠腮的给女朋友准备礼物呢? 作为一个业余非专业程序猿(ps:自称程序猿,哈哈),最近初学python,用它来抓取情话网站的100页情话,作为给女朋友 ...

  3. python return用法_初学Python要了解什么 装饰器知识汇总有哪些

    初学Python要了解什么?装饰器知识汇总有哪些?在Python学习过程中,有多种方法对函数和类进行加工,相对于其它方式,装饰器语法简单,代码可读性高.因此,装饰器在Python项目中有广泛的应用,比 ...

  4. python换发型_初学Python的一些细节

    一.python的数据类型 1.python的基本数据类型包括数值数据类型和字符串数据类型:基本数据类型的特点是不允许改变,如果改变基本数据类型的值,会导致内存的重新分配. int 整形 二进制 a ...

  5. 儿童学python第一课_初学Python(第一课)

    今天整理一下关于Python初学者的基础知识部分的第一课,因为之前学习过C,所以过于基础的知识就不详细记录了. Python相对于C\C++来说,在语法方面已经很简单了:甚至对于JavaScript也 ...

  6. 学好python的技巧_初学Python搞不懂基础怎么学得好?掌握这9个技巧你也可以做大神...

    整理字符串输入 整理用户输入的问题在编程过程中极为常见.通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作.但是如果问题很复杂,可能有更好的方法来解决: ...

  7. python函数笔记_初学Python函数的笔记整理

    定义 返回单值 def my_abs(x): if x >= 0: return x else: return -x 返回多值 返回多值就是返回一个tuple import math def m ...

  8. 学python哪个app比较好_初学python编程,有哪些不错的软件值得一用?

    初学python编程,有哪些不错的软件值得一用? 萧楚故人 发表于 2020-7-17 00:17:55 只看该作者 只看大图 倒序浏览 阅读模式 10 19832 下载好向圈APP可以快速联系圈友 ...

  9. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

最新文章

  1. How to Convert Array to ArrayList in Java?
  2. 在Fabric ChainCode中导入第三方包(以状态机为例)
  3. PostgreSQL ODBC问题与探索SQLSpecialColumns
  4. opencv图像和二维数组相互转换
  5. python界面颜色-给Python点颜色——青少年学编程
  6. java中math方法语句,下列有关Java中标准类Math的random()方法的说法中,正确的是。 - 上学吧学历考试...
  7. iQOO Neo 855竞速版来了:今年最后一款骁龙855 Plus手机
  8. c#设计的简单登录界面
  9. 借助离散数学解决“哈弗大学智商测试”一题 --编程算法
  10. LayaAir UI 组件 # RadioGroup 单选框按钮组
  11. python安装包的路径
  12. excel从只有省市县的地址中分别提取省、市、县
  13. 2008年IT行业10大热门职业调查结果出炉
  14. xposed android 4.4.2,xposed新版54
  15. 【风马一族_php】
  16. 简易五子棋程序(C语言实现)
  17. openstack上传镜像
  18. 浏览器兼容问题,一直是自己最头疼,一直回避的问题,今天看得到了一些启发,发奋今天开始研究这个,哈哈,以下为转载文章,好好学习。...
  19. SQL SERVER【非域环境】镜像之搭建篇
  20. python 自动化测试面试题及答案_自动化测试面试题及答案大全(1)

热门文章

  1. 常见工具测试(双肩包,椅子,电梯)
  2. 软件方法(下)分析和设计第8章分析 之 分析类图——知识篇Part02(202204更新)
  3. K8S入门练习,最简单搭建k8s,适合初学,无需连google
  4. HUE ozzie Cannot run program error=2, No such file or directory
  5. 华为凌霄子母路由 Q6参数 华为凌霄子母路由 Q6怎么样
  6. Unity 能量罩效果shader
  7. 微信小程序开发(十)小程序支付-查询退款
  8. 怎么恢复本地磁盘里的数据?电脑本地磁盘数据恢复7种方案
  9. 016-类与对象-OC笔记
  10. r75800h核显相当于什么显卡