# Výsledné vnitřní účinky zakřiveného prutu¶

Vypracoval: Filip Horák, 2017/2018

U prutu dle obrázku určete průběh VVÚ.

## Řešení¶

Ze začátku je nutné naimportovat potřebné knihovny.

In [1]:

    %matplotlib inline
    import sympy as sp
    import numpy as np
    import matplotlib.pyplot as plt
    from IPython.core.display import Image
    sp.init_printing()

Vyvoláme obrázek úlohy.

In [2]:

    Image(filename='01-vvu-zakriveny-prut-1.png', width=400)

Out[2]:

Zavedeme potřebné proměnné jako symboly.

In [3]:

    C1,C2,C3=sp.symbols('C1 C2 C3')
    N1,T1,M1=sp.symbols('N1 T1 M1')
    N2,T2,M2=sp.symbols('N2 T2 M2')
    fi1,fi2,fii=sp.symbols('varphi_1 varphi_2 varphi_i')
    fi,R=sp.symbols('varphi R')
    FAx,FAz,FB,q=sp.symbols('FAx FAz FB q')

Prut uvolníme a následně sestavíme statické rovnice rovnováhy pro určení reakcí ve vazbách.

In [4]:

    Image(filename='01-vvu-zakriveny-prut-2.png', width=400)

Out[4]:

$$\begin{align} \sum_{}^{} F_{z}: & \, F_{Az} - \int_{0}^{\varphi} qRcos\varphi' \mathrm{d}\varphi'= 0 \\ \sum_{}^{} F_{x}: & \, F_{Ax} + F_{B} - \int_{0}^{\varphi} qRsin\varphi' \mathrm{d}\varphi' = 0 \\ \sum_{}^{} M_{S}: & \, RF_{Ax} - RF_{B} = 0 \end{align}$$

In [5]:

    eq1=FAz-sp.integrate((q*R*sp.cos(fii)),[fii,0,sp.pi/2])
    eq2=FAx+FB-sp.integrate((q*R*sp.sin(fii)),[fii,0,sp.pi/2])
    eq3=R*FAx-R*FB
    eq1,eq2,eq3

Out[5]:
$$\left ( FAz - R q, \quad FAx + FB - R q, \quad FAx R - FB R\right )$$

Vyjádříme jednotlivé síly ve vazbách.

In [6]:

    sol=sp.linsolve([eq1,eq2,eq3],[FAx,FAz,FB])
    FAx,FAz,FB=next(iter(sol))
    FAx,FAz,FB

Out[6]:
$$\left ( \frac{R q}{2}, \quad R q, \quad \frac{R q}{2}\right )$$

Úsek 1

Uvolňujeme zleva s délkou úseku: $$\varphi_{1} \in \big \langle 0 ;\frac{\pi}{2}\big \rangle$$

Sestavíme rovnice VVÚ.

$$N_{1} + F_{Ax}cos\varphi_{1} + F_{Az}sin\varphi_{1}= 0$$ $$T_{z1} -F_{Ax}sin\varphi_{1} + F_{Az}cos\varphi_{1}= 0$$ $$M_{oy1} -F_{Ax}(R - Rcos\varphi_{1}) + F_{Az}Rsin\varphi_{1}= 0$$

In [7]:

    eq1=N1+FAx*sp.cos(fi1)+FAz*sp.sin(fi1)
    eq2=T1-FAx*sp.sin(fi1)+FAz*sp.cos(fi1)
    eq3=M1-FAx*(R-R*sp.cos(fi1))+FAz*R*sp.sin(fi1)
    eq1,eq2,eq3

Out[7]:
$$\left ( N_{1} + R q \sin{\left (\varphi_{1} \right )} + \frac{R q}{2} \cos{\left (\varphi_{1} \right )}, \quad - \frac{R q}{2} \sin{\left (\varphi_{1} \right )} + R q \cos{\left (\varphi_{1} \right )} + T_{1}, \quad M_{1} + R^{2} q \sin{\left (\varphi_{1} \right )} - \frac{R q}{2} \left(- R \cos{\left (\varphi_{1} \right )} + R\right)\right )$$

