function [params, errors] = descent(xdata, ydata, pstart)
    mingradient = 0.1;
    eps = 0.01;
    
    errors = [];
    params = pstart;
    count = 1;
    gradient = [100.0, 100.0];
    while norm(gradient) > mingradient
        gradient = lsqGradient(params, xdata, ydata);
        errors(count) = lsqError(params, xdata, ydata);
        params = params - eps .* gradient; 
        count = count + 1;
    end
end