Reducing 2nd order ODE into coupled ODE. Solve using Euler Method and graph.
Afficher commentaires plus anciens
Hello, I'm trying to get a numerical solution for the given problem but I can't find a way to get it to work.
t0 = 0;
t = 5;
h = 0.1;
N = (t-t0)/h;
T = [t0:h:t;]';
Y = zeros(size(t));
Y(1) = 3;
%Start of Euler Method
syms y(t)
E = diff(y,2) + .1*diff(y) + .3*y == .02*y^3;
V = odeToVectorField(E)
for i = 1: N
P = (V(2))
Y(i+1) = Y(i) + h*P(i)
S = Y(i+1)
end
plot(T,Y,'o')
the error I'm getting is the following:
The following error occurred converting from sym to double:
Unable to convert expression into double array.
Error in Euler (line 19)
Y(i+1) = Y(i) + h*P(i)
Réponses (1)
Stephan
le 9 Déc 2019
tspan = [0 5]; % time span to integrate
y0 = [3 0]; % initial conditions
%Start of Euler Method
syms y(t)
E = diff(y,2) + .1*diff(y) + .3*y == .02*y^3;
V = odeToVectorField(E);
odefun = matlabFunction(V,'Vars',{'t','Y'});
[t,y] = ode45(odefun,tspan,y0);
plot(t,y,'o')
3 commentaires
Andres Cardenas
le 9 Déc 2019
Stephan
le 9 Déc 2019
The result of odeToVectorField is a symbolic expression. This can not be used in the way you want it.
Andres Cardenas
le 9 Déc 2019
Catégories
En savoir plus sur Mathematics dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!