%% Matlabprogram som löser balkexemplet.

clear all

% Def konstanter i problemet
L = 2;
r=2e-2;
E=2e11;
I=pi*r^4/4;
P=100; 
Err=[];
Dx=[];

% Diskretisera balken
N=32;                     % antal delintervall
h=L/(N+1);                % steglängden

x=[0:h:L]';               % räkna ut x-värdena x_i=0+i*h
                          % Totalt N+2 värden, de inre x-värdena finns i 
                          % x(2:N+1), N stycken 

% Högerledet

for i=1:N+2               % Totalt antal punkter är N+2 st 
  if x(i)<=L/2
    M(i)=-P*x(i)/2;
  else
    M(i)=-P*L/2*(1-x(i)/L);
  end
end

b= -M(2:end-1)'*h^2/E/I;  % Behöver bara högerledet för de inre punkterna



% Skapa matrisen A som blir av storlek N x N (antal inre punkter)
e = ones(N,1);
A = spdiags([e -2*e e], -1:1, N, N);

% Lös systemet            % w innehåller N fyra obekanta värden
                          % på utböjningen 
w=A\b;

w=[0;w;0];                % lägg till randvärdena

figure(55)
plot(x,w,'-d'),hold on   % rita upp lösningen

% Skriv ut värdet på maximala nedböjningen

w_max=max(abs(w))



% N=4:   6.3662e-04
% N=8:   6.5496e-04
% N=16:  6.6085e-04
% N=32:  6.6254e-04



