function u = FDM(f,p,q,r,a,b,N,alpha,beta)

u=zeros(N+2,1);

h=(b-a)/(N+1);
%Hier nehmen wir die Schrittweite h/2 auch noch mit rein!
t=linspace(a,b,2*(N+1)+1);

P=p(t(2:2:end)); %Werte an den Zwischenstellen aus!
Q=q(t(1:2:end));
R=r(t(1:2:end));

A=spdiags( [-P(2:N+1)-(1/2)*h*Q(3:N+2) P(1:N)+P(2:N+1)+(h^2)*R(2:N+1) -P(1:N)+(1/2)*h*Q(1:N)],-1:1,N,N);

b=f(t(3:2:end-2));
b(1)=b(1)+(1/(h^2))*P(1)*alpha+(1/(2*h))*Q(2)*alpha;
b(N)=b(N)+(1/(h^2))*P(N+1)*beta-(1/(2*h))*Q(N+1)*beta;

u(2:N+1)=h^2*(A\b);

u(1)=alpha;
u(N+2)=beta;