我的代码有点问题:
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))
我想出一个提示,说'name'这个名字没有定义,但是我没看到错误的来源?
答案 0 :(得分: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__'
部分。