Vyjádříme ze soustavy rovnic jednotlivé složky VVÚ.

In [8]:

    sol=sp.linsolve((eq1,eq2,eq3),(N1,T1,M1))
    N1_sol,T1_sol,M1_sol=next(iter(sol))
    N1_sol,T1_sol,M1_sol

Out[8]:
$$\left ( - \frac{R q}{2} \left(2 \sin{\left (\varphi_{1} \right )} + \cos{\left (\varphi_{1} \right )}\right), \quad \frac{R q}{2} \left(\sin{\left (\varphi_{1} \right )} - 2 \cos{\left (\varphi_{1} \right )}\right), \quad \frac{R^{2} q}{2} \left(- 2 \sin{\left (\varphi_{1} \right )} - \cos{\left (\varphi_{1} \right )} + 1\right)\right )$$

Úsek 2

Pokračujeme v uvolňování zleva s délkou úseku: $$\varphi_{2} \in \big \langle 0 ;\frac{\pi}{2}\big \rangle$$ Procházíme přes střed a můžeme využít, že $N_{2} = T_{1}$ a $T_{2} = -N_{1}$, nesmíme ale zapomenout přidat do rovnic liniové zatížení pomocí integrálů.

Sestavíme rovnice VVÚ. $$N_{2} - F_{Ax}sin\varphi_{2} + F_{Az}cos\varphi_{2} + \int_{0}^{\varphi_{2}} qRsin\varphi' \mathrm{d}\varphi'= 0$$ $$T_{z2} - F_{Ax}cos\varphi_{2} - F_{Az}sin\varphi_{2} + \int_{0}^{\varphi_{2}} qRcos\varphi' \mathrm{d}\varphi'= 0$$ $$M_{oy2} -F_{Ax}(R + Rcos\varphi_{2}) + F_{Az}Rsin\varphi_{2} + \int_{0}^{\varphi_{2}} qR^2sin\varphi' \mathrm{d}\varphi'= 0$$

In [9]:

    eq1=N2-T1_sol.subs(fi1,fi2)+sp.integrate((q*R*sp.sin(fii)),[fii,0,fi2])
    eq2=T2+N1_sol.subs(fi1,fi2)+sp.integrate((q*R*sp.cos(fii)),[fii,0,fi2])
    eq3=M2-FAx*(R+R*sp.sin(fi2))+FAz*R*sp.cos(fi2)+sp.integrate((q*R**2*sp.sin(fii)),[fii,0,fi2])
    eq1,eq2,eq3

Out[9]:
$$\left ( N_{2} - \frac{R q}{2} \left(\sin{\left (\varphi_{2} \right )} - 2 \cos{\left (\varphi_{2} \right )}\right) - R q \cos{\left (\varphi_{2} \right )} + R q, \quad - \frac{R q}{2} \left(2 \sin{\left (\varphi_{2} \right )} + \cos{\left (\varphi_{2} \right )}\right) + R q \sin{\left (\varphi_{2} \right )} + T_{2}, \quad M_{2} + R^{2} q - \frac{R q}{2} \left(R \sin{\left (\varphi_{2} \right )} + R\right)\right )$$

Vyjádříme ze soustavy rovnic jednotlivé složky VVÚ.

In [10]:

    sol=sp.linsolve((eq1,eq2,eq3),(N2,T2,M2))
    N2_sol,T2_sol,M2_sol=next(iter(sol))
    N2_sol,T2_sol,M2_sol

Out[10]:
$$\left ( \frac{R q}{2} \left(\sin{\left (\varphi_{2} \right )} - 2\right), \quad \frac{R q}{2} \cos{\left (\varphi_{2} \right )}, \quad \frac{R^{2} q}{2} \left(\sin{\left (\varphi_{2} \right )} - 1\right)\right )$$

