# Kapitel 2: 
# Eigenwerte und Eigenkreisfrequenzen 
# von Stäben mit (k-m-c)-Schwinger am rechten Rand
# © 2017  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> restart: with(plots):
# Beispiel 2-11:
# 
# Für die in der obigen Abbildung skizzierte Systeme sind die Eigenwerte und Eigenkreisfrequenzen zu berechnen. 
> 
;
> Proc_Calc_03:=proc(rho, E, A, l, kF, m , c, a, b, dx, flag)
> #-----------------------------------------------------------------------------------------------
> # Eingabe Stab:
> #      rho: Dichte in [kg/m^3]
> #        E: Elastizitätsmodul in [N/m^2]
> #        A: Flächeninhalt des Stabquerschnitts in [m^2]
> #        l: Länge des Stabes in [m]
> # Eingabewerte für den(kF-m-c)-Schwinger:
> #       kF: Federsteifigkeit in [N/m]
> #        m: Masse in [kg]
> #        c: Dämpfungskonstante in [kg/s]
> #     a..b: Grenzen des Suchintervalls zur Berechnung der Eigenwerte
> #       dx: Schrittweite
> # flag = 1: Linkes Stabende eingespannt
> # flag = 2: Linkes Stabende frei     
> # Ausgabe:
> #   Lambda: Eigenwerte
> #    Omega: Eigenkreisfrequenzen
> #-------------------------------------------------------------------------------------------------
> local cL,ZL,epsilon,kappa,delta,lambda,f,eps,nmax,n,x,LambdaR,OmegaR,LambdaI,OmegaI,EWGR,XS,p1;
> global EWG,Lambda,Omega;
> description "# Eigenwertgleichung und Eigenwerte eines Stabes mit (k-m-c)-Schwinger am rechten Stabende
> ";
> if flag < 1 or flag > 2 then
> print(`flag muss den Wert 1 (Einspannung) oder 2 (freie Lagerung) haben, !!!Abbruch der Berechnung!!!`);
> return; end;
> f:=epsilon*lambda-kappa/lambda-I*delta;
> if flag = 1 then 
>   EWG:=unapply(f*sin(lambda)-cos(lambda),lambda);
>     else
>   EWG:=unapply(f*cos(lambda)+sin(lambda),lambda);
> end if;
> #Berechnung der reellen Eigenwerte (delta = 0)
> EWGR:=unapply(subs(delta = 0,EWG(lambda)),lambda);
> #Berechnung der Systemwerte
> cL:=sqrt(E/rho);           
> ZL:=A*sqrt(rho*E);         
> delta:=c/ZL;
> epsilon:= m/(rho*A*l);
> kappa:=kF*l/(E*A);
> nmax:=round((b-a)/dx);
> x:= a; LambdaR:= [];
> for n to nmax do
>   if evalf(EWGR(x)*EWGR(x+dx)) < 0. then
>     LambdaR:= [op(LambdaR),fsolve(EWGR(z),z=x..x+dx)];
>   end if;
> x:= x + dx;
> end do;
> OmegaR:= LambdaR*cL/l;
> #Berechnung der komplexen Eigenwerte wenn c > 0
> if abs(c) > 10.^(-Digits+2) then
>   LambdaI:=[]; 
>   for n to nops(LambdaR) do
>     LambdaI:= [op(LambdaI),fsolve(EWG(lambda),lambda=LambdaR[n])];
>   end do;
> end if;
> OmegaI:= LambdaI*cL/l;
> # Ausgabe der Systemwerte, Eigenwerte, Eigenkreisfrequenzen
> if flag = 1 then 
>   print(`\nAusgabe für den links eingespannten Stab\n`);
>     else
>   print(`Ausgabe für den links frei gelagerten Stab\n`);
> end if;
> print(`cL = `,cL);
> print(`ZL = `,ZL);
> if abs(c) < 10.^(-Digits+2) then 
>   Lambda:=LambdaR; Omega:=OmegaR;  
>     else
>   Lambda:=LambdaI; Omega:=OmegaI;     
> end if;
> print(`Eigenwerte » = `,Lambda);
> print(`Eigenkreisfrequenzen É = `,Omega);
> end proc:
# Mit den Werten des Beispiels sind mit Einspannung (flag = 1) und freies Ende ( flag = 2)
> rho:=7850.   : E:=2.1*10^(11): A:=7.57*10^(-4): l:=10.0: flag:=2:  #Eingabewerte Stab
;
> kF :=7.9485E6: m:= 59.4245:    c:=30735.50514:                     #Eingabewerte (k-m-c)-Schwinger
> 
;
# Für die nummerische Ermittlung der Eigenwerte wählen wir:
> a:=.1: b:=13.: dx:=0.2:    #Abtastbereich [a,b] und Schrittweite dx zum Aufsuchen der Eigenwerte
;
> Proc_Calc_03(rho, E, A, l, kF, m , c, a, b, dx, flag);
           Ausgabe für den links frei gelagerten Stab
                       cL = , 5172.194153
                       ZL = , 30735.50514
Eigenwerte &lambda; = , [0.4393146097 + 0.2390977502 I, 



  2.022151983 + 0.1742123119 I, 4.910071718 + 0.03844111923 I, 



  7.977789671 + 0.01524241128 I, 11.08519299 + 0.008008906111 I]
Eigenkreisfrequenzen &omega; = , [227.2220456 + 123.6659986 I, 



  1045.896266 + 90.10599010 I, 2539.584423 + 19.88249321 I, 



  4126.267709 + 7.883671050 I, 5733.477037 + 4.142361736 I]
;
> plots[complexplot]([seq(Lambda[i],i=1..5)],x=0..12,title = "\nEigenwerte »\n", titlefont = ["ARIAL", 15], labels = ["Realteil", "Imaginärteil"], labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10], axesfont = ["HELVETICA", "ROMAN", 8],style=point,gridlines=true,axes = boxed);

# Die grafische Darstellung der Eigenwerte » zeigt, dass der Imaginärteil bei den höheren Eigenwerten immer kleiner wird.
> 
;
