我希望通过复杂的函数来填充我的数据,例如(aj)^b/(1+(aj)^(2b)
。但是,lesssq不能这样做。所以我试图找到解决这个问题的方法:
import numpy as np
from scipy.optimize import leastsq
import pylab as pl
import xlrd
def func(w,p):
a,s,u=p
d=complex(0,1)
f=u+(s-u)/(1+(d*w)**a)
return f.imag
def residuals(p, y, x):
return y - func(x, p)
p0 = [0.5,20,10]
data=xlrd.open_workbook(r'C:\Users\limin\Desktop\mydata.xlsx')
table=data.sheets()[0]
xdata=table.col_values(0)
ydata_1=table.col_values(1)
plsq = leastsq(residuals, p0, args=(ydata_1, xdata))
print(plsq[0])
当我运行它时,我得到can't multiply sequence by non-int of type 'complex'
我不知道为什么。
真的需要你的帮助!