2nd order ode using euler method

23 views (last 30 days)
MD RESHAD UL HOQUE
MD RESHAD UL HOQUE on 25 Nov 2018
Edited: Torsten on 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
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)

Accepted Answer

Torsten
Torsten on 26 Nov 2018
Edited: Torsten on 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

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!