Přímý, staticky určitě uložený prut na dvou podporách, vazba je rotační na levém konci prutu, vazba je obecná na pravém konci prutu. Prut má délku . Od vazby do vzdálenosti působí liniové zatížení , v bodě , měřeno od vazby , působí síla pod úhlem (měřeno klasicky, proti směru hodinových ručiček od střednice prutu). Vazba je zatížena silovou dvojící .
struct Zadani
a
b
c
f
alfa
q
m
function Zadani(a,b,c,f,alfa,q,m)
alfa=pi*alfa/180.
new(a,b,c,f,alfa,q,m)
end
end
struct Reakce
fax
fay
fb
end
, , , , , ,
z=Zadani(1.,0.5,0.5,10000.,60.,5000.,3000.)
Soustava rovnic statické rovnováhy v maticovém tvaru,
A=[1. 0. 0.;0. 1. 1.;0. 0. z.a+z.b+z.c]
b=[z.f*cos(z.alfa);z.q*z.a+z.f*sin(z.alfa);z.m+z.f*sin(z.alfa)*(z.a+z.b+z.c)+z.q*z.a^2/2.]
Řešení soustavy rovnic.
x=A\b
r=Reakce(x...)
Výsledné vnitřní účinky
x=linspace(0.,z.a+z.b+z.c,100)
using Plots
function N(x,z::Zadani,r::Reakce)
if x>=0 && x<=z.a
return r.fax
elseif x>z.a && x<=z.a+z.b
return r.fax
else x>z.a+z.b+z.c
return r.fax-z.f*cos(z.alfa)
end
end
plot(x,x->N(x,z,r),color=:red,fill=(1,:orange))
function T(x,z::Zadani,r::Reakce)
if x>=0 && x<=z.a
return r.fay-z.q*x
elseif x>z.a && x<=z.a+z.b
return r.fay-z.q*z.a
else x>z.a+z.b+z.c
return r.fay-z.q*z.a-z.f*sin(z.alfa)
end
end
plot(x,x->T(x,z,r),color=:red,fill=(1,:orange))
function M(x,z::Zadani,r::Reakce)
if x>=0 && x<=z.a
x1=x
return r.fay*x1-z.q*x1^2/2
elseif x>z.a && x<=z.a+z.b
x2=x-z.a
return r.fay*(x2+z.a)-z.q*z.a*(z.a/2.+x2)
else x>z.a+z.b+z.c
x3=x-z.a-z.b
return r.fay*(x3+z.a+z.b)-z.q*z.a*(z.a/2.+z.b+x3)-z.f*sin(z.alfa)*x3
end
end
plot(x,x->M(x,z,r),color=:red,fill=(1,:orange))