我正在解决一个问题,我的最终目标是获得进动数组中的进度值。这些值是时间对θ图的斜率。我使用线性拟合来获得该图的斜率。我尝试使用append将该斜率放入数组中。这是在一个针对不同值的函数中完成的。
但是进动值的数组的长度是131,它应该只有24。当代码运行时,代码正在为每个a值打印正确的斜率(也称为进差值),但是数组太长了,我不知道所有这些值都来自哪里。
我怀疑这就是我使用追加/将斜率值放入空数组中的方式。如何才能在数组中获得所需的值?
基本上,我想在我的函数中创建一个不同斜率的图形数组。当我使用append的时候,数组的斜率值(params)是131,而它应该是24,并且其中的值都是错误的。如何创建斜率数组,即此函数运行的每个值的斜率?
amin=0
amax=0.024
da=0.001
a_list=np.arange(amin,amax,da)
for a in a_list:
mercury(a)
##finding dtheat/dt
precession =[]
#plot theta vs time
Theta = [theta]
Time = [time]
#dtheta/dt dt=period
#Fitting a straight line!
def linefit(x,m,b):
return m*x+b
params, param_cov = optimize.curve_fit(linefit,Time,Theta)
plt.plot(a_list,params[0]*a_list+params[1],'--r',linewidth=2,label='fit')
plt.plot(Time,Theta)
plt.xlabel('Time')
plt.ylabel('Theta')
plt.title("time vs theta when alpha = {a}".format(a=a))
plt.show()
print('slope is %.3f' % (params[0]))
precession.append(params[0])
plt.plot(a_list, precession)
plt.show()发布于 2019-10-11 11:26:45
你每次循环都会重置列表。我把它移出了循环。
已编辑:已创建新数组以包含用于分隔值的参数...
amin=0
amax=0.024
da=0.001
a_list=np.arange(amin,amax,da)
precession =[] # ADDED HERE
new_array = [] # ADDED HERE
for a in a_list:
mercury(a)
##finding dtheat/dt
#plot theta vs time
Theta = [theta]
Time = [time]
#dtheta/dt dt=period
for i in theta:
precession.append(i/0.246)
#Fitting a straight line!
def linefit(x,m,b):
return m*x+b
params, param_cov = optimize.curve_fit(linefit,Time,Theta)
plt.plot(a_list,params[0]*a_list+params[1],'--r',linewidth=2,label='fit')
plt.plot(Time,Theta)
plt.xlabel('Time')
plt.ylabel('Theta')
plt.title("time vs theta when alpha = {a}".format(a=a))
plt.show()
print('slope is %.3f' % (params[0]))
new_array.append(params[0]) # ADDED HERE
plt.plot(a_list, precession)
plt.show()https://stackoverflow.com/questions/58333793
复制相似问题