2015-06-24 47 views
0

請原諒我,但在Python(以及所有計算機語言)方面,我是一個完全新手。Python - 如何使用計算係數

有很多的幫助,我寫了一個簡單的程序,我試圖建立。經過幾個步驟後,我不確定是否與我的問題相關,我的腳本創建一個繪圖,然後應用二階多項式擬合,產生拋物線形狀。運行腳本後,Python會打印polyfit中的三個係數。

這是我的問題 - 我怎樣才能使用這些係數,而不必手動輸入它們?我需要建立在我的腳本上,並添加三個將使用這些係數的方程(稱爲A,B和C)。

例如,第一等式是:Sigma11 = A/(l*S12)^2

我想能夠將第一系數分配給一個變量A,然後以上公式中使用它,但無需將其鍵入

感謝您提供任何幫助。

下面是相關代碼:

kk,ss = QS.ScanX(Kmin, Kmax, Npoint, Sigma0) 
print str(ss) 
plt.plot(kk,np.sqrt(ss)) 

kk,ss = QS.ScanY(Kmin, Kmax, Npoint, Sigma0) 
#print str(ss) 
print str(ss) 
plt.plot(kk,np.sqrt(ss)) 


coef = np.polyfit(kk,ss,2) 

print coef 
poly = np.poly1d(coef) 
plt.plot(kk, poly(kk),'r') 
plt.plot(np.sqrt(ss), poly(ss),'k') 

plt.xlabel('K $(1/m^2)$') 
plt.ylabel('Beamsize (m)') 

plt.show() 
+5

Python是否可以打印這些係數,它應該是微不足道將其分配給變量。請向我們展示您的相關代碼部分,以便我們可以更具體。 – River

+0

Well polyfit返回一個數組,所以你可以做p = numpy.polyfit(...); A = p [0],B = p [1],C = p [3] – Ale

+0

我附上了代碼的相關部分。我不確定這是否足夠,但請讓我知道你是否需要更多。 –

回答

0

我能與朋友的幫助下摸不着頭腦。它也似乎與你們中的一些人所建議的一樣。非常感謝你的幫助。

我會後我的代碼,以防萬一它可以幫助其他人的未來:

plt.plot(k, SigmaX2, '.', color = 'black') 
plt.plot(k, SigmaY2, '.', color = 'black') 
plt.xlabel('Quadrupole Field Strength $(1/m^2)$') 
plt.ylabel('Beamsize $(m^2)$') 
t = plt.title('Beam Size vs. Quadrupole Field Strength', \ 
fontsize=18, color='blue') 


CoefX = np.polyfit(k, SigmaX2, 2) 
CoefY = np.polyfit(k, SigmaY2, 2) 
polyX = np.poly1d(CoefX) 
polyY = np.poly1d(CoefY) 
print "Polyfit Coefficients (x, y):" 
print CoefX 
print CoefY 


xs = np.arange(Xmin, Xmax, 0.01) 
ys1 = polyX(xs) 
ys2 = polyY(xs) 

plt.plot(xs, ys1, '-', color = 'blue') 
plt.plot(xs, ys2, '-', color = 'red') 
plt.ylim(0, np.max(ys1)) 
plt.ylim(0, np.max(ys2)) 

plt.show() 



# These are the coefficients from the poly fit, which I need to use 
# later for calculations. 

Ax = float(CoefX[0]) 
Bx = float(CoefX[1]) 
Cx = float(CoefX[2]) 

Ay = float(CoefY[0]) 
By = float(CoefY[1]) 
Cy = float(CoefY[2])