http://d.hatena.ne.jp/aidiary/20100327/1269657354
http://d.hatena.ne.jp/aidiary/20100404/1270359720
を見ながらフィッティングのお勉強。
まずはサンプルデータの生成
#usr/bin/env python #-*- coding: utf-8 -*- import numpy as np from pylab import * #サンプルデータの数 N=10 #区間(0,1)をN個に分割 t = linspace(0,1,N) #正弦波 周期t=1 wav = sin(2*np.pi*t) # y = sin(2*pi/T*t) #正規分布に従う誤差を生成 err = np.random.normal(0,0.2,N) #平均0, 標準偏差0.2のガウス分布からN点抽出 wav = wav + err plot(t,wav,'go') x = linspace(0,1,5000) sin = sin(2*np.pi*x) plot(x,sin,'b-') show()
次に多項式の生成。
#coding: utf-8 import numpy as np from pylab import * M = 3 #多項式の次数 def y(x,wlist): poly = wlist[0] #初項だけ入れとく print poly for n in range(1,M+1): poly += wlist[n] * pow(x,n) print poly return poly x=1 wlist=(1,2,3,4) ans = y(x,wlist) print ans