function []= servacykl2(Fi0,R,L,C,P, roz)
% Vypocte odchylky desky cykliky

%R = 12;
%L = 25;
%P = 6;
%Fi0 = 13;
%roz = 30;
%Vypocet zbyvajciho rozmeru
S=R*sin(pi*Fi0/180)+(L^2-(R*cos(pi*Fi0/180)+P-C)^2)^0.5;
Fi = [Fi0-roz:1:Fi0+roz];

size=length(Fi);
sinFi = sin(pi*Fi/180);
cosFi = cos(pi*Fi/180);
sinFi0 = sin(pi*Fi0/180);
cosFi0 = cos(pi*Fi0/180);
tanFi=tan(1/2.*Fi*pi/180);
tanFi0=tan(1/2.*Fi0*pi/180);
ypaka0 = R*sinFi0;
ypaka = R*sinFi;
xpaka = R*cosFi;
%Vypocet predni cykliky
cyklUpred = 2.*atan(((- C.^4*tanFi.^4 - 2.*C.^4.*tanFi.^2 - C.^4 + 2.*C.^2.*L.^2.*tanFi.^4 + 4.*C.^2.*L.^2.*tanFi.^2 + 2.*C.^2.*L.^2 + 2.*C.^2.*P.^2.*tanFi.^4 + 4.*C.^2.*P.^2.*tanFi.^2 + 2.*C.^2.*P.^2 - 4.*C.^2.*P.*R.*tanFi.^4 + 4.*C.^2.*P.*R + 2.*C.^2.*R.^2.*tanFi.^4 + 4.*C.^2.*R.^2.*tanFi.^2 + 2.*C.^2.*R.^2 - 8.*C.^2.*R.*S.*tanFi.^3 - 8.*C.^2.*R.*S.*tanFi + 2.*C.^2.*S.^2.*tanFi.^4 + 4.*C.^2.*S.^2.*tanFi.^2 + 2.*C.^2.*S.^2 - L.^4.*tanFi.^4 - 2.*L.^4.*tanFi.^2 - L.^4 + 2.*L.^2.*P.^2.*tanFi.^4 + 4.*L^2.*P^2.*tanFi.^2 + 2.*L.^2.*P.^2 - 4.*L.^2.*P.*R.*tanFi.^4 + 4.*L.^2.*P.*R + 2.*L.^2.*R.^2.*tanFi.^4 + 4.*L.^2.*R.^2.*tanFi.^2 + 2.*L.^2.*R.^2 - 8.*L.^2.*R.*S.*tanFi.^3 - 8.*L.^2.*R.*S.*tanFi + 2.*L.^2.*S.^2.*tanFi.^4 + 4.*L.^2.*S.^2.*tanFi.^2 + 2.*L.^2.*S.^2 - P.^4.*tanFi.^4 - 2.*P.^4.*tanFi.^2 - P.^4 + 4.*P.^3.*R.*tanFi.^4 - 4.*P.^3.*R - 6.*P.^2.*R.^2.*tanFi.^4 + 4.*P.^2.*R.^2.*tanFi.^2 - 6.*P.^2.*R.^2 + 8.*P.^2.*R.*S.*tanFi.^3 + 8.*P.^2.*R.*S.*tanFi - 2.*P.^2.*S.^2.*tanFi.^4 - 4.*P.^2.*S.^2.*tanFi.^2 - 2.*P.^2.*S.^2 + 4.*P.*R.^3.*tanFi.^4 - 4.*P.*R.^3 - 16.*P.*R.^2.*S.*tanFi.^3 + 16.*P.*R.^2.*S.*tanFi + 4.*P.*R.*S.^2.*tanFi.^4 - 4.*P.*R.*S.^2 - R.^4.*tanFi.^4 - 2.*R.^4.*tanFi.^2 - R.^4 + 8.*R.^3.*S.*tanFi.^3 + 8.*R.^3.*S.*tanFi - 2.*R.^2.*S.^2.*tanFi.^4 - 20.*R.^2.*S.^2.*tanFi.^2 - 2.*R.^2.*S.^2 + 8.*R.*S.^3.*tanFi.^3 + 8.*R.*S.^3.*tanFi - S.^4.*tanFi.^4 - 2.*S.^4.*tanFi.^2 - S.^4).^(1/2) - 2.*C.*S + 4.*C.*R.*tanFi - 2.*C.*S.*tanFi.^2)./(C.^2.*tanFi.^2 + C.^2 + 2.*C.*P.*tanFi.^2 + 2.*C.*P - 2.*C.*R.*tanFi.^2 + 2.*C.*R - L.^2.*tanFi.^2 - L.^2 + P.^2.*tanFi.^2 + P.^2 - 2.*P.*R.*tanFi.^2 + 2.*P.*R + R.^2.*tanFi.^2 + R.^2 - 4.*R.*S.*tanFi + S.^2.*tanFi.^2 + S.^2)); %+ 2.*pi;
xupred = asin((S+C.*sin(cyklUpred)-ypaka)/L);


