前兩天做半導(dǎo)體激光泵浦實(shí)驗(yàn)前普,記錄了一些數(shù)據(jù),看起來像是直線壹堰,想用python擬合一下拭卿,翻看了幫助的文檔,寫了一些代碼贱纠,在此由衷希望本科新生早早學(xué)會(huì)一門編程語言峻厚,雖然excel也能勝任,但編程能做到更多谆焊。
主要用的numpy里面的函數(shù)是polyfit惠桃,這個(gè)函數(shù)有三個(gè)參量(x,y,n),x和y是要輸入的數(shù)據(jù),n是要進(jìn)行要擬合的多項(xiàng)式的最高次數(shù)懊渡,比如此次用的就是線性擬合刽射,n=1,其返回值是多項(xiàng)式擬合的系數(shù)剃执,對(duì)于線性擬合就是斜率和截距誓禁,另外要調(diào)用的函數(shù)就是poly1d,擬合出這個(gè)多項(xiàng)式來,用polyfit的返回值作為參數(shù)肾档。
代碼如下
import matplotlib.pyplot as plt
x1=[20,33,51,79,101,121,132,145,162,182,203,219,232,243,256,270,287,310,325]
y1=[49,48,48,48,48,87,106,123,155,191,233,261,278,284,297,307,341,319,341]
x2=[31,52,73,92,101,112,126,140,153,175,186,196,215,230,240,270,288,300]
y2=[48,48,48,48,49,89,162,237,302,378,443,472,522,597,628,661,690,702]
x3=[30,50,70,90,105,114,128,137,147,159,170,180,190,200,210,230,243,259,284,297,311]
y3=[48,48,48,48,66,173,351,472,586,712,804,899,994,1094,1198,1360,1458,1578,1734,1797,1892]
p1=np.poly1d(np.polyfit(x1[5:],y1[5:],1))
p2=np.poly1d(np.polyfit(x2[5:],y2[5:],1))
p3=np.poly1d(np.polyfit(x3[5:],y3[5:],1))
x=np.arange(20,350)
l1=plt.plot(x,p1(x),'r--',label='532nm')
l2=plt.plot(x,p2(x),'g--',label='offKDP')
l3=plt.plot(x,p3(x),'b--',label='offNd:VYO4')
plt.plot(x1,y1,'ro-',x2,y2,'g+-',x3,y3,'b^-')
plt.title('The Lasers in Three Conditions')
plt.xlabel('I/mA')
plt.ylabel('Power/uW')
plt.legend()
plt.show()```

參考自:https://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html