2nd order ode using euler method
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MD RESHAD UL HOQUE
le 25 Nov 2018
Modifié(e) : Torsten
le 27 Nov 2018
The following second-order ODE is considered to be stiff: d2y/dx2=−1001dy/dx−1000?
initial conditions are: y(0)=1 and ?′(0)=0
What to solve the ODE using Euler’s method with implicit function.
I implemetd the above question using matlab. But implemented code gives this error.
![euler.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/196619/euler.png)
I attached the code. Can anyone suggest me about the bug of this code?.
function dy = dpnon(t, y)
dy = [y(2);-1000*y(1)-1001*y(2)];
end
function [x,y]=euler_explicit(f,xinit,yinit,xfinal,h)
n=(xfinal-xinit)/h;
% Initialization of x and y as column vectors
x=[xinit zeros(1,n)]; y=[yinit zeros(1,n)];
% Calculation of x and y
for i=1:n
x(i+1)=x(i)+h;
y(i+1)=y(i)+h*f(x(i),y(i));
end
end
xinit=0;
xfinal=3;
yinit=0;
h=.5;
euler_explicit(@dpnon,xinit,yinit,xfinal,h)
0 commentaires
Réponse acceptée
Torsten
le 26 Nov 2018
Modifié(e) : Torsten
le 27 Nov 2018
function main
xinit = 0;
xfinal = 3;
yinit = [1 0];
h = .5;
[x,y] = euler_explicit(@dpnon,xinit,yinit,xfinal,h)
plot(x,y(:,1))
end
function [x,y]=euler_explicit(f,xinit,yinit,xfinal,h)
n = (xfinal-xinit)/h;
% Initialization of x and y as column vectors
x = [xinit;zeros(n,1)];
y = [yinit;zeros(n,2)];
% Calculation of x and y
for i = 1:n
x(i+1) = x(i) + h;
y(i+1,:) = y(i,:) + h*f(x(i),y(i,:));
end
end
function dy = dpnon(t, y)
dy = [y(2),-1000*y(1)-1001*y(2)];
end
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Ordinary Differential Equations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!