function qRes=findMinQ(X,Y,alpha,beta,q);

addition=0.01;
% беремо ліву границю q - умовно qLeft=0.001
qLeft=1.001; 
YLeft=qGaussian(X,qLeft,beta,alpha);

% шукаємо суму нев'язок
devLeft=getTailDeviation(Y,YLeft);

% беремо праву границю q: qRight=3
qRight=3; 
YRight=qGaussian(X,qRight,beta,alpha);

% шукаємо суму нев'язок
devRight=getTailDeviation(Y,YRight);

% застосовуємо пошук на інтервалі (qLeft,qRight)
% методом ділення пополам до точності
epsylon=0.001;
while qRight-qLeft>epsylon
    q1=qLeft+(qRight-qLeft)/3;
    Y1=qGaussian(X,q1,beta,alpha);
    dev1=getTailDeviation(Y,Y1);
    
    q2=qRight-(qRight-qLeft)/3;
    Y2=qGaussian(X,q2,beta,alpha);
    dev2=getTailDeviation(Y,Y2);
    if dev1>dev2
        qLeft=q1;
    else
        qRight=q2;
    end
end

qRes=(qLeft+qRight)/2;
