Solve 2nd order ODE using Euler Method

75 vues (au cours des 30 derniers jours)
Matt
Matt le 27 Sep 2022
Commenté : Matt le 4 Oct 2022
VERY new to Matlab...
Trying to implement code to use Euler method for solving second order ODE.
Equation:
x'' + 2*z*w*x' + w*x = 2*sin(2*pi*2*t)
z and w are constants. "t" is time.
Any help would be great.
Thanks!
  5 commentaires
James Tursa
James Tursa le 4 Oct 2022
@Matt - FYI, when you get errors, it is best to post the entire error message along with your code. Regardless, see my answer below ...
Matt
Matt le 4 Oct 2022
Will do. Really new here so just learning the ways about this. I'll be back! :-)

Connectez-vous pour commenter.

Réponse acceptée

James Tursa
James Tursa le 4 Oct 2022
Modifié(e) : James Tursa le 4 Oct 2022
You start your loop with i=1, but that means your x_d(i-1) will be x_d(0), an invalid index, hence the error. You need to set initial values for x_d(1) and x(1), and then have your starting loop index be 2. E.g.,
x(1) = initial x value
x_d(1) = initial xdot value
for i=2:n1 % start loop index at 2
x_dd(i-1) = use (i-1) indexes on everything on rhs
x_d(i) = use (i-1) indexes on everything on rhs
x(i) = use (i-1) indexes on everything on rhs
  1 commentaire
Matt
Matt le 4 Oct 2022
Worked like a charm! Thank you.

Connectez-vous pour commenter.

Plus de réponses (1)

Davide Masiello
Davide Masiello le 27 Sep 2022
Modifié(e) : Davide Masiello le 27 Sep 2022
Hi Matt - a second order ODE can be decomposed into two first order ODEs.
The secret is to set 2 variables y as
The you have
An example code is
clear,clc
tspan = [0,1]; % integrates between times 0 and 1
x0 = [1 0]; % initial conditions for x and dx/dt
[t,X] = ode15s(@odeFun,tspan,x0); % passes functions to ODE solver
x = X(:,1);
dxdt = X(:,2);
plot(t,x)
function dydt = odeFun(t,y)
z = 1;
w = 1;
dydt(1,1) = y(2);
dydt(2,1) = 2*z*w*y(2)-w*y(1)+2*sin(2*pi*2*t);
end
  1 commentaire
Davide Masiello
Davide Masiello le 27 Sep 2022
For more info, I suggest reading the documentation at the following link.

Connectez-vous pour commenter.

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by