Finite difference method to solve a nonlinear eqn?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Onur Metin Mertaslan
il 25 Mar 2022
Commentato: Onur Metin Mertaslan
il 25 Mar 2022
Hello,
I have a second order nonlinear question and I need to solve it for different times by using finite difference method but I don't know how to start it. I am quite new in Matlab. Is there anyone who can help me or at least show me a way to do this?
thank you
6 Commenti
Torsten
il 25 Mar 2022
g = 9.81;
L = 1.0;
T = 1.0;
dT = 0.01;
y_0 = pi/2;
v_0 = 0;
f = @(t,y)[y(2);-g/L*sin(y(1))];
tspan = 0:dT:T;
y0 = [y_0;v_0];
[t,y] = ode45(f,tspan,y0);
plot(t,y)
Risposta accettata
Torsten
il 25 Mar 2022
Modificato: Torsten
il 25 Mar 2022
g = 9.81;
L = 1.0;
T = 1.0;
dT = 0.01;
y_0 = pi/2;
v_0 = 0;
f = @(t,y)[y(2);-g/L*sin(y(1))];
tspan = 0:dT:T;
y0 = [y_0;v_0];
[t,y] = ode45(f,tspan,y0);
y_linear = v_0/sqrt(g/L)*sin(sqrt(g/L)*t) + y_0*cos(sqrt(g/L)*t);
plot(t,[y(:,1),y_linear])
3 Commenti
Torsten
il 25 Mar 2022
Modificato: Torsten
il 25 Mar 2022
The graph won't change because the dt is not the actual stepsize of the solver, but prescribes the output times for ode45. The stepsize is chosen by the solver and computed internally - you can't influence it because it's adaptively chosen and different for each time step to meet a prescribed error tolerance.
If you want a fixed-step solver to solve your equations for which you can prescribe the stepsize, you will have to program it on your own. E.g. explicit Euler is a simple one.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Nonlinear Control in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!