如何使用scipy-leastsq适合复杂的功能?

时间:2017-09-24 16:20:27

标签: python optimization scipy complex-numbers least-squares

我希望通过复杂的函数来填充我的数据,例如(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' 我不知道为什么。 真的需要你的帮助!

0 个答案:

没有答案