function u=solve(coordinates,elements,dirichlet,a,b,c,f,u_d)

[A,B,C,rhs] = assemble(coordinates,elements,a,b,c,f);

M=A+B+C;

% Dirichlet Bedingungen
u = zeros(size(A,2),1);
u(dirichlet)=u_d;

% Modifiziere rechte Seite für Dirichlet Daten
rhs=rhs-M*u;

% Loese das LGS nur an den inneren Knoten 
freenodes=setdiff(1:size(elements,1)+1,dirichlet); 
u(freenodes)=M(freenodes,freenodes)\rhs(freenodes);
