# Kapitel 3: 
# Der prismatische Kragbalken nach Bernoulli
# unter Berücksichtigung der Drehträgheit
# © 2017  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> restart:with(LinearAlgebra):
# Beispiel 3-4:
# 
# 
# Für den oben skizzierten Kragbalken mit Rechteckquerschnitt sind die ersten drei Eigenkreisfrequenzen und Eigenfunktionen unter Berücksichtigung der Rotationsträgheit zu berechnen. 
> ode4:=diff(W(x),x$4)+kappa[L]^2*diff(W(x),x$2)-kappa[B]^4*W(x);
> kappa[L]:=z*kappa[B];
> loe:=dsolve(ode4);
> W:=C1*sin(lambda[1]*x)+C2*cos(lambda[1]*x)+C3*sinh(lambda[2]*x)+C4*cosh(lambda[2]*x);
> W1:=diff(W,x); W2:=diff(W1,x); W3:=diff(W2,x);
# Zeitfreies Biegemoment M
> Mu:=simplify(-E*Iyy*W2,symbolic);
# Zeitfreie Querkraft V
> V:=simplify(-E*Iyy*(W3 + z^4/iy^2*W1),symbolic);
> simplify(lambda[1]*(iy*lambda[1]-z^2)*(iy*lambda[1]+z^2));
# Lösung des Eigenwertproblems
> gl1:=eval(subs(x=0,W));
> gl2:=eval(subs(x=0,W1));
> gl3:=eval(subs(x=l,Mu));
> gl4:=eval(subs(x=l,V));
> gl:=[gl1,gl2,gl3,gl4]: unb:=[C1,C2,C3,C4]:
> A, b := GenerateMatrix(gl, unb);
> 
;
> simplify(Determinant(A),symbolic);
> EWG:=op(2,%);
> EWG:=cos(lambda[1]*l) + k1*sin(lambda[1]*l)*tanh(lambda[2]*l)+k2/cosh(lambda[2]*l);
> k1:=(-2*lambda[1]*lambda[2]*(z^4-(1/2)*iy^2*lambda[1]^2+(1/2)*iy^2*lambda[2]^2))/((2*iy^2*lambda[2]^2+z^4)*lambda[1]^2-z^4*lambda[2]^2);
> k2:=(iy^2*lambda[1]^4+iy^2*lambda[2]^4-z^4*lambda[1]^2+z^4*lambda[2]^2)/((2*iy^2*lambda[2]^2+z^4)*lambda[1]^2-z^4*lambda[2]^2);
# Berechnung der Integrationskonstanten. Da eine Konstante frei gewählt werden kann, setzen wir 
> C4:=1;
# Das verbleibende Gleichungssystem ist
> AR, b := GenerateMatrix([gl1,gl2,gl3],[C1,C2,C3]);
> unb:=LinearSolve(AR,b);
> C1:=simplify(unb[1]); C2:=simplify(unb[2]); C3:=simplify(unb[3]);
> lambda[1]:=(1/2)*sqrt(2)*z/iy*sqrt(sqrt(4+z^4)+z^2);
> lambda[2]:=(1/2)*sqrt(2)*z/iy*sqrt(sqrt(4+z^4)-z^2);
# Beispiel:
> b:=0.2; h:=0.6; A:=b*h; Iyy:=b*h^3/12; iy:=sqrt(Iyy/A); l:=3.;
> E:=3.05E10; rho:=2500.;
# k1, (k2 implies (0*für)*z) implies infinity;
> plot([k1,k2],z=0..5,-2..2,gridlines=true,axes=boxed,color=[black,blue]);
> plot(EWG,z=0..1,-1.8..2,gridlines=true,axes=boxed);
> EWG:=unapply(EWG,z):
# In der folgenden Schleife werden dieNullstellen der  Eigenfunktion EWG(z) berechnet. Dazu wird EWG(z)  im Intervall [a,b] mit der Schrittweite dz ausgewertet. Ist EWG(z)*EWG(z+dz)  < 0, dann hat die Eigenfunktion  in diesem Intervall einen Nulldurchgang. In diesem Fall wird die Nullstelle mit  fsolve  nummerisch konkretisiert.
> Z0:=[]: a:=0.: b:=1: dz:=0.01: dmax:=round((b-a)/dz): za:= a: ze:=za+dz:
> for n to dmax do
>   if evalf(EWG(za)*EWG(ze)) < 0. then
>     Z0:=[op(Z0),fsolve(EWG(z),z=za..ze)]:
>   end if:
>   za:= ze; ze:=za+dz;
> end do: 
> nmax:=nops(Z0): f:=sqrt(E*A/rho/Iyy):
> ZN:=convert(Z0,Vector): OMEGA:=Vector(nmax): FR:=Vector(nmax):
> for n to nmax do
>   OMEGA[n]:=evalf(Z0[n]^2*f);
>   FR[n]   :=OMEGA[n]/2/Pi;
> end do:
> print(`  z = `,ZN,`  É = `,OMEGA, `  f = `, FR);
# Wir stellen die Zustandsgrößen zum 1. Eigenwert grafisch dar:
> z:=ZN[1];
> kV:=E*Iyy/l^2; kM:=E*Iyy/l;
> evalf(V); evalf(Mu); evalf(W);
> para:=x=0..l,gridlines=true,titlefont = ["ARIAL", 15],  labeldirections = ["horizontal","horizontal"], labelfont = ["HELVETICA", 10],axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed:
> p1:= plot(V /kV ,para,title = "\nNormierte Querkraft\n"    ,labels = ["x", "QN(x)"]):
> p2:= plot(Mu/kM ,para,title = "\nNormiertes Biegemoment\n" ,labels = ["x", "MN(x)"]):
> p3:= plot(W     ,para,title = "\nVerschiebung\n",labels = ["x", "W(x)"]):
> plots[display](Matrix(1,3,[p1,p2,p3]));
> 
;
