这里的道歉是代码。 我试图将贝塞尔函数拟合到某些2D数据,贝塞尔函数很复杂。但是,当我适应数据时,我总是得到一个数组错误,我无法排序(我是python的新手)。最后,代码理想情况下会给出错误来解释导入数据的分散。
from numpy import *
from pylab import *
from scitools.std import *
import csv
import matplotlib.pyplot as plt
import scipy.special
from scipy.optimize import curve_fit
xdata=np.array([7.6,22.6,47.6,97.6,147.6,200,300,400,500,600,700,800,900,1000,1100,1200,1300])
ydata=np.array([1.19E-05,1.05E-05,1.06E-05,9.92E-06,9.85E-06,9.88E-06,9.45E-06,9.77E-06,9.59E-06,1.09E-05,1.22E-05,1.39E-05,1.78E-05,2.04E-05,2.61E-05,3.17E-05,3.86E-05])
b = 1.63854196884e+39
def func(x,p1,p2):
return p2*(sqrt((scipy.special.jn(1,(1j*sqrt((8*b*p1**3*(x/10000))))))/(1j*sqrt((2*b*p1**3*(x/10000))))))
popt, pcov = curve_fit(func, xdata, ydata,p0=(1.0,0.2))
此代码旨在显示粗略问题,但最后我想要p1和p2的值加上错误。
我得到的错误就是这个,(我知道它基本但我一直搞乱)
TypeError Traceback(最近一次调用最后一次)
错误回溯(最近一次调用最后一次) execfile中的/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/IPython/utils/py3compat.pyc(fname,* where) 173其他: 174 filename = fname - > 175 内置 .execfile(文件名,* where)
/ Users / sean / Cardiff / DTO / paulsen / carley report / crap.py in() 21 22 ---> 23 popt,pcov = curve_fit(func,xdata,ydata,p0 =(1.0,0.2)) 24 25
curve_fit中的/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/scipy/optimize/minpack.pyc(f,xdata,ydata,p0,sigma,absolute_sigma,** KW) 553#从kw中删除full_output,否则我们将其传递两次。
554 return_full = kw.pop('full_output', False)
- > 555 res = leastsq(func,p0,args = args,full_output = 1,** kw) 556(popt,pcov,infodict,errmsg,ier)= res 557
/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/scipy/optimize/minpack.pyc in leastsq(func,x0,args,Dfun,full_output,col_deriv,ftol, xtol,gtol,maxfev,epsfcn,factor,diag) 377 maxfev = 200 *(n + 1) 378 retval = _minpack._lmdif(func,x0,args,full_output,ftol,xtol, - > 379 gtol,maxfev,epsfcn,factor,diag) 380其他: 381如果col_deriv:
非常感谢任何帮助。 干杯