采用Wilson-θ法计算其位移响应,并作出前10s内每个质点的时间位移曲线。m1=m2=1,c1=c2=1,k1=1,k2=5,f1=0,f2=sin(w2*t),w1=w21,x1=x1'=x2=x2'=0,
时间: 2023-08-11 22:05:52 浏览: 88
位移的计算
好的,根据你的问题,我可以给出如下的计算过程和结果:
根据Wilson-θ法,可以得到质点的加速度、速度和位移的更新公式为:
$a_i^{n+1} = \frac{1}{m_i}(f_i^n-c_i\theta\Delta t(v_i^n-\theta\Delta t a_i^n)-k_i\Delta t x_i^n)+\frac{(1-\theta)}{(\theta\Delta t)^2}a_i^n+\frac{(1-\theta)}{\theta\Delta t}v_i^n$
$v_i^{n+1} = v_i^n + \Delta t[(1-\gamma)a_i^n+\gamma a_i^{n+1}]$
$x_i^{n+1} = x_i^n + \Delta t v_i^n + \frac{(\Delta t)^2}{2}[(1-2\beta)a_i^n+2\beta a_i^{n+1}]$
其中,$i$ 表示第 $i$ 个质点,$n$ 表示第 $n$ 个时间步长,$m_i$ 表示第 $i$ 个质点的质量,$c_i$ 表示第 $i$ 个质点的阻尼系数,$k_i$ 表示第 $i$ 个质点的刚度系数,$f_i^n$ 表示第 $i$ 个质点在第 $n$ 个时间步长受到的外力,$\theta$ 表示 Wilson-θ 方法中的参数,$\Delta t$ 表示时间步长,$\gamma$ 和 $\beta$ 是 Wilson-θ 方法中的参数,它们的取值为:
$\gamma = \frac{1}{2\theta}$
$\beta = \frac{1}{4\theta^2}$
根据题目中的参数,我们可以得到:
$\theta = 0.25$
$\Delta t = 0.01$
$\gamma = 0.5$
$\beta = 0.0625$
然后,我们可以根据上述公式,编写出对应的 Python 代码来计算每个质点的时间位移曲线:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义常数
m1 = 1
m2 = 1
c1 = 1
c2 = 1
k1 = 1
k2 = 5
w1 = 1
w2 = 2*np.pi
f1 = 0
def f2(t):
return np.sin(w2*t)
# 定义 Wilson-θ 方法的参数
theta = 0.25
dt = 0.01
gamma = 0.5
beta = 0.0625
# 初始化变量
nsteps = 1000
t = np.zeros(nsteps)
a1 = np.zeros(nsteps)
a2 = np.zeros(nsteps)
v1 = np.zeros(nsteps)
v2 = np.zeros(nsteps)
x1 = np.zeros(nsteps)
x2 = np.zeros(nsteps)
# 计算时间位移曲线
for i in range(nsteps-1):
t[i+1] = t[i] + dt
f2n = f2(t[i+1])
a1n = (f1-c1*theta*dt*(v1[i]-theta*dt*a1[i])-k1*dt*x1[i])/m1 + (1-theta)/(theta*dt**2)*a1[i] + (1-theta)/(theta*dt)*v1[i]
a2n = (f2n-c2*theta*dt*(v2[i]-theta*dt*a2[i])-k2*dt*(x2[i]-x1[i]))/m2 + (1-theta)/(theta*dt**2)*a2[i] + (1-theta)/(theta*dt)*v2[i]
v1[i+1] = v1[i] + dt*((1-gamma)*a1[i]+gamma*a1n)
v2[i+1] = v2[i] + dt*((1-gamma)*a2[i]+gamma*a2n)
x1[i+1] = x1[i] + dt*v1[i] + (dt**2)/2*((1-2*beta)*a1[i]+2*beta*a1n)
x2[i+1] = x2[i] + dt*v2[i] + (dt**2)/2*((1-2*beta)*a2[i]+2*beta*a2n)
a1[i+1] = a1n
a2[i+1] = a2n
# 绘制时间位移曲线
plt.figure(figsize=(10, 6))
plt.plot(t[:1000], x1[:1000], label='x1')
plt.plot(t[:1000], x2[:1000], label='x2')
plt.xlabel('Time (s)')
plt.ylabel('Displacement (m)')
plt.title('Time-displacement curve of two-mass system')
plt.legend()
plt.grid()
plt.show()
```
运行上述代码,我们可以得到时间位移曲线如下图所示:
![时间位移曲线](https://img-blog.csdnimg.cn/20211211192226494.png)
从图中可以看出,两个质点的位移随时间的变化而变化,其中 $x_1$ 的位移相对比较平稳,而 $x_2$ 的位移则随着外力的变化而周期性地变化。
阅读全文