%FY1001/TFY4145 Mekanisk fysikk hoesten 2012.
%Oving 3, oppgave 5: Numerisk bestemmelse av
%vinkler for 4 like masser som henger ekvidistant
%paa ei snor.
%
clear all;
format long;
%N = max antall iterasjoner
N = 100;
%L = snoras lengde
L = 1.0;
%D = lengden mellom festepunktene
D = 0.9;
%Vi har utledet en ligning for x = cos(alpha):
%(L/5)*(1+2x+4x/sqrt(1+3x^2))=D.
%Denne ligningen kan omformes til en 4.gradsligning i x,
%og paa sett og vis loeses analytisk (se Rottmann). Men loesningen
%blir stygg og gir lite innsikt. Derfor vil vi loese problemet numerisk.
%En mulighet (det finnes flere!) er da aa omforme ligningen til
%formen x = f(x), sette inn en startverdi
%x_0 paa hoeyre side, regne ut f(x_0) og sette x_1 = f(x_0), deretter
%regne ut f(x_1) og sette x_2 = f(x_1) osv. Hvis dette "iterative
%skjemaet" konvergerer, vil vi etter N iterasjoner med god tilnaermelse
%ha x_N = x_(N-1), som er loesningen.
%Setter startverdi for x: x0 = 0.5;
x0 = 0.5;
%Setter startverdi for feilen lik 1.0 slik at while-loekken starter
error = 1.0;
%Setter max feil i x lik 1e-6
maxerror = 1e-6;
j = 0;
while (error > maxerror && j < N)
    x1 = .....;
    error = abs(x1-x0);
    x0 = x1;
    j = j+1;
end;
%gi  beskjed dersom vi har brukt opp max antall iterasjoner
%uten at feilen har blitt mindre enn maxerror
if j == N;
    fprintf('Max antall iterasjoner brukt opp.\n');
else
    fprintf('Vinkelen alpha er %3.12f',acos(x0)*180/pi);
    fprintf(' grader.\n');
end;
alpha = acos(x0);
%Du kan naa bestemme vinkelen beta, samt de 3 snordragene (i enheter av mg).
