How to solve and plot second order differential equation using ode45?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hey there
Im trying to solve and plot the following differential equation using ode45
x''=(-2k*x-2c*x'-r*omega*(cos(omega*t)+(r/L)*cos(2*omega*t))*m+x0*M)/M+m
where
M = 22
m = 0.9
k = 25000
c = 2
omega = 860
L = 0.2
r = 0.07
The starting conditions are :
x0=0
x'0=0
I've tried a bunch of different tutorials, but keep getting different error messages.
Any help is greatly appreciated, thank you!
4 Commenti
Dyuman Joshi
il 23 Nov 2023
Is the value of x0 that appears in the ODE the same as the value of x0 that is one of the initial conditions?
Also, you have defined the variable x_speed in the ODE function, but have not used it. Is there any particular use of that variable?
Risposte (1)
Fabio Freschi
il 23 Nov 2023
Modificato: Fabio Freschi
il 23 Nov 2023
In your code there is a mistake in the definition of x(1) and x(2)
I have made a few stylistic changes (parameters outside the function, use of implicit function) and the correction of the equations. In addition, I suggest to let ode45 to choose the timestep and keep the t vector provided as output for the plot
% clear variables, close all
x0 = [0 0];
tspan = [0 10];
% params
M = 22;
m = 0.9;
k = 25000;
c = 2;
omega = 860;
l = 0.2;
r = 0.07;
x0_speed = 0;
x0_pos = 0;
% implicit function
% changes here
% | |
% V V
dxdt = @(t,x)[x(2); (-2*k*x(1)-2*c*x(2)-r*omega^2*(cos(omega*t)+(r/l)*cos(2*omega*t))*m+x0_pos*(M-m))/M];
[t,x] = ode45(dxdt,tspan,x0);
figure
plot(t,x)
figure
plot(t,x)
xlim([0 0.5])
4 Commenti
Sam Chak
il 23 Nov 2023
Hi @Studentguy
I double-check. The original 2nd-order differential equation in your question
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1550427/image.png)
is slightly different from the state equation you defined in your code:
( - 2*k*x(1) - 2*c*x(2) - r*omega^2*( cos(omega*t) + (r/l)*cos(2*omega*t) )*m + x0_pos*(M - m) )/M;
Please clarify!
Fabio Freschi
il 23 Nov 2023
This is why I wrote my code according to the orignal equation (as stated in the comment)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!