这里抱歉是代码 . 我试图将贝塞尔函数拟合到某些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(最近一次调用最后一次)

TypeError:数组无法安全地转换为所需类型

错误回溯(最近一次调用最后一次)/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/IPython/utils/py3compat.pyc in execfile(fname,* where)173 else:174 filename = fname - > 175 builtin .execfile(filename,* 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

/Library/Frameworks/EPD64.framework/Versions/7.1/lib/python2.7/site-packages/scipy/optimize/minpack.pyc in curve_fit(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 else:381如果col_deriv:

任何帮助是极大的赞赏 . 干杯