Zavedeme číselné hodnoty veličin. $$\begin{align} R & = 1\, \mathrm{m} \\ q & = 2000\, \mathrm{N\cdot m^{-1}} \end{align}$$

In [11]:

    R_=1.
    q_=2000.

Grafy úseku 1

Nejprve zavedeme střednici, souřadnicové osy grafu a spočteme souřadnice jednotlivých VVÚ.

In [12]:

    bodu=20
    meritko=7.
    thetaI=np.linspace(0,np.pi/2,bodu)

    strednice_x=[-np.cos(ii) for ii in thetaI]
    strednice_y=[np.sin(ii) for ii in thetaI]

    grid_x=[[0,0],[0,-(1+1/(meritko-1))*np.cos(np.pi/4.)],[0,(-1-1/(meritko-1))]]
    grid_y=[[0,(1+1/(meritko-1))],[0,(1+1/(meritko-1))*np.sin(np.pi/4.)],[0,0]]

    N1_plot=[float(N1_sol.subs({q:q_,R:R_,fi1:ii})) for ii in thetaI]
    N1_plot_max=max(np.absolute(N1_plot))
    N1_plot_x=[(N1_plot[ii]/meritko/N1_plot_max+1)*strednice_x[ii] for ii in range(bodu)]
    N1_plot_y=[(N1_plot[ii]/meritko/N1_plot_max+1)*strednice_y[ii] for ii in range(bodu)]

    T1_plot=[float(T1_sol.subs({q:q_,R:R_,fi1:ii})) for ii in thetaI]
    T1_plot_max=max(np.absolute(T1_plot))
    T1_plot_x=[(T1_plot[ii]/meritko/T1_plot_max+1)*strednice_x[ii] for ii in range(bodu)]
    T1_plot_y=[(T1_plot[ii]/meritko/T1_plot_max+1)*strednice_y[ii] for ii in range(bodu)]

    M1_plot=[float(M1_sol.subs({q:q_,R:R_,fi1:ii})) for ii in thetaI]
    M1_plot_max=max(np.absolute(M1_plot))
    M1_plot_x=[(M1_plot[ii]/meritko/M1_plot_max+1)*strednice_x[ii] for ii in range(bodu)]
    M1_plot_y=[(M1_plot[ii]/meritko/M1_plot_max+1)*strednice_y[ii] for ii in range(bodu)]

Vykreslení grafů:

