动态分析:谐响应分析_(9).谐响应分析的数值解法.docxVIP

  • 0
  • 0
  • 约1.52万字
  • 约 17页
  • 2026-02-26 发布于辽宁
  • 举报

动态分析:谐响应分析_(9).谐响应分析的数值解法.docx

PAGE1

PAGE1

谐响应分析的数值解法

在上一节中,我们已经介绍了谐响应分析的基本概念和应用背景。本节将详细介绍谐响应分析的数值解法,包括直接法、模态叠加法和频域方法等。这些方法在工程力学中被广泛应用于解决结构在谐波载荷下的动态响应问题。

1.直接法

直接法是一种基于时域的数值解法,通过求解结构的运动方程来获得结构在谐波载荷下的响应。直接法的优点是能够处理复杂的非线性问题,但计算量较大,尤其在高频率响应分析中。

1.1基本原理

对于线性系统,运动方程可以表示为:

M

其中,M是质量矩阵,C是阻尼矩阵,K是刚度矩阵,ut是位移向量,ut是速度向量,ut是加速度向量,Ft是外力向量。假设外力

F

其中,F0是外力幅值,ω

1.2Newmark法

Newmark法是一种常用的数值积分方法,适用于求解二阶线性常微分方程。其基本步骤如下:

初始化:设置初始条件u0和u

时间步长:选择合适的时间步长Δt

迭代求解:在每个时间步tn上求解位移utn、速度utn

Newmark法的公式为:

u

u

u

其中,β和γ是Newmark法的参数,通常取β=14和

1.3代码示例

以下是一个使用Python和NumPy库实现Newmark法的示例代码:

importnumpyasnp

importmatplotlib.pyplotasplt

#定义系统参数

M=np.array([[1.0,0.0],[0.0,1.0]])#质量矩阵

C=np.array([[0.1,0.0],[0.0,0.1]])#阻尼矩阵

K=np.array([[2.0,-1.0],[-1.0,2.0]])#刚度矩阵

F0=np.array([1.0,0.0])#外力幅值

omega=2.0#角频率

beta=1/4#Newmark参数

gamma=1/2#Newmark参数

dt=0.01#时间步长

T=10.0#总时间

t=np.arange(0,T,dt)#时间向量

#初始化条件

u=np.zeros((2,len(t)))#位移向量

u_dot=np.zeros((2,len(t)))#速度向量

u_ddot=np.zeros((2,len(t)))#加速度向量

#初始条件

u[:,0]=np.array([0.0,0.0])

u_dot[:,0]=np.array([0.0,0.0])

u_ddot[:,0]=np.linalg.solve(M,F0*np.sin(omega*t[0])-C@u_dot[:,0]-K@u[:,0])

#迭代求解

foriinrange(1,len(t)):

F=F0*np.sin(omega*t[i])

A=M/(beta*dt**2)+C*gamma/(beta*dt)+K

B=M@(u[:,i-1]/(beta*dt**2)+u_dot[:,i-1]/(beta*dt)+(1/2-1/beta)*u_ddot[:,i-1])\

+C@(u_dot[:,i-1]+(gamma-1)*dt*u_ddot[:,i-1])+K@u[:,i-1]-F

u[:,i]=np.linalg.solve(A,B)

u_ddot[:,i]=(u[:,i]-u[:,i-1]-dt*u_dot[:,i-1])/(beta*dt**2)-(1-2*beta)*u_ddot[:,i-1]/(2*beta)

u_dot[:,i]=u_dot[:,i-1]+dt*((1-gamma)*u_ddot[:,i-1]+gamma*u_ddot[:,i])

#绘制结果

plt.figure(figsize=(10,6))

plt.plot(t,u[0,:],label=u1(t))

plt.plot(t,u[1,:],label=u2(t))

plt.xlabel(时间(t))

plt.ylabel(位移(u))

plt.title(Newmark法求解谐响应)

plt.legend()

plt.grid(True)

plt.show()

文档评论(0)

1亿VIP精品文档

相关文档