gpt4 book ai didi

Matlab:强制 Spring 质量阻尼器的 ode45 输出不正确

转载 作者:行者123 更新时间:2023-12-02 00:02:48 26 4
gpt4 key购买 nike

这是我的 Matlab 代码,用于求解质量 Spring 阻尼器系统的二阶 ODE:

function Spring

clear all;
close all;
options=odeset('RelTol',1e-6);
p0 = [1 0]; %initial position and velocity
[t,p] = ode45(@SpringFunction, [0 20], p0, options);

plot(t,p(:,1)) %plot the first column (x) vs. time

return

function pdot = SpringFunction(t,p)

c = 5; w = 2;
g = sin(t); % forcing function
pdot = zeros(size(p));
pdot(1) = p(2);
pdot(2) = g-c*p(2)-(w^2)*p(1);

return

我相信我得到的输出是错误的,因为对于这种情况,我认为位移与时间的关系图应该看起来像振幅递减的正弦曲线。相反,它看起来像这样: decreasing function which relaxes to a sinusoid whose amplitude is constant

这对我来说似乎不正确,但如果我错了,请纠正我。我看不出代码中有什么不正确的地方。

最佳答案

您正在对阻尼系统施加正弦曲线,因此您应该期望稳定状态是正弦曲线。这是a nice vibrations tutorial (PDF) – 有关阻尼正弦强制,请参阅第 448–450 页。尝试消除强制或大大降低其幅度。另外,看起来你有很多阻尼。您的damping ratio , z (zeta),似乎是 c/(2*w) = 5/4。这意味着系统的非受力形式过度阻尼 - 在没有受力的情况下,您不会看到振荡。

此外,在振荡系统中使用 ode45 时要小心。如果您的系统碰巧太僵硬,您可能需要调整容差或使用僵硬解算器,例如 ode15s以获得准确的结果。您始终可以尝试使用更严格的容差来检查它们是否产生质量相似的结果(相同的周期、幅度、增长率/衰减率等)。

关于Matlab:强制 Spring 质量阻尼器的 ode45 输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com