x=-4,-3,...,3,4の9点で最小二乗法を用いてフィッティングを行うプログラムを組みました。
xの刻み幅を1だけでなく0.1,0.01の場合もまとめて計算して、それぞれグラフを作成したいのですが、関数を使ってやるやり方がいまいち分かりませんのでご回答いただけると幸いです。
また、得られた関数の係数を表示する方法も教えていただけたら幸いです。
python
1import numpy as np 2import matplotlib.pyplot as plt 3 4a, b, c =1,2,2 5def f(x): 6 return a*x**2+ b*x+c 7 8x = np.arange(-4,5) 9y = f(x) 10noise = np.random.normal(loc=0,scale=3,size=len(x)) 11 12n=3 13X = np.zeros((len(x),n)) 14X[:,0] = 1 15X[:,1] = x 16X[:,2] = x**2 17(param,residuals,rank,s) = np.linalg.lstsq(X,y+noise) 18 19plt.title("least square") 20plt.xlabel("x") 21plt.ylabel("y") 22plt.scatter(x,y+noise,color="blue") 23plt.plot(x,param[0]*X[:,0]+param[1]*X[:,1]+param[2]*X[:,2],color="red")
回答1件
あなたの回答
tips
プレビュー