没有合适的资源?快使用搜索试试~ 我知道了~
材料力学之动力学分析算法:谐响应分析:连续系统的谐响应分析.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 161 浏览量
2024-08-31
14:04:52
上传
评论
收藏 38KB DOCX 举报
温馨提示
材料力学之动力学分析算法:谐响应分析:连续系统的谐响应分析.docx
资源推荐
资源详情
资源评论
1
材料力学之动力学分析算法:谐响应分析:连续系统的谐
响应分析
1 绪论
1.1 谐响应分析的重要性
在材料力学领域,谐响应分析是动力学分析中的一个关键部分,它主要研
究系统在正弦波激励下的响应。这种分析对于理解结构在周期性载荷作用下的
行为至关重要,尤其是在设计和评估机械、土木和航空航天工程中的结构时。
通过谐响应分析,工程师可以预测结构的振动特性,包括频率响应、振幅和相
位,从而确保结构在实际工作条件下的安全性和稳定性。
1.2 连续系统与离散系统的区别
1.2.1 连续系统
连续系统是指在空间和时间上连续分布的系统,如梁、板、壳体等。在这
些系统中,物理量(如位移、应力和应变)可以在任何位置和时间上被定义。
连续系统的动力学分析通常涉及偏微分方程,这些方程描述了系统中物理量随
时间和空间的变化。例如,欧拉-伯努利梁方程是描述梁在横向载荷作用下弯曲
振动的连续系统动力学方程。
1.2.2 离散系统
离散系统则是将连续系统简化为有限数量的集中质量、刚度和阻尼的系统。
这种简化使得问题可以使用线性代数和微分方程的解法来处理,而不是偏微分
方程。在离散系统中,结构被分解为多个节点和元件,每个节点的位移和每个
元件的力都可以被独立计算。例如,使用有限元方法(FEM)可以将一个连续
的梁转化为离散系统,其中梁被分割成多个梁单元,每个单元的两端都有节点。
1.2.3 示例:连续梁的谐响应分析
假设我们有一个简支梁,长度为 L,受到正弦波横向载荷的作用。我们可
以通过求解欧拉-伯努利梁方程来分析其谐响应。
1.2.3.1 欧拉-伯努利梁方程
E
I
ρ
A
∂
4
w
∂
x
4
+
∂
2
w
∂
t
2
=
q
(
x
,
t
)
其中: -
w
是梁的横向位移。 -
E
是弹性模量。 -
I
是截面惯性矩。 -
ρ
是材
2
料密度。 -
A
是截面面积。 -
q
(
x
,
t
)
是横向载荷,假设为正弦波形式
q
(
x
,
t
)
=
Q
sin
(
ω
t
)
sin
n
π
x
L
。
1.2.3.2 边界条件
对于简支梁,边界条件为: -
w
(
0
,
t
)
=
w
(
L
,
t
)
=
0
-
∂
2
w
∂
x
2
(
0
,
t
)
=
∂
2
w
∂
x
2
(
L
,
t
)
=
0
1.2.3.3 解析解
假设梁的位移
w
(
x
,
t
)
可以表示为
w
(
x
,
t
)
=
W
(
x
)
sin
(
ω
t
)
,则可以将问题转化
为求解
W
(
x
)
的问题。通过代入边界条件和欧拉-伯努利梁方程,可以得到
W
(
x
)
的解析解。
1.2.3.4 Python 代码示例
虽然解析解对于简单系统是可行的,但对于复杂系统,通常需要使用数值
方法。下面是一个使用 Python 和 SciPy 库求解简支梁在正弦波载荷作用下的谐
响应的示例。
import numpy as np
from scipy.integrate import solve_bvp
import matplotlib.pyplot as plt
#
定义欧拉
-
伯努利梁方程
def beam_equation(x, w, E, I, rho, A, Q, omega, L, n):
return [w[1], w[2], w[3], -Q*np.sin(n*np.pi*x/L)*np.sin(omega*t)/(E*I/rho/A)]
#
定义边界条件
def boundary_conditions(wa, wb):
return [wa[0], wa[1], wb[0], wb[1]]
#
参数设置
E = 200e9 #
弹性模量,单位:
Pa
I = 1e-4 #
截面惯性矩,单位:
m^4
rho = 7800 #
材料密度,单位:
kg/m^3
A = 1e-2 #
截面面积,单位:
m^2
Q = 100 #
载荷幅值,单位:
N
omega = 10 #
角频率,单位:
rad/s
L = 1 #
梁长度,单位:
m
n = 1 #
模态阶数
#
定义网格
x = np.linspace(0, L, 100)
3
t = 0 #
假设在
t=0
时刻求解
#
初始条件
w0 = [0, 0, 0, 0]
#
求解边值问题
sol = solve_bvp(beam_equation, boundary_conditions, x, w0, args=(E, I, rho, A, Q, omega, L, n))
#
绘制结果
plt.plot(x, sol.sol(x)[0])
plt.xlabel('位置 (m)')
plt.ylabel('位移 (m)')
plt.title('简支梁在正弦波载荷作用下的位移')
plt.grid(True)
plt.show()
1.2.4 代码解释
1. 导入库:使用 numpy 进行数值计算,scipy.integrate.solve_bvp 求
解边值问题,matplotlib.pyplot 绘制结果。
2. 定义方程:beam_equation 函数定义了欧拉-伯努利梁方程,其中
w 是一个包含位移及其导数的向量。
3. 定义边界条件:boundary_conditions 函数确保梁的两端位移和弯
矩为零。
4. 参数设置:定义了材料和载荷的参数。
5. 求解边值问题:使用 solve_bvp 函数求解方程,args 参数传递了方
程中的常数。
6. 绘制结果:使用 matplotlib 库绘制梁的位移曲线。
通过上述代码,我们可以直观地看到简支梁在正弦波载荷作用下的位移响
应,这对于理解连续系统的谐响应分析非常有帮助。
2 材料力学之动力学分析算法:谐响应分析
2.1 基本理论
2.1.1 振动方程的建立
在材料力学的动力学分析中,谐响应分析是研究结构在正弦波激励下的响
应。对于连续系统,如梁、板或壳体,其振动方程的建立基于弹性力学的基本
原理。考虑一个无限长的均匀梁,其振动方程可以表示为:
E
I
∂
4
w
∂
x
4
+
ρ
A
∂
2
w
∂
t
2
+
c
∂
w
∂
t
=
q
(
x
,
t
)
其中,
E
I
是梁的抗弯刚度,
ρ
A
是梁的线密度,
c
是阻尼系数,
w
是梁的横向
4
位移,
q
(
x
,
t
)
是作用在梁上的横向分布力。这个方程描述了梁在时间和空间上的
振动行为。
2.1.2 傅里叶变换与频谱分析
傅里叶变换是谐响应分析中的关键工具,它将时间域的信号转换为频率域
的信号,从而可以分析结构在不同频率下的响应。对于上述梁的振动方程,应
用傅里叶变换后,可以得到频率域的振动方程:
E
I
∂
4
w
∂
x
4
−
ρ
A
ω
2
w
+
c
ω
i
w
=
q
(
x
,
ω
)
其中,
w
和
q
分别是位移和力的傅里叶变换,
ω
是角频率。通过解这个方程,
可以得到梁在不同频率下的位移响应。
2.1.2.1 示例:傅里叶变换的 Python 实现
import numpy as np
import matplotlib.pyplot as plt
#
定义时间域信号
t = np.linspace(0, 1, 1000, endpoint=False) #
时间向量
signal = np.sin(2 * np.pi * 50 * t) + np.sin(2 * np.pi * 120 * t) #
信号,包含
50Hz
和
120Hz
的正
弦波
#
应用傅里叶变换
signal_fft = np.fft.fft(signal)
freq = np.fft.fftfreq(t.shape[-1], d=t[1]-t[0]) #
频率向量
#
绘制频谱图
plt.plot(freq, np.abs(signal_fft))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Amplitude')
plt.title('Spectrum Analysis')
plt.grid()
plt.show()
这段代码首先生成了一个包含 50Hz 和 120Hz 正弦波的时间域信号,然后使
用 numpy 库的 fft 函数进行傅里叶变换,最后绘制了信号的频谱图。通过频谱
图,可以清晰地看到信号中包含的频率成分。
2.2 谐响应分析
谐响应分析关注的是结构在正弦激励下的响应。对于连续系统,如上述的
梁,其谐响应可以通过求解频率域的振动方程来获得。在实际应用中,通常会
将连续系统离散化,使用有限元方法或其他数值方法求解。
5
2.2.1 有限元方法求解谐响应
在有限元方法中,连续系统被离散为多个单元,每个单元的振动方程可以
表示为:
[
M
]
{
u
}
+
[
C
]
{
u
}
+
[
K
]
{
u
}
=
{
F
}
其中,
[
M
]
是质量矩阵,
[
C
]
是阻尼矩阵,
[
K
]
是刚度矩阵,
{
u
}
是位移向量,
{
F
}
是外力向量。对于谐响应分析,假设外力和位移都是正弦函数,可以将上述
方程转换为:
[
M
]
{
ω
2
u
}
+
[
C
]
{
i
ω
u
}
+
[
K
]
{
u
}
=
{
F
}
通过求解这个方程,可以得到结构在不同频率下的位移响应。
2.2.1.1 示例:使用 Python 和 SciPy 求解谐响应
import numpy as np
from scipy.linalg import solve
#
定义质量、阻尼和刚度矩阵
M = np.array([[1, 0], [0, 1]]) #
质量矩阵
C = np.array([[0.1, 0], [0, 0.1]]) #
阻尼矩阵
K = np.array([[100, -50], [-50, 100]]) #
刚度矩阵
#
定义角频率和外力向量
omega = 10
F = np.array([100, 0])
#
求解谐响应
A = omega**2 * M + 1j * omega * C + K
u = solve(A, F)
print('Displacement response:', u)
在这个例子中,我们定义了一个简单的二维系统,包含两个自由度。质量、
阻尼和刚度矩阵被设定为对角矩阵和常数矩阵。外力向量
{
F
}
在第一个自由度上
施加了 100 单位的力。通过求解频率域的振动方程,我们得到了在 10Hz 频率下
的位移响应。
2.3 结论
谐响应分析是材料力学动力学分析中的一个重要组成部分,它通过傅里叶
变换将时间域的信号转换为频率域,从而可以分析结构在不同频率下的响应。
对于连续系统,如梁、板或壳体,谐响应分析通常需要结合有限元方法或其他
数值方法进行求解。通过上述示例,我们可以看到如何使用 Python 和相关库来
实现谐响应分析的计算。
剩余22页未读,继续阅读
资源评论
kkchenjj
- 粉丝: 2w+
- 资源: 5473
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功