- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个定义的 numpy 数组 fx 和 fy,我想用一个简单的代码使用 scipy.optimize.curve_fitting 将指数曲线拟合到数据集,其中 a 和 t 作为拟合参数。
import numpy as np
import pylab as plt
import scipy.optimize as op
k=1.38e-23
h=6.63e-34
c=3e8
fx=np.array([ 552.715, 553.21 , 553.705, 554.2 , 554.695, 555.19 ,
555.685, 556.18 , 556.675, 557.17 , 557.665, 558.16 ,
558.655, 559.15 , 559.645, 560.14 , 560.635, 561.13 ,
561.625, 562.12 , 562.615, 563.11 , 563.605, 564.1 ,
564.595, 565.09 , 565.585, 566.08 , 566.575, 567.07 ,
567.565, 568.06 , 568.555, 569.05 , 569.545, 570.04 ,
570.535, 571.03 , 571.525, 572.02 , 572.515, 573.01 ,
573.505, 574. , 574.495, 574.99 , 575.485, 575.98 ,
576.475, 576.97 , 577.465, 577.96 , 578.455, 578.95 ,
579.445, 579.94 , 580.435, 580.93 , 581.425, 581.92 ,
582.415, 582.91 , 583.405, 583.9 , 584.395, 584.89 ,
585.385, 585.88 , 586.375, 586.87 , 587.365, 587.86 ,
588.355, 588.85 , 589.345, 589.84 , 590.335, 590.83 ,
591.325, 591.82 , 592.315, 592.81 , 593.305, 593.8 ,
594.295, 594.79 , 595.285, 595.78 , 596.275, 596.77 ,
597.265, 597.76 , 598.255, 598.75 , 599.245, 599.74 ,
600.235, 600.73 , 601.225, 601.72 , 602.215, 602.71 ,
603.205, 603.7 , 604.195, 604.69 , 605.185, 605.68 ,
606.175, 606.67 , 607.165, 607.66 , 608.155, 608.65 ,
609.145, 609.64 , 610.135, 610.63 , 611.125, 611.62 ,
612.115, 612.61 , 613.105, 613.6 , 614.095, 614.59 ,
615.085, 615.58 , 616.075, 616.57 , 617.065, 617.56 ,
618.055, 618.55 , 619.045, 619.54 , 620.035, 620.53 ,
621.025, 621.52 , 622.015, 622.51 , 623.005, 623.5 ,
623.995, 624.49 , 624.985, 625.48 , 625.975])
fy=np.array([ 1.00594059e+01, 1.09504950e+01, 1.18712871e+01,
1.30198020e+01, 1.39504950e+01, 1.50990099e+01,
1.70792079e+01, 1.88118812e+01, 2.09306931e+01,
2.28712871e+01, 2.52772277e+01, 2.78118812e+01,
3.05742574e+01, 3.37227723e+01, 3.65841584e+01,
4.01584158e+01, 4.36732673e+01, 4.74653465e+01,
5.15940594e+01, 5.58613861e+01, 6.06435644e+01,
6.50990099e+01, 7.01881188e+01, 7.54554455e+01,
8.09801980e+01, 8.70198020e+01, 9.32079208e+01,
9.99603960e+01, 1.06990099e+02, 1.14306931e+02,
1.22148515e+02, 1.30485149e+02, 1.39049505e+02,
1.48158416e+02, 1.57960396e+02, 1.68198020e+02,
1.79326733e+02, 1.91000000e+02, 2.03138614e+02,
2.16356436e+02, 2.30168317e+02, 2.44356436e+02,
2.59603960e+02, 2.75643564e+02, 2.92425743e+02,
3.10000000e+02, 3.28594059e+02, 3.48267327e+02,
3.69227723e+02, 3.91257426e+02, 4.14742574e+02,
4.39752475e+02, 4.66069307e+02, 4.93603960e+02,
5.23871287e+02, 5.55257426e+02, 5.89168317e+02,
6.24910891e+02, 6.63168317e+02, 7.04009901e+02,
7.47643564e+02, 7.93504950e+02, 8.42445545e+02,
8.95079208e+02, 9.50564356e+02, 1.00921782e+03,
1.07177228e+03, 1.13699010e+03, 1.20611881e+03,
1.27934653e+03, 1.35602970e+03, 1.43814851e+03,
1.52452475e+03, 1.61438614e+03, 1.71103960e+03,
1.81260396e+03, 1.91811881e+03, 2.03032673e+03,
2.14822772e+03, 2.27108911e+03, 2.40198020e+03,
2.53915842e+03, 2.68294059e+03, 2.83670297e+03,
2.99874257e+03, 3.16921782e+03, 3.35154455e+03,
3.54392079e+03, 3.74728713e+03, 3.96532673e+03,
4.19456436e+03, 4.43693069e+03, 4.69555446e+03,
4.96582178e+03, 5.24895050e+03, 5.55423762e+03,
5.87050495e+03, 6.20618812e+03, 6.56147525e+03,
6.93150495e+03, 7.31978218e+03, 7.72735644e+03,
8.15521782e+03, 8.60201980e+03, 9.06632673e+03,
9.54961386e+03, 1.00612376e+04, 1.06043069e+04,
1.11605941e+04, 1.17525149e+04, 1.23515941e+04,
1.29770891e+04, 1.36441485e+04, 1.43482376e+04,
1.50911386e+04, 1.58885248e+04, 1.67236436e+04,
1.76022871e+04, 1.85360297e+04, 1.95256139e+04,
2.05648416e+04, 2.16838515e+04, 2.28497129e+04,
2.40916634e+04, 2.54179307e+04, 2.68289109e+04,
2.83307129e+04, 2.99250693e+04, 3.16013168e+04,
3.34018218e+04, 3.53154455e+04, 3.73571584e+04,
3.94992673e+04, 4.17868713e+04, 4.41894950e+04,
4.67588416e+04, 4.94524257e+04, 5.22460198e+04,
5.52046634e+04, 5.83112178e+04, 6.15341584e+04,
6.49220693e+04, 6.84331089e+04, 7.20734356e+04,
7.58653465e+04, 7.97503465e+04, 8.37502178e+04,
8.79790000e+04, 9.23597030e+04])
def func(fx,a,t):
return a*np.exp(-h*c/(fx*1e-9*kb/t))
norm_x=fx.min() #normalizing to avoid infinitely big values
norm_y=fy.max()
fx2=fx-norm_x+1
fy2=fy/norm_y
popt,pcov=op.curve_fit(func,fx2,fy2,p0=(1,1),maxfev=6000)
plt.plot(fx,fy)
plt.plot(fx,norm_y*func(fx2, *popt),'o')
plt.show()
但是,我得到的结果如下:
最佳答案
你可能陷入了一个数值误差问题,因为曲线拟合算法中计算误差的函数是取大值的差值。
您可以像这样规范化您的数据:
norm_x = fx.min()
norm_y = fy.max()
fx2 = fx - norm_x + 1
fy2 = fy/norm_y
popt, pcov = op.curve_fit(func, fx2, fy2, p0=(1,1,1), maxfev=6000)
plt.plot(fx, fy, 'x', label='data')
plt.plot(fx, norm_y*func(fx2, *popt), 'o', mfc='none', label='curve-fit')
plt.legend(loc='upper left')
这会给你:
关于Python Scipy 指数曲线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24801002/
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!