You are on page 1of 1

function [ out] = runge_kutta(y0,y_10,h,en )

%out=RUNGE_KUTTA(y0,y_10,h,energy_val)
% fx(x,y,y1)
f=inline('-2*x*y');
y(1)=y0;
y1(1)=y_10;
n=1/h;
for i=1:n+1
x(i)=(i-1)*h;
end
for i=2:(1/h)+1
k1=h*f(y(i-1),en);
k2=h*f(y(i-1)+h/2*y1(i-1)+h/8*k1,en);
k3=h*f(y(i-1)+1/2*h*y1(i-1)+h/8*k1,en);
k4=h*f(y(i-1)+h*y1(i-1)+h/2*k3,en);
dy=h*(y1(i-1)+1/6*(k1+k2+k3));
dy1=1/6*(k1+2*k2+2*k3+k4);
y(i)=y(i-1)+dy;
y1(i)=y1(i-1)+dy1;
end
inte=0;
for i=2:1/h
if rem(i,2)==0
inte=inte+4/3*y(i)^2;
else
inte=inte+2/3*y(i)^2;
end
end
inte=h*(inte+1/3*(y(1)^2+y(1/h+1)^2));
out=y/sqrt(inte);
end

You might also like