齿轮啮合刚度傅立叶级数展开程序,注释给全,附带一个例子
在机械动力学领域,研究齿轮啮合刚度的特性至关重要。而通过傅立叶级数展开可以对其进行深入分析。下面咱们就来详细看看相关的程序实现。
程序代码
import numpy as np import matplotlib.pyplot as plt # 定义傅立叶级数展开函数 def fourier_series_expansion(x, a0, an_coeffs, bn_coeffs, num_terms): result = a0 / 2 for n in range(1, num_terms + 1): result += an_coeffs[n - 1] * np.cos(n * x) + bn_coeffs[n - 1] * np.sin(n * x) return result # 假设我们有一组齿轮啮合刚度数据(这里简单模拟) # 周期T假设为2*pi T = 2 * np.pi # 采样点数 N = 1000 x = np.linspace(0, T, N) # 模拟的齿轮啮合刚度数据 y = 2 + 3 * np.cos(x) + 1.5 * np.sin(2 * x) # 计算傅立叶系数 # 计算a0 a0 = (2 / T) * np.trapz(y, x) # 计算an an_coeffs = [] for n in range(1, 10): integrand = y * np.cos(n * x) an = (2 / T) * np.trapz(integrand, x) an_coeffs.append(an) # 计算bn bn_coeffs = [] for n in range(1, 10): integrand = y * np.sin(n * x) bn = (2 / T) * np.trapz(integrand, x) bn_coeffs.append(bn) # 使用傅立叶级数展开重构数据 num_terms = 5 reconstructed_y = fourier_series_expansion(x, a0, an_coeffs, bn_coeffs, num_terms) # 绘图展示 plt.plot(x, y, label='Original Data') plt.plot(x, reconstructed_y, label='Reconstructed Data ({} terms)'.format(num_terms)) plt.xlabel('x') plt.ylabel('Gear Mesh Stiffness') plt.legend() plt.show()代码分析
- 导入必要的库:
-numpy是Python中常用的数学计算库,在处理数值计算如积分、三角函数运算等方面非常方便。
-matplotlib.pyplot主要用于数据可视化,我们可以用它将原始数据和傅立叶级数展开重构后的数据进行绘图展示,直观地看到两者的关系。
- 定义傅立叶级数展开函数:
-fourierseriesexpansion函数接收自变量x,常数项a0,余弦项系数列表ancoeffs,正弦项系数列表bncoeffs以及展开项数numterms。
- 公式中首先加上常数项a0 / 2,然后通过循环,从n = 1到numterms,依次加上ancos(nx)和bnsin(nx),最终返回傅立叶级数展开的结果。
- 模拟齿轮啮合刚度数据:
- 我们假设周期T为2pi,在这个周期内生成N = 1000个采样点x。
- 这里简单构造了一个函数y = 2 + 3cos(x) + 1.5sin(2x)来模拟齿轮啮合刚度数据,实际应用中这个数据可能来自实验测量或其他复杂模型。
- 计算傅立叶系数:
-计算a0:a0的计算公式为(2 / T)∫y(x)dx,在代码中通过np.trapz(y, x)来数值计算积分,np.trapz是numpy提供的梯形积分方法。
-计算an:循环从n = 1到9(这里选择计算前9项,实际可按需调整),对于每一个n,计算积分(2 / T)∫y(x)cos(nx)dx,同样使用np.trapz进行数值积分,并将结果添加到ancoeffs列表中。
-计算bn:与计算an类似,只是积分中的被积函数变为y(x)sin(nx),计算结果添加到bncoeffs列表。
- 重构数据与绘图:
- 选择展开项数为5,调用fourierseriesexpansion函数重构数据得到reconstructedy。
- 最后使用matplotlib绘图,将原始数据y和重构数据reconstructedy绘制在同一幅图中,通过标签和图例区分,这样可以很直观地看到使用傅立叶级数展开重构数据与原始数据的拟合程度。
通过这个程序示例,相信大家对齿轮啮合刚度的傅立叶级数展开有了更清晰的认识,实际应用中可以根据具体的需求调整参数和数据处理方式。