我有我用欧拉方法制作的质量弹簧系统程序......我无法获得蓝色阻尼曲线的包络线。你能帮助我吗?
#****************************************************************************************************************************************************************************************
# Damped spring-mass oscillator
# ****************************************************************************************************************************************************************************************
from pylab import *
from scipy.signal import hilbert,chirp
g = 0 #grawitacja [m/s2] bez grawitacji 0
g = -9.80665 #grawitacja [m/s2] bez grawitacji 0
m = 0.4532 #masa ciężaru [kg]
k = 875.60 #sztywność [N/m]
# c = (2*m)*sqrt(k/m)
c = 0
c_kr = 2*sqrt(k*m)
c = 2*sqrt(k*m)
c = 5.0 #tlumienie [Ns/m]
omega=sqrt(k/m)
f=omega/(2*pi)
T=1/f
T=2*pi/omega
f1=1/T
gamma=c/c_kr
p=c/(2*m)
print('dekrement tłumienia',gamma,' [s]')
print('tłumienie', c)
print('tłumienie krytyczne',c_kr)
print('omega czestosc własna',omega,' [rad]')
print('czestotliwosc',f,' [Hz=1/s]')
print('czestotliwosc',f1,' [Hz=1/s]')
print('okres',T,' [s]')
# print('e',e,' [s]')
u_pocz=-0.0254 #ugięcie, przemieszczenie wstępne sprężyny [m]
u_pocz= 0.0 #ugięcie, przemieszczenie wstępne sprężyny [m]
v_pocz= 0.0 #prędkość w [m/s]
t_pocz= 0.0 #czas w [s]
env_pocz= 0.0 #czas w [s]
dt=0.001 #przyrost czasu [s]
t_kon=0.15 #czas końca obliczeń [s]
t_kon=1.00 #czas końca obliczeń [s]
print('czas',t_kon,' [s]')
u=u_pocz #przemieszczenie [m]
v=v_pocz #prędkość w [m/s]
t=t_pocz #czas w [s]
env=env_pocz #czas w [s]
#To mogę policzyć bo wiem, ugięcie, wydłużenie sprężyny w [m] - a dlaczego tak ?
#bo k*u=G (siła ciężkości) czyli k*u=m*g dlatego u=m*g/k
# u_ugiecie_wlasne=m*g/k-u_pocz #ugięcie przemieszczenie własne w [m]
# a=-g-(k/m)*(u-u_ugiecie_wlasne)-c*v*abs(v)/m #przyspieszenie pocztkowe w [m/s2] ale potrzebne to bedzie dopierow później
u_ugiecie_wlasne=m*(g)/k #ugięcie przemieszczenie własne w [m] bez LOAD_BODY
print('u_ugiecie_wlasne',u_ugiecie_wlasne,' [s]')
przechowalnia_u=[]
przechowalnia_v=[]
przechowalnia_a=[]
przechowalnia_F=[]
przechowalnia_t=[]
przechowalnia_env=[]
# ****************************************************************************************************************************************************************************************
# Obliczenia zasadnicze
# ****************************************************************************************************************************************************************************************
while (t<t_kon):
a=-g-(k*(u-u_ugiecie_wlasne)/m)-(c*v/m)+g # dv/dt=a=(-g-k*(u+u_ugiecie_wlasne)/m-c*v/m) z LOAD_BODY czyli przyspieszenie ziemskie *g
v=v+a*dt # v=v+dt*dv/dt
u=u+v*dt # u=u+dt*du/dt
F=(-g-(k*(u-u_ugiecie_wlasne)/m)-(c*v/m))*m
t=t+dt
przechowalnia_u.append(u)
przechowalnia_v.append(v)
przechowalnia_a.append(a)
przechowalnia_F.append(F)
przechowalnia_t.append(t)
przechowalnia_env.append(env)
# ****************************************************************************************************************************************************************************************
# Obliczenia zasadnicze
# ****************************************************************************************************************************************************************************************
# ****************************************************************************************************************************************************************************************
# Grafika
# ****************************************************************************************************************************************************************************************
# coding: utf-8
from matplotlib.font_manager import FontProperties
# okno = get_current_fig_manager()
def quit_figure(event):
if event.key == 'escape':
close(event.canvas.figure)
if event.key == 'f10':
savefig('0.png',dpi=150)
# rcParams.update({'font.size': 24})
rcParams['font.size'] = 24 #set the value globally
rcParams['axes.linewidth'] = 2 #set the value globally
rcParams['toolbar'] = 'None'
font = {'family':'ISOCPEUR','weight':'normal','color':'black'}
# font = {'family':'ISOCPEUR','weight':'normal','color':'black','size':10}
fig=figure(num=None, frameon='False', figsize=(16, 7), facecolor='w')
# title('Identification of Johnson-Cook constitutive equations in terms of FEM simulation\n$\mathrm{Y=}$',font)
ylabel('Przemieszczenie [m]')
xlabel('Czas [s]')
plot(przechowalnia_t, przechowalnia_u, linewidth=4, color='b',label='u - przemieszczenie, [m]')
# plot(analytical_signal, linewidth=2, color='b',label='u - przemieszczenie, [m]')
# plot(amplitude_envelope, linewidth=4, color='r',label='u - przemieszczenie, [m]')
# plot(przechowalnia_t, przechowalnia_a, linewidth=4, color='r',label='a - przyspieszenie, [m/s$^2$]'')
# plot(przechowalnia_t, przechowalnia_v, linewidth=4, color='r',label='v - prędkość, [m/s2]')
# plot(przechowalnia_t, przechowalnia_F, linewidth=4, color='r',label='F - siła, [N]')
axvline(0,linestyle='--',linewidth=2,color='r')
axhline(0,linestyle='--',linewidth=2,color='r')
hlines(u_ugiecie_wlasne,t_pocz,t_kon,linestyle='-',linewidth=4,color='g',label='ugięcie własne w [m]')
legend(loc='upper right')
quit = gcf().canvas.mpl_connect('key_press_event', quit_figure)
show()
# ****************************************************************************************************************************************************************************************
# Grafika
# ****************************************************************************************************************************************************************************************
我做到了,但我担心我不习惯其他东西 - 我想要对数阻尼增量,我必须弄清楚如何从 elvelope 中提取有关阻尼水平的信息。尽管如此 - 谢谢。

