function [ymod,dyda] = funcs(x,a,ma,ndata)

% Eingabe-Parameter:  x  Zeilenvektor der x-Komponenten der geg. Punkte
%                     ndata  Zahl der geg. Punkte
%                     ma     Zahl der Fit-Parameter
%                     a      Zeilenvektor der guessed values fuer die Fit-Paramter

%  Ausgabe-Parameter:  ymod    Zeilenvektor mit den ndata Werten der Modellfunktion
%                      dyda    Matrix (1. Index=Nummer des Parameters,
%                                      2. Index=Nummer des Datenpunktes) mit den partiellen
%                              Ableitungen der Modellfunktion nach den Modellparametern


% n=a(1) * p^2 *(a(2) -Es)^2
% Es = sqrt(p^2 * c^2 + m0^2*c^4) - m0 * c^2

m0=9.109 * 10^(-31);  %kg
c= 300000000;

p = x;

dyda = zeros(ma,ndata);
    for j=1:ndata       % Schleife über die Messpunkte- numer
        Es = sqrt(p(j)^2 * c^2 + m0^2*c^4) - m0 * c^2;
        
        %Ableitung nach den parametern
        dyda(1,j) = p(j)^2 *(a(2) - Es)^2;
        dyda(2,j) = a(1) * p(j)^2 * 2*(-a(2) + Es);
	       
        %y werte
	ymod(j) = a(1) * p(j)^2 *(a(2) - Es)^2;
    end
ymod = ymod';  