I'm trying to solve the ODE with an input of a cosine wave (x1) but i am not getting the output in a wave form. Please help me out. Thanks!
function [] = call_spring()
t=0:0.001:10;
y0=[0,1];
x1=2.5*cos(4*pi*t);
[t,y]=ode45(@spring,t,y0);
plot(t,y,t,x1)
function dzdt = spring(t,y)
k=342; m=2.853; x1=2.5*cos(4*pi*t);
y1=y(1);
y2=y(2);
dzdt = [y2 ; (-k/m)*(x1-y1)];
end
end

 Respuesta aceptada

Sam Chak
Sam Chak el 27 de Mzo. de 2022
Editada: Sam Chak el 27 de Mzo. de 2022

1 voto

Because of the sign in this line. (minus) (minus) = plus. It means that energy is continuously injected into the system, and destabilizes it.
(-k/m)*(x1 - y1)
function [] = call_spring()
t = 0:0.001:10;
y0 = [0, 1];
x1 = 2.5*cos(4*pi*t);
[t, y] = ode45(@spring, t, y0);
plot(t, y, t, x1)
end
function dzdt = spring(t, y)
k = 342;
m = 2.853;
x1 = 2.5*cos(4*pi*t);
y1 = y(1);
y2 = y(2);
dzdt = [y2;
(-k/m)*(x1 + y1)];
end
Result
Also, please double check your equation. Could be this one too:
(-k/m)*y1 + (1/m)*x1

4 comentarios

Aung Moe Zaw
Aung Moe Zaw el 27 de Mzo. de 2022
Thank you
Aung Moe Zaw
Aung Moe Zaw el 27 de Mzo. de 2022
y is plotted as orange and blue, is there a way i can just display the blue wave?
Sam Chak
Sam Chak el 27 de Mzo. de 2022
You are welcome, @Aung Moe Zaw
There are two vectors in y. To plot only the first vector, then replace
plot(t, y, t, x1)
with
plot(t, y(:,1), t, x1)
grid on
xlabel('Time, t')
ylabel('y_{1} and x_{1}')
title('Time response of y_{1}, perturbed by x_{1}')
legend('y_{1}', 'x_{1}')
Aung Moe Zaw
Aung Moe Zaw el 27 de Mzo. de 2022
Thank you very much!!

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Preguntada:

el 27 de Mzo. de 2022

Comentada:

el 27 de Mzo. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by