In [13]:

    #N1
    fig,ax=plt.subplots()
    ax.axis("equal")
    ax.tick_params(
        which='both',
        bottom='off',
        top='off',
        labelbottom='off',
        left='off',
        right='off',
        labelleft='off')
    ax.set_ylim(-0.05,1.3)
    ax.set_title('Normalova slozka $N1$ '+r'$[\mathrm{N}]$')
    ax.plot(N1_plot_x,N1_plot_y,color="red",label='N1',lw=2)
    for ii in grid_x:
      ax.plot(ii,grid_y[grid_x.index(ii)],color="grey",lw=0.5)
    for ii in range(bodu):
      pointx=[strednice_x[ii],N1_plot_x[ii]]
      pointy=[strednice_y[ii],N1_plot_y[ii]]
      ax.plot(pointx,pointy,color="red",lw=1)
      ax.text(pointx[1],pointy[1],str(int(N1_plot[ii])), \
              horizontalalignment="left",verticalalignment="top",fontsize=8,color="grey", \
              rotation=(-180.*thetaI[ii]/np.pi))
    ax.plot(strednice_x,strednice_y,color="black",label="strednice",lw=3)
    ax.legend(loc='upper left')

    #T1
    fig,ax=plt.subplots()
    ax.axis("equal")
    ax.tick_params(
        which='both',
        bottom='off',
        top='off',
        labelbottom='off',
        left='off',
        right='off',
        labelleft='off')
    ax.set_ylim(-0.05,1.3)
    ax.set_title('Posouvajici slozka $T1$ '+r"[$\mathrm{N}$]")
    ax.plot(T1_plot_x,T1_plot_y,color="red",label='T1',lw=2)
    for ii in grid_x:
      ax.plot(ii,grid_y[grid_x.index(ii)],color="grey",lw=0.5)
    for ii in range(bodu):
      pointx=[strednice_x[ii],T1_plot_x[ii]]
      pointy=[strednice_y[ii],T1_plot_y[ii]]
      ax.plot(pointx,pointy,color="red",lw=1)
      ax.text(pointx[1],pointy[1],str(int(T1_plot[ii])), \
              horizontalalignment="left",verticalalignment="top",fontsize=8,color="grey", \
              rotation=(-180.*thetaI[ii]/np.pi))
    ax.plot(strednice_x,strednice_y,color="black",label="strednice",lw=3)
    ax.legend(loc='upper left')

    #Mo1
    fig,ax=plt.subplots()
    ax.axis("equal")
    ax.tick_params(
        which='both',
        bottom='off',
        top='off',
        labelbottom='off',
        left='off',
        right='off',
        labelleft='off')
    ax.set_ylim(-0.05,1.3)
    ax.set_title('Momentova slozka $M1$ '+r'$[\mathrm{N}\times\mathrm{mm}]$')
    ax.plot(M1_plot_x,M1_plot_y,color="red",label='M1',lw=2)
    for ii in grid_x:
      ax.plot(ii,grid_y[grid_x.index(ii)],color="grey",lw=0.5)
    for ii in range(bodu):
      pointx=[strednice_x[ii],M1_plot_x[ii]]
      pointy=[strednice_y[ii],M1_plot_y[ii]]
      ax.plot(pointx,pointy,color="red",lw=1)
      ax.text(pointx[1],pointy[1],str(int(M1_plot[ii])), \
              horizontalalignment="left",fontsize=8,color="grey", \
              rotation=(-180.*thetaI[ii]/np.pi))
    ax.plot(strednice_x,strednice_y,color="black",label="strednice",lw=3)
    ax.legend(loc='upper left')

Out[13]:

    <matplotlib.legend.Legend at 0x1a6c26fcac8>

Grafy úseku 2

Nejprve zavedeme střednici, souřadnicové osy grafu a spočteme souřadnice jednotlivých VVÚ.

In [14]:

    #Grafy úseku 2
    strednice_y=[np.cos(ii) for ii in thetaI]
    strednice_x=[np.sin(ii) for ii in thetaI]

    grid_x=[[0,0],[0,(1+1/(meritko-1))*np.cos(np.pi/4.)],[0,(1+1/(meritko-1))]]
    grid_y=[[0,(1+1/(meritko-1))],[0,(1+1/(meritko-1))*np.sin(np.pi/4.)],[0,0]]

    N2_plot=[float(N2_sol.subs({q:q_,R:R_,fi2:ii})) for ii in thetaI]
    N2_plot_max=max(np.absolute(N2_plot))
    N2_plot_x=[(N2_plot[ii]/meritko/N2_plot_max+1)*strednice_x[ii] for ii in range(bodu)]
    N2_plot_y=[(N2_plot[ii]/meritko/N2_plot_max+1)*strednice_y[ii] for ii in range(bodu)]

    T2_plot=[float(T2_sol.subs({q:q_,R:R_,fi2:ii})) for ii in thetaI]
    T2_plot_max=max(np.absolute(T2_plot))
    T2_plot_x=[(T2_plot[ii]/meritko/T2_plot_max+1)*strednice_x[ii] for ii in range(bodu)]
    T2_plot_y=[(T2_plot[ii]/meritko/T2_plot_max+1)*strednice_y[ii] for ii in range(bodu)]

    M2_plot=[float(M2_sol.subs({q:q_,R:R_,fi2:ii})) for ii in thetaI]
    M2_plot_max=max(np.absolute(M2_plot))
    M2_plot_x=[(M2_plot[ii]/meritko/M2_plot_max+1)*strednice_x[ii] for ii in range(bodu)]
    M2_plot_y=[(M2_plot[ii]/meritko/M2_plot_max+1)*strednice_y[ii] for ii in range(bodu)]

