function skyt_ex1
% L?ser et to punkts randverdiproblem med skytemetoden.

% Definisjonsomraadet og randverdier. 
alpha = 17;
beta = 43/3;
a = 1;
b = 3;

% Gitter for utskrift. 
N = 100; h = 1/N; x = [a:h:b];

z = (beta-alpha)/(b-a);          % startverdi for iterasjonene
options = odeset('AbsTol',1.e-8,'RelTol',1.e-8); % Toleranse for ODE-loeser. 
format long

for n=1:10;
  v0 = [alpha,z,0,1];
  [x,vt] = ode45(@f,x,v0,options);
  z = z-(vt(end,1)-beta)/vt(end,3)   % En Newton iterasjon.
  
  % Stoppkriterium for iterasjonene. 
  if abs(vt(end,1)-beta) < 1.e-6
      break
  end
end
u = vt(:,1);

hold off;


function vp = f(x,v)
% De to 2. ordens ligningene, skrevet om som et system av 1.ordens
% ligninger. 
vp = zeros(4,1);
vp(1) = v(2);
vp(2) = (32+2*x^3-v(1)*v(2))/8;
vp(3) = v(4);
vp(4) = -(v(2)*v(3)+v(1)*v(4))/8;
