Python最小二乘法

  • 本文关键字:小二 Python python
  • 更新时间 :
  • 英文 :


我的代码有一个小问题:

def pval(x, p, i):
return sum(p[0]*(cos(i*x)) for i in range(1, p[1] + 1))
if __name__ == '__main__':
   main()
x, y = loadtxt("Data.txt" , unpack=True)
errfunc = lambda p, x, y: pval(p, x, i) - y # Distance to the target function
p0 = [49, 100] # Initial guess for the parameters
p1, success = optimize.leastsq(errfunc, p0[:], args=(x, y))

我出现了一个提示,说没有定义名称"optimize",但我不知道错误是从哪里来的?

问题是最后一行:p1, success = optimize.leastsq(...)(错误消息回溯指出)。

Python不知道optimize这个名字是什么意思。你必须告诉它:from scipy import optimize在你的程序顶部附近。


您还调用了一个不存在的main()函数(至少在您的代码段中)。通常情况下,您的代码结构更像这样:

def pval(x, p, i):
    return sum(p[0]*(cos(i*x)) for i in range(1, p[1] + 1))
def main():
    x, y = loadtxt("Data.txt" , unpack=True)
    errfunc = lambda p, x, y: pval(p, x, i) - y # Distance to the target function
    p0 = [49, 100] # Initial guess for the parameters
    p1, success = optimize.leastsq(errfunc, p0[:], args=(x, y))
    # do whatever with p1
if __name__ == '__main__':
   main()

或者从代码中完全去掉if __name__ == '__main__'部分。

最新更新