请原谅我,但对于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()
答案 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])