function [mc, ec, Lckm,Lkm]=bpl_f(n,x,xpl,mtd,mnl,mpl,Ftd,Fnl,Fpl,delta,pp)
%vystupni parametry: Lckm - matice odlehlosti pro mc, ec; Lkm - matice
%odlehlosti pro vesaky
%funkce pro vypocet elasticity a kmitajici hmoty vedeni bez pridavaku

F=100;													%samozrejme parametry
g=9.81;


%vytvoreni hodnot Ftd/x a celk. matice elementarnich vah pro TD
%prvni prvek matic odpovida prvnimu vesaku definovaneho kotevniho useku,
%posledni prvek matice xtdc odpovida predposlednimu vesaku def. kot. useku
c=1;
for a=1:pp
    xtdc(c)=Ftd/x(a,2);                     %odlehlost za prvnim vesakem
    Mtdc(c)=(x(a,1)+x(a,2)/2)*mtd;          %prvni vesak drzi vahu troleje uz od bocaku
    if a==1
        Lkm(c)=x(a,1);                      %kumulativni odlehlost uplne prvniho vesaku
    else
        Lkm(c)=Lkm(c-1)+x(a-1,n(a-1)-1)+x(a,1);      %kumulativni odlehlost prvniho vesaku dalsich poli zabira i delku od posledniho vesaku predch. pole k bocaku
    end
    c=c+1;  
    for b=3:n(a)-2                  			%pro druhy az predposledni vesak
        xtdc(c)=Ftd/x(a,b);         			%prevracena hodnota odlehlosti do matice x
        Mtdc(c)=(x(a,b-1)+x(a,b))/2*mtd;    	%vaha pro TD
        Lkm(c)=Lkm(c-1)+x(a,b-1);           	%kumulativni odlehlost
        c=c+1;
    end
    Mtdc(c)=(x(a,n(a)-2)/2+x(a,n(a)-1))*mtd; %posledni vesak drzi vahu troleje az k bocaku
    if a~=pp                                 %odlehlost nelze pro uplne posledni vesak
        xtdc(c)=Ftd/(x(a,n(a)-1)+x(a+1,1));  %odlehlost posl. vesaku zapocitava i vzdalenost od bocaku do prvniho vesaku nasl. rozpeti
        Lkm(c)=Lkm(c-1)+x(a,n(a)-2);         %kumulativni odlehlost klasicky
    end
    c=c+1;
end
ntd=c-2;                            %pro posledni vesak nemame odlehlost - nepocitame
c=1;

%vytvoreni hodnot Fnl/x a celk. matice elementarnich vah pro NL
%prvni prvek matic odpovida prvnimu vesaku definovaneho kotevniho useku,
%posledni prvek matic odpovida poslednimu vesaku def. kot. useku,
%i zavesy maji svuj prvek: length(znlc)=length(xnlc)=length(ztdc)+pp-1
%vektor fp jednotkovou hodnotou prvku upozornuje na index, ktery odpovida
%prave zavesu

fp=zeros(1,pp*16);
for a=1:pp
    if a~=1                     %pro zaves krome prvniho
        xnlc(c)=Fnl/x(a,1);     %vahu nepocitame - zaves se nehybe
        fp(c)=1;                %indikace zavesu
        c=c+1;
    end
    for b=2:n(a)-1              %pro prvni az posledni vesak
        xnlc(c)=Fnl/x(a,b);     %odlehlost nasl. vesaku
        Mnlc(c)=(x(a,b-1)+x(a,b))/2*mnl;    %vaha odpovidajic vesaku
        c=c+1;
    end
end
nnl=c-2;
xnlc(c-1)=[];

%vytvoreni celkove matice pro nosne lano x a vyskrtnuti sloupcu a radku, ktere odpovidaji
%"hmote" v zavesu. Vznikne matice, ze ktere se mohou primo brat podmatice
%10x10 pro vlastni vypocet. Pro trolejovy drat celkovou matici x nelze
%vytvorit, nebot jeji prvky jsou meneny dosazovanim pritlacne sily v miste promenne 
%odlehlosti lambda 

mxnlc=zeros(nnl+1);    
for a=2:nnl
    mxnlc(a,a-1)=-xnlc(a-1);
    mxnlc(a,a)=xnlc(a-1)+xnlc(a);
    mxnlc(a,a+1)=-xnlc(a);
end
a=1;
while a<nnl
    if fp(a)==1                     %pokud je zaves
        fp(a)=[];                   %vyskrtneme odpovidajici prvek z vektoru fp
        Mnlc(a)=[];                 %vyskrtneme odpovidajici prvek z vektoru prave strany
        mxnlc(a,:)=[];              %vyskrtneme odpovidajici radek a sloupec z matice x
        mxnlc(:,a)=[];
        nnl=nnl-1;
    end
    a=a+1;
end

%v tuto chvili jsou predpripravene prvky do matice mxtd (xtdc), celkovy vektor
%pravych stran td i nl (ztdc a znlc) a celkova matice pro mxnl (mxnlc)
%lze pristoupit k dosazovani lambda a vlastnimu vypoctu predpoklada se, ze
%pata a dalsi hmota od sberace jiz neni ovlivnena

c=1;
z=zeros(13,1);
z(7)=F;
for a=2:nnl-11;                          			%pro druhy az nnl-9 prvek matic
%vytvoreni matice NL
    mxnl=zeros(11);
    mxnl(1:6, 1:6)=mxnlc(a:a+5, a:a+5);
    mxnl(1:6, 8:13)=mxnlc(a:a+5, a+6:a+11);
    mxnl(8:13, 1:6)=mxnlc(a+6:a+11, a:a+5);
    mxnl(8:13, 8:13)=mxnlc(a+6:a+11, a+6:a+11);

%vytvoreni matice TD
    xpom=zeros(1,14);
    xpom(1:6)=xtdc(a-1:a+4);
    xpom(9:14)=xtdc(a+6:a+11);
    for L=delta/2:delta:Ftd/xtdc(a+5)-delta/2   %podle delkoveho kroku "delta"
        Lckm(c)=Lkm(a+5)+L;             			%kumulativni odlehlosti mist vypoctu vypoctena pomoci kumulativnich odlehlosti vesaku. Zaciname od sesteho lanicka.
        xpom(7)=Ftd/L;
        xpom(8)=Ftd/(Ftd/xtdc(a+5)-L);
        mxtd=zeros(13);
        for b=2:14
            mxtd(b,b-1)=-xpom(b-1);
            mxtd(b,b)=xpom(b-1)+xpom(b);
            mxtd(b,b+1)=-xpom(b);
        end
       mxtd=mxtd(2:14, 2:14);
       
       mx=mxtd+mxnl;                   			%vlastni vypocet zdvihu
       y=mx\z;	
       mpom=zeros(1,13);                  		%vypocet efektivni zdvizene vahy
       mpom(1:6)=Mtdc(a:a+5)+Mnlc(a:a+5);
       mpom(8:13)=Mtdc(a+6:a+11)+Mnlc(a+6:a+11);
       mpom=mpom*y;
       mc(c)=mpom/y(7);
       ec(c)=y(7)/F;
       c=c+1;
   end
end

       