% vypocet idealni cykliky
cyklU=sin((ypaka-ypaka0)./C);
%smernice
alfapred = ((2.*(tanFi0.^2 + 1).*(- C.^4.*tanFi0.^3 - C.^4.*tanFi0 + 2.*C.^2.*L.^2.*tanFi0.^3 + 2.*C.^2.*L.^2.*tanFi0 + 2.*C.^2.*P.^2.*tanFi0.^3 + 2.*C.^2.*P.^2.*tanFi0 - 4.*C.^2.*P.*R.*tanFi0.^3 + 2.*C.^2.*R.^2.*tanFi0.^3 + 2.*C.^2.*R.^2.*tanFi0 - 6.*C.^2.*R.*S.*tanFi0.^2 - 2.*C.^2.*R.*S + 2.*C.^2.*S.^2.*tanFi0.^3 + 2.*C.^2.*S.^2.*tanFi0 - L.^4.*tanFi0.^3 - L.^4.*tanFi0 + 2.*L.^2.*P.^2.*tanFi0.^3 + 2.*L.^2.*P.^2.*tanFi0 - 4.*L.^2.*P.*R.*tanFi0.^3 + 2.*L.^2.*R.^2.*tanFi0.^3 + 2.*L.^2.*R.^2.*tanFi0 - 6.*L.^2.*R.*S.*tanFi0.^2 - 2.*L.^2.*R.*S + 2.*L.^2.*S.^2.*tanFi0.^3 + 2.*L.^2.*S.^2.*tanFi0 - P.^4.*tanFi0.^3 - P.^4.*tanFi0 + 4.*P.^3.*R.*tanFi0.^3 - 6.*P.^2.*R.^2.*tanFi0.^3 + 2.*P.^2.*R.^2.*tanFi0 + 6.*P.^2.*R.*S.*tanFi0.^2 + 2.*P.^2.*R.*S - 2.*P.^2.*S.^2.*tanFi0.^3 - 2.*P.^2.*S.^2.*tanFi0 + 4.*P.*R.^3.*tanFi0.^3 - 12.*P.*R.^2.*S.*tanFi0.^2 + 4.*P.*R.^2.*S + 4.*P.*R.*S.^2.*tanFi0.^3 - R.^4.*tanFi0.^3 - R.^4.*tanFi0 + 6.*R.^3.*S.*tanFi0.^2 + 2.*R.^3.*S - 2.*R.^2.*S.^2.*tanFi0.^3 - 10.*R.^2.*S.^2.*tanFi0 + 6.*R.*S.^3.*tanFi0.^2 + 2.*R.*S.^3 - S.^4.*tanFi0.^3 - S.^4.*tanFi0)./(- C.^4.*tanFi0.^4 - 2.*C.^4.*tanFi0.^2 - C.^4 + 2.*C.^2.*L.^2.*tanFi0.^4 + 4.*C.^2.*L.^2.*tanFi0.^2 + 2.*C.^2.*L.^2 + 2.*C.^2.*P.^2.*tanFi0.^4 + 4.*C.^2.*P.^2.*tanFi0.^2 + 2.*C.^2.*P.^2 - 4.*C.^2.*P.*R.*tanFi0.^4 + 4.*C.^2.*P.*R + 2.*C.^2.*R.^2.*tanFi0.^4 + 4.*C.^2.*R.^2.*tanFi0.^2 + 2.*C.^2.*R.^2 - 8.*C.^2.*R.*S.*tanFi0.^3 - 8.*C.^2.*R.*S.*tanFi0 + 2.*C.^2.*S.^2.*tanFi0.^4 + 4.*C.^2.*S.^2.*tanFi0.^2 + 2.*C.^2.*S.^2 - L.^4.*tanFi0.^4 - 2.*L.^4.*tanFi0.^2 - L.^4 + 2.*L.^2.*P.^2.*tanFi0.^4 + 4.*L.^2.*P.^2.*tanFi0.^2 + 2.*L.^2.*P.^2 - 4.*L.^2.*P.*R.*tanFi0.^4 + 4.*L.^2.*P.*R + 2.*L.^2.*R.^2.*tanFi0.^4 + 4.*L.^2.*R.^2.*tanFi0.^2 + 2.*L.^2.*R.^2 - 8.*L.^2.*R.*S.*tanFi0.^3 - 8.*L.^2.*R.*S.*tanFi0 + 2.*L.^2.*S.^2.*tanFi0.^4 + 4.*L.^2.*S.^2.*tanFi0.^2 + 2.*L.^2.*S.^2 - P.^4.*tanFi0.^4 - 2.*P.^4.*tanFi0.^2 - P.^4 + 4.*P.^3.*R.*tanFi0.^4 - 4.*P.^3.*R - 6.*P.^2.*R.^2.*tanFi0.^4 + 4.*P.^2.*R.^2.*tanFi0.^2 - 6.*P.^2.*R.^2 + 8.*P.^2.*R.*S.*tanFi0.^3 + 8.*P.^2.*R.*S.*tanFi0 - 2.*P.^2.*S.^2.*tanFi0.^4 - 4.*P.^2.*S.^2.*tanFi0.^2 - 2.*P.^2.*S.^2 + 4.*P.*R.^3.*tanFi0.^4 - 4.*P.*R.^3 - 16.*P.*R.^2.*S.*tanFi0.^3 + 16.*P.*R.^2.*S.*tanFi0 + 4.*P.*R.*S.^2.*tanFi0.^4 - 4.*P.*R.*S.^2 - R.^4.*tanFi0.^4 - 2.*R.^4.*tanFi0.^2 - R.^4 + 8.*R.^3.*S.*tanFi0.^3 + 8.*R.^3.*S.*tanFi0 - 2.*R.^2.*S.^2.*tanFi0.^4 - 20.*R.^2.*S.^2.*tanFi0.^2 - 2.*R.^2.*S.^2 + 8.*R.*S.^3.*tanFi0.^3 + 8.*R.*S.^3.*tanFi0 - S.^4.*tanFi0.^4 - 2.*S.^4.*tanFi0.^2 - S.^4).^(1./2) + 4.*C.*R.*(tanFi0.^2 + 1) - 4.*C.*S.*tanFi0.*(tanFi0.^2 + 1))./(C.^2.*tanFi0.^2 + C.^2 + 2.*C.*P.*tanFi0.^2 + 2.*C.*P - 2.*C.*R.*tanFi0.^2 + 2.*C.*R - L.^2.*tanFi0.^2 - L.^2 + P.^2.*tanFi0.^2 + P.^2 - 2.*P.*R.*tanFi0.^2 + 2.*P.*R + R.^2.*tanFi0.^2 + R.^2 - 4.*R.*S.*tanFi0 + S.^2.*tanFi0.^2 + S.^2) - 2.*(tanFi0.^2 + 1).*((- C.^4.*tanFi0.^4 - 2.*C.^4.*tanFi0.^2 - C.^4 + 2.*C.^2.*L.^2.*tanFi0.^4 + 4.*C.^2.*L.^2.*tanFi0.^2 + 2.*C.^2.*L.^2 + 2.*C.^2.*P.^2.*tanFi0.^4 + 4.*C.^2.*P.^2.*tanFi0.^2 + 2.*C.^2.*P.^2 - 4.*C.^2.*P.*R.*tanFi0.^4 + 4.*C.^2.*P.*R + 2.*C.^2.*R.^2.*tanFi0.^4 + 4.*C.^2.*R.^2.*tanFi0.^2 + 2.*C.^2.*R.^2 - 8.*C.^2.*R.*S.*tanFi0.^3 - 8.*C.^2.*R.*S.*tanFi0 + 2.*C.^2.*S.^2.*tanFi0.^4 + 4.*C.^2.*S.^2.*tanFi0.^2 + 2.*C.^2.*S.^2 - L.^4.*tanFi0.^4 - 2.*L.^4.*tanFi0.^2 - L.^4 + 2.*L.^2.*P.^2.*tanFi0.^4 + 4.*L.^2.*P.^2.*tanFi0.^2 + 2.*L.^2.*P.^2 - 4.*L.^2.*P.*R.*tanFi0.^4 + 4.*L.^2.*P.*R + 2.*L.^2.*R.^2.*tanFi0.^4 + 4.*L.^2.*R.^2.*tanFi0.^2 + 2.*L.^2.*R.^2 - 8.*L.^2.*R.*S.*tanFi0.^3 - 8.*L.^2.*R.*S.*tanFi0 + 2.*L.^2.*S.^2.*tanFi0.^4 + 4.*L.^2.*S.^2.*tanFi0.^2 + 2.*L.^2.*S.^2 - P.^4.*tanFi0.^4 - 2.*P.^4.*tanFi0.^2 - P.^4 + 4.*P.^3.*R.*tanFi0.^4 - 4.*P.^3.*R - 6.*P.^2.*R.^2.*tanFi0.^4 + 4.*P.^2.*R.^2.*tanFi0.^2 - 6.*P.^2.*R.^2 + 8.*P.^2.*R.*S.*tanFi0.^3 + 8.*P.^2.*R.*S.*tanFi0 - 2.*P.^2.*S.^2.*tanFi0.^4 - 4.*P.^2.*S.^2.*tanFi0.^2 - 2.*P.^2.*S.^2 + 4.*P.*R.^3.*tanFi0.^4 - 4.*P.*R.^3 - 16.*P.*R.^2.*S.*tanFi0.^3 + 16.*P.*R.^2.*S.*tanFi0 + 4.*P.*R.*S.^2.*tanFi0.^4 - 4.*P.*R.*S.^2 - R.^4.*tanFi0.^4 - 2.*R.^4.*tanFi0.^2 - R.^4 + 8.*R.^3.*S.*tanFi0.^3 + 8.*R.^3.*S.*tanFi0 - 2.*R.^2.*S.^2.*tanFi0.^4 - 20.*R.^2.*S.^2.*tanFi0.^2 - 2.*R.^2.*S.^2 + 8.*R.*S.^3.*tanFi0.^3 + 8.*R.*S.^3.*tanFi0 - S.^4.*tanFi0.^4 - 2.*S.^4.*tanFi0.^2 - S.^4).^(1./2) - 2.*C.*S + 4.*C.*R.*tanFi0 - 2.*C.*S.*tanFi0.^2).*(tanFi0.*C.^2 + 2.*tanFi0.*C.*P - 2.*tanFi0.*C.*R - tanFi0.*L.^2 + tanFi0.*P.^2 - 2.*tanFi0.*P.*R + tanFi0.*R.^2 - 2.*R.*S + tanFi0.*S.^2)./(C.^2.*tanFi0.^2 + C.^2 + 2.*C.*P.*tanFi0.^2 + 2.*C.*P - 2.*C.*R.*tanFi0.^2 + 2.*C.*R - L.^2.*tanFi0.^2 - L.^2 + P.^2.*tanFi0.^2 + P.^2 - 2.*P.*R.*tanFi0.^2 + 2.*P.*R + R.^2.*tanFi0.^2 + R.^2 - 4.*R.*S.*tanFi0 + S.^2.*tanFi0.^2 + S.^2).^2)./(((- C.^4.*tanFi0.^4 - 2.*C.^4.*tanFi0.^2 - C.^4 + 2.*C.^2.*L.^2.*tanFi0.^4 + 4.*C.^2.*L.^2.*tanFi0.^2 + 2.*C.^2.*L.^2 + 2.*C.^2.*P.^2.*tanFi0.^4 + 4.*C.^2.*P.^2.*tanFi0.^2 + 2.*C.^2.*P.^2 - 4.*C.^2.*P.*R.*tanFi0.^4 + 4.*C.^2.*P.*R + 2.*C.^2.*R.^2.*tanFi0.^4 + 4.*C.^2.*R.^2.*tanFi0.^2 + 2.*C.^2.*R.^2 - 8.*C.^2.*R.*S.*tanFi0.^3 - 8.*C.^2.*R.*S.*tanFi0 + 2.*C.^2.*S.^2.*tanFi0.^4 + 4.*C.^2.*S.^2.*tanFi0.^2 + 2.*C.^2.*S.^2 - L.^4.*tanFi0.^4 - 2.*L.^4.*tanFi0.^2 - L.^4 + 2.*L.^2.*P.^2.*tanFi0.^4 + 4.*L.^2.*P.^2.*tanFi0.^2 + 2.*L.^2.*P.^2 - 4.*L.^2.*P.*R.*tanFi0.^4 + 4.*L.^2.*P.*R + 2.*L.^2.*R.^2.*tanFi0.^4 + 4.*L.^2.*R.^2.*tanFi0.^2 + 2.*L.^2.*R.^2 - 8.*L.^2.*R.*S.*tanFi0.^3 - 8.*L.^2.*R.*S.*tanFi0 + 2.*L.^2.*S.^2.*tanFi0.^4 + 4.*L.^2.*S.^2.*tanFi0.^2 + 2.*L.^2.*S.^2 - P.^4.*tanFi0.^4 - 2.*P.^4.*tanFi0.^2 - P.^4 + 4.*P.^3.*R.*tanFi0.^4 - 4.*P.^3.*R - 6.*P.^2.*R.^2.*tanFi0.^4 + 4.*P.^2.*R.^2.*tanFi0.^2 - 6.*P.^2.*R.^2 + 8.*P.^2.*R.*S.*tanFi0.^3 + 8.*P.^2.*R.*S.*tanFi0 - 2.*P.^2.*S.^2.*tanFi0.^4 - 4.*P.^2.*S.^2.*tanFi0.^2 - 2.*P.^2.*S.^2 + 4.*P.*R.^3.*tanFi0.^4 - 4.*P.*R.^3 - 16.*P.*R.^2.*S.*tanFi0.^3 + 16.*P.*R.^2.*S.*tanFi0 + 4.*P.*R.*S.^2.*tanFi0.^4 - 4.*P.*R.*S.^2 - R.^4.*tanFi0.^4 - 2.*R.^4.*tanFi0.^2 - R.^4 + 8.*R.^3.*S.*tanFi0.^3 + 8.*R.^3.*S.*tanFi0 - 2.*R.^2.*S.^2.*tanFi0.^4 - 20.*R.^2.*S.^2.*tanFi0.^2 - 2.*R.^2.*S.^2 + 8.*R.*S.^3.*tanFi0.^3 + 8.*R.*S.^3.*tanFi0 - S.^4.*tanFi0.^4 - 2.*S.^4.*tanFi0.^2 - S.^4).^(1./2) - 2.*C.*S + 4.*C.*R.*tanFi0 - 2.*C.*S.*tanFi0.^2).^2./(C.^2.*tanFi0.^2 + C.^2 + 2.*C.*P.*tanFi0.^2 + 2.*C.*P - 2.*C.*R.*tanFi0.^2 + 2.*C.*R - L.^2.*tanFi0.^2 - L.^2 + P.^2.*tanFi0.^2 + P.^2 - 2.*P.*R.*tanFi0.^2 + 2.*P.*R + R.^2.*tanFi0.^2 + R.^2 - 4.*R.*S.*tanFi0 + S.^2.*tanFi0.^2 + S.^2).^2 + 1);
alfa=(R*cos((ypaka0)/C)*cosFi0)/C;
alfa0=R/C;
disp('smernice linerizace:')
disp(['idealni (pri Fi0=0): ' num2str(alfa0) '   idealni (pri Fi0=' num2str(Fi0) '): ' num2str(alfa)  '   idealni pred: ' num2str(alfapred)] )
%linerizovana cyklika
cyklUidealpred=alfapred.*(Fi-Fi0);
cyklUideal=alfa.*(Fi-Fi0);
cyklUideal0=alfa0.*(Fi-Fi0);
%statisticke odchylky
DU0=cyklU*180/pi-cyklUideal0;
xY0=sum(DU0)/size;
odY0 = (sum((DU0-xY0).^2)/size).^0.5;
disp(['U-Uideal0 chyba ' num2str(xY0) '  ' num2str(odY0) ' min' num2str(min(DU0)) ' max' num2str(max(DU0)) ' dmax' num2str(max(DU0)-min(DU0))])
DUpred0=cyklUpred*180/pi-cyklUideal0;
xYpred0=sum(DUpred0)/size;
odYpred0 = (sum((DUpred0-xYpred0).^2)/size).^0.5;
disp(['Upred-Uideal0 chyba ' num2str(xYpred0) '  ' num2str(odYpred0) ' min' num2str(min(DUpred0)) ' max' num2str(max(DUpred0)) ' dmax' num2str(max(DUpred0)-min(DUpred0))])
DU=cyklU*180/pi-cyklUideal;
xY=sum(DU)/size;
odY = (sum((DU-xY).^2)/size).^0.5;
disp(['U-Uideal chyba ' num2str(xY) '  ' num2str(odY) ' min' num2str(min(DU)) ' max' num2str(max(DU)) ' dmax' num2str(max(DU)-min(DU))])
DUpred=cyklUpred*180/pi-cyklUideal;
xYpred=sum(DUpred)/size;
odYpred = (sum((DUpred-xYpred).^2)/size).^0.5;
disp(['Upred-Uideal chyba ' num2str(xYpred) '  ' num2str(odYpred) ' min' num2str(min(DUpred)) ' max' num2str(max(DUpred)) ' dmax' num2str(max(DUpred)-min(DUpred))])
%grafy
figure()
plot(Fi,cyklU*180/pi,Fi,cyklUpred*180/pi,Fi,cyklUideal,Fi,cyklUidealpred,Fi,cyklUideal0)
title('Vychylky cykliky');
xlabel('Fi');
ylabel('Vychylka C');
legend('Zjednodusena cyklika','Predni','Linearizovane zjednoduseny','Linerazivone predni','Linerizovany pri Fi=0');
plot(Fi,DU,Fi,DUpred)
title('Odchylky cykliky(zaklad linearizovana zjednodusena cykl.)');
xlabel('Fi');
ylabel('chyba C');
legend('Zjednodusena cyklika','Predni');
figure()
plot(Fi,cyklU*180/pi-cyklUidealpred,Fi,cyklUpred*180/pi-cyklUidealpred)
title('Odchylky cykliky(zaklad linearizovana predni)');
xlabel('Fi');
ylabel('chyba C');
legend('Zjednoduseny cyklika','Predni');
figure()
plot(Fi,(cyklU-cyklUpred)*180/pi)
title('Odchylky cykliky mezisebou');
xlabel('Fi');
ylabel('chyba C');
legend('Predni ku linearizovane cykl.');
figure()
plot(Fi,xupred*180/pi)
title('Mezi uhly');
xlabel('Fi');
ylabel('Uhel');
legend('Predni');
%animace

figure()
axis([-20 25 -10 35])
hold on
for k=1:5:length(Fi),
    sinXu = sin(xupred(k));
    cosXu = cos(xupred(k));
    sinC = sin(cyklUpred(k));
    cosC = cos(cyklUpred(k));
    plot([C*cosC-P -P -P 0 xpaka(k) xpaka(k)-L*cosXu],[S+C*sinC S 0 0 ypaka(k) ypaka(k)+L*sinXu])
end
title('Animace predni');