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

name 'optimize' is not defined というプロンプトが表示されますが、エラーの原因がわかりません。

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 に答える