0

我的代码有一点问题:

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))

我想出一个提示,说名称“优化”未定义,但我看不到错误来自哪里?

4

1 回答 1

4

问题是最后一行:(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__'或者只是从您的代码中完全删除该部分。

于 2012-08-28T22:22:51.017 回答