Vykreslení grafů:

In [15]:

    #N2
    fig,ax=plt.subplots()
    ax.axis("equal")
    ax.tick_params(
        which='both',
        bottom='off',
        top='off',
        labelbottom='off',
        left='off',
        right='off',
        labelleft='off')
    ax.set_ylim(-0.05,1.3)
    ax.set_title('Normalova slozka $N2$ '+r'$[\mathrm{N}]$')
    ax.plot(N2_plot_x,N2_plot_y,color="red",label='N2',lw=2)
    for ii in grid_x:
      ax.plot(ii,grid_y[grid_x.index(ii)],color="grey",lw=0.5)
    for ii in range(bodu):
      pointx=[strednice_x[ii],N2_plot_x[ii]]
      pointy=[strednice_y[ii],N2_plot_y[ii]]
      ax.plot(pointx,pointy,color="red",lw=1)
      ax.text(pointx[1],pointy[1],str(int(N2_plot[ii])), \
              horizontalalignment="right",verticalalignment="top",fontsize=8,color="grey", \
              rotation=(180.*(np.pi/2-thetaI[ii])/np.pi))
    ax.plot(strednice_x,strednice_y,color="black",label="strednice",lw=3)
    ax.legend(loc='upper right')

    #T2
    fig,ax=plt.subplots()
    ax.axis("equal")
    ax.tick_params(
        which='both',
        bottom='off',
        top='off',
        labelbottom='off',
        left='off',
        right='off',
        labelleft='off')
    ax.set_ylim(-0.05,1.3)
    ax.set_title('Posouvajici slozka $T2$ '+r"[$\mathrm{N}$]")
    ax.plot(T2_plot_x,T2_plot_y,color="red",label='T2',lw=2)
    for ii in grid_x:
      ax.plot(ii,grid_y[grid_x.index(ii)],color="grey",lw=0.5)
    for ii in range(bodu):
      pointx=[strednice_x[ii],T2_plot_x[ii]]
      pointy=[strednice_y[ii],T2_plot_y[ii]]
      ax.plot(pointx,pointy,color="red",lw=1)
      ax.text(pointx[1],pointy[1],str(int(T2_plot[ii])), \
              horizontalalignment="left",verticalalignment="bottom",fontsize=8,color="grey", \
              rotation=(180.*(np.pi/2-thetaI[ii])/np.pi))
    ax.plot(strednice_x,strednice_y,color="black",label="strednice",lw=3)
    ax.legend(loc='upper right')

    #Mo2
    fig,ax=plt.subplots()
    ax.axis("equal")
    ax.tick_params(
        which='both',
        bottom='off',
        top='off',
        labelbottom='off',
        left='off',
        right='off',
        labelleft='off')
    ax.set_ylim(-0.05,1.3)
    ax.set_title('Momentova slozka $M2$ '+r'$[\mathrm{N}\times\mathrm{mm}]$')
    ax.plot(M2_plot_x,M2_plot_y,color="red",label='M2',lw=2)
    for ii in grid_x:
      ax.plot(ii,grid_y[grid_x.index(ii)],color="grey",lw=0.5)
    for ii in range(bodu):
      pointx=[strednice_x[ii],M2_plot_x[ii]]
      pointy=[strednice_y[ii],M2_plot_y[ii]]
      ax.plot(pointx,pointy,color="red",lw=1)
      ax.text(pointx[1],pointy[1],str(int(M2_plot[ii])), \
              horizontalalignment="right",verticalalignment="top",fontsize=8,color="grey", \
              rotation=(180.*(np.pi/2-thetaI[ii])/np.pi))
    ax.plot(strednice_x,strednice_y,color="black",label="strednice",lw=3)
    ax.legend(loc='upper right')

Out[15]:

    <matplotlib.legend.Legend at 0x1a6c2b3b748>