function [S, M, R, v, r] = PoissonAssembler1D(p);

N = length(p);  % Antal nodpunkter 

S = zeros(N,N);    % styvhetsmatris
M = zeros(N,N);    % massmatris
R = zeros(N,N);    % randmatris
v = zeros(N,1);    % lastvektor
r = zeros(N,1);    % randvektor
 
for i = 1:(N-1)        % loopa över delintervallen.
 
  h = p(i+1) - p(i);   % Delintervallets längd.
                       
  % Du får själv komplettera koden för assembleringen!
  
  S(i,i)     = S(i,i)     + ???   
  S(i,i+1)   = S(i,i+1)   + ???       
  S(i+1,i)   = S(i+1,i)   + ???        
  S(i+1,i+1) = S(i+1,i+1) + ???    
    
  v(i)   = v(i)   + ??? 
  v(i+1) = v(i+1) + ???

  M(i,i)     = M(i,i)     + ???
  M(i,i+1)   = M(i,i+1)   + ??? 
  M(i+1,i)   = M(i+1,i)   + ???
  M(i+1,i+1) = M(i+1,i+1) + ???
  
end

% Bidrag från randpunkterna:

R(1,1) = 1e4; % I punkten x = a är gamma = 1e4, g_N = 0.0 och g_D = 0.0.

r(1)  = 1e4 * 0.0;  

R(N,N) = 1e4; % I punkten x = b är gamma = 1e4, g_N = 0.0 och g_D = 0.0.

r(N)   = 1e4 * 0.0;         

% subroutines -----------------------------------------------------------------

function y = f(x)
y = x-x.^2+2;
