You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数值求解受迫阻尼振子响应时峰值频率与预期不符的问题求助

数值求解受迫阻尼振子响应时峰值频率与预期不符的问题求助

我正在尝试绘制一个受周期驱动的阻尼振子的响应,它的动力学由以下微分方程支配:

x'' + 2Gx' + f₀²x = F cos(ft)

其中各常数的含义如下:

  • G:阻尼系数
  • f₀:固有频率
  • f:驱动频率
  • F:驱动强度

为了实现这个目标,我先求解了上述微分方程得到x(t),接着提取了x(t)的稳态部分,对其进行傅里叶变换后绘制幅值,以此可视化振子的响应。

下面是我用来实现这个过程的代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.fft import fft, fftfreq

G=1.0
f0=2
f1=5
F=1

N=500000
T=50
dt=T/N

t=np.linspace(0,T,N)
u=np.zeros(N,dtype=float)  # Position
v=np.zeros(N,dtype=float)  # Velocity

u[0]=0
v[0]=0.5

for i in range(N-1):
    u[i+1] = u[i] + v[i]*dt
    v[i+1] = v[i] - 2*G*v[i]*dt - (f0*f0)*u[i]*dt + F*np.cos(f1*t[i])*dt 

slice_index=int(20/dt)
U=u[slice_index:]

X_f = fft(U)
frequencies = fftfreq(len(U), dt)
psd = np.abs(X_f)
positive_freqs = frequencies[frequencies > 0]  

plt.plot(positive_freqs, psd[frequencies > 0], label="Simulated PSD")
plt.plot(frequencies, psd)

由于这个振子是受迫驱动的,最终会达到稳态,我预期响应会在驱动频率附近出现峰值。但运行上述代码后,得到的峰值位置完全不在f附近。请问我哪里出错了?

备注:内容来源于stack exchange,提问作者Sourin Dey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 14:05:30