Gelöste Aufgaben/FEAE

Aus numpedia
Zur Navigation springen Zur Suche springen

Aufgabenstellung

Wir schauen uns die Lösungsanteile für die Bewegungsgleichung des Zwei-Masse-Schwinger an: welche Rolle spielen die homogene und partikulare Lösung?

Lageplan

Gesucht ist Gesamtlösung des Systems im Zeitbereich beim Loslassen der beiden Massen aus der Referenz-Konfiguration, bei der beide Federn entspannt sind. Wir stellen die Bewegungsgleichung mit dem Prinzip der virtuellen Verrückungen auf.

Wir arbeiten mit den System-Parametern

k1=32k0k2=k0m1=m0m2=m0

Lösung mit Maxima

Header

Der Lösungsweg zu dieser Aufgabe wird bereits in Integration der Differentialbeziehung (IVP) gezeigt, hier verfolgende wir einen etwas allgemeineren Lösungspfad.

Dabei arbeiten wir u.a. mit quadratischen Gleichungen. Für deren Lösung müssen wir Maxima wissen lassen, welche Parameter positiv sind, also

k0>0,m0>0,T>0;
Koordinaten der Bewegung.
Die Lage-Koordinaten des Systems fassen wir in
Q_=(w1(t)w2(t))

zusammen.

Für die dimensionslose Schreibweise brauchen wir später eine Bezugszeit tBez.

Dazu nehmen wir eine "Anleihe" bei einem ähnlichen System:

Für dieses System "kennen" wir die Eigenkreisfrequenz

ω0=k0m0 und ω0=2πT.

Aus diesem Modell "leihen" wir uns die Bezugszeit zu

T=2πm0k0.

und wählen

tBez:=T
Hier kennen wir ω0.

/*******************************************************/
/* MAXIMA script                                       */
/* version: wxMaxima 16.04.2                           */
/* author: Andreas Baumgart                            */
/* last updated: 2018-01-07                            */
/* ref: FEM, PVMPE using two coordinates               */
/* description: solve by principle virt. Work          */
/*******************************************************/
/* declare variational variables - see 6.3 Identifiers */
declare("δW", alphabetic);
declare("δA", alphabetic);
declare("δΠ", alphabetic);
declare("δw", alphabetic);
declare("δQ", alphabetic);

/* assumptions */
assume(k[0]>0,m[0]>0,T>0);

/* abbreviations */
abbrev : [omega[0,0]=2*%pi/T, omega[0,0]^2= k[0]/m[0]];
abbrev : append(abbrev, solve(abbrev,[omega[0,0],T])[2]);

/* system parameters and dimensionless time tau */
params: [m[1]=m[0],m[2]=m[0],k[1]=3/2*k[0],k[2]=k[0],
         t = T*tau, w[s] = m[0]*g/k[0]];

/* coordinates */
 Q[t]: [ w[1](t), w[2](t)]; 
δQ[t]: [δw[1]   ,δw[2]   ];




Equilibrium Conditions

Die Gleichgewichtsbedingung mit dem Prinzip der virtuellen Verrückungen lautet

δW=m1w¨1δw1m2w¨2δw2+m1gδw1+m2gδw2:=δWak1w1δw1+k2(w2w1)(δw2δw1):=δΠ=!0.

Aufgelöst nach den Koeffizienten der virtuellen Verrückungen folgt die gewöhnliche, lineare Differentialgleichung:

(m000m0)(w¨1w¨2)+(52k0k0k0k0)(w1w2)=(m0gm0g).

In dieser Beziehung stehen jetzt nur noch m0 und k0 - die Indizes "0" können wir also ab hier weglassen. In Matrix-Schreibweise lautet die Bewegungsgleichung jetzt:

M__Q¨_+K__Q_=G_.

/* virtual of system (equilibrium condition) */
PvV : [δW = δW^a - δΠ,
       δW^a = - sum(m[i]* diff(w[i](t),t,2)*δw[i],i,1,2) + sum(m[i]*g*δw[i],i,1,2),
       δΠ   =   sum(k[i]*(w[i](t)-w[i-1](t))*(δw[i]-δw[i-1]),i,1,2)];

/* equlilbrium condition */

eom: subst(PvV[3],subst(PvV[2],subst(PvV[1],δW=0)));
eom: expand(subst([w[0](t)=0,δw[0]=0],eom));

M : -funmake('matrix,makelist(makelist(coeff(coeff(lhs(eom),δQ[t][i]),diff(Q[t][j],t,2)),i,1,2),j,1,2));
K : -funmake('matrix,makelist(makelist(coeff(coeff(lhs(eom),δQ[t][i]),     Q[t][j]     ),i,1,2),j,1,2));
G :  funmake('matrix,makelist(coeff(
            subst(makelist(diff(Q[t][i],t,2)=0,i,1,2), 
            subst(makelist(     Q[t][i]=0     ,i,1,2),[lhs(eom)])),δQ[t][j]), j,1,2));

/* control print-out */
print(M,"∙",transpose(diff(Q[t],t,2)),"+",K,"∙",transpose(Q[t]),"=",G)$




Solving

Die Lösung des Anfangswertproblems setzt sich aus zwei Teilen zusammen:

  • der partikularen Lösung, die die Rechte Seite "G" erfüllt und
  • der homogenen Lösung, die die Rechte Seite "0" erfüllt.

Die Gesamtlösung Qt setzt sich nun - bei diesem linearen System - additiv aus partikularer Qp und Qh homogener Lösung zusammen:

Q_t(t)=Q_p(t)+Q_h(t)

/**************** total solution */
Q[t] : Q[p] + Q[h]




Right-Hand-Side Approach

Die rechte Seite der Bewegungsgleichung G ist nicht zeitabhängig - sie ist statisch. Also ist auch die Lösung Qp - die partikulare Lösung - statisch, wir suchen nach der Lösung des Gleichungssystems

K__Q_p=G_

und die ist

Q_p=(4mg3k7mg3k)

Wir führen die Abkürzung

ws=mgk

ein, also ist

Q_p=ws(4373).

/**************** particular solution */
Q[p] : ratsimp(subst(params,linsolve_by_lu(K,G)[1]));




Homogeneous Solution

Für die Lösung der homogenen Bewegungsgleichung

M__Q¨_+K__Q_=0_

setzen wir (vgl. Modalanalyse) an

Q_h=Q^_heλt

und erhalten das Eigenwertproblem

(λ2M__+K__)D__(λ)Q^_h=0_

mit

den Eigenwertenλ und
den EigenvektorenQ^_h

Die Berechnung der Eigenwerte λ wird einfacher mit

λ2=Λ

und wir transformieren parallel die Bewegungsgleichungen auf die dimensionslose Zeit

τ:=ttBez mit tBez=T.,

also

Q¨_=d2Q_dτ2d2τdt21T2.

Wir finden zwei Eigenwerte aus der Bedingung det(D)=0:

Λ1=2π2Λ2=12π2

und

λ1=j2πλ2=j2(3)π mit j:=1.

Für die Matrix

D__(λi)=λ21T2M__+K__

stellen wir fest:

Die Matrix hat

  • einen Rang (rank) von 1 - es gibt eine linear abhängige Zeile im Gleichungssystem und - entsprechend -
  • einen Rangabfall (nullity)  von 1.

Die Eigenvektoren spannen nun den Nullraum (nullspace) der Matrix auf. Normmert auf die Länge 1 sind das

  • für λ1:
    Q^_h,1=15(12) und
  • für λ2:
    Q^_h,2=15(21).

Die homogene Lösung der Bewegungsgleichung lautet damit

Q_h(t)=c115(12)ej2πτ+c215(21)ej23πτ

mit den Integrationskonstanten c1 und c2. Durch die komplexen Eigenwerte sind die beiden Integrationskonstanten nun auch komplexwertig, also

c1=cR,1+jcI,1c2=cR,2+jcI,2.

Diese vier reell-wertigen Integrationskonstanten bekommen wir aus vier Anfangsbedingungen für die beiden Massen, hier

w1(0)=0w2(0)=0w˙1(0)=0w˙2(0)=0.

Wir finden

cR,1=6mg5k,cI,1=0,cR,2=mg35k,cI,2=0.

und damit

Q_h(t)=15(2cos(23πτ)18cos(2πτ)cos(23πτ)36cos(2πτ)).

/* direct approach */
load(eigen); eigensystem: uniteigenvectors(subst(params, invert(M).K));
/* -> not employed */

/**************** homogeneous solution */
/* solve eigenvalue problem */
Q[E] : matrix([q[1,i]],[q[2,i]]);
ansatz: Q[h] = Q[E]*%e^(%lambda[i]*tau);

D : -Lambda*(1/T)^2*M + K;
D : subst(params, D);
charPoly : determinant(D);

/* eigenvalues */
eigval : solve(subst(params,charPoly)=0,Lambda);
eigval : subst(abbrev, eigval);

/* save for later ....*/
eigvalList : makelist(subst(eigval[j],[%lambda[j]=%i*sqrt(Lambda)]),j,1,2);

/* eigenvectors */
prop: [rnk = rank(subst(eigval[1],subst(params,D))), nly = nullity(subst(eigval[1],D))];

eigvec : makelist(apply (addcol, args (nullspace(
                           subst(abbrev,subst(eigval[i],D/k[0]))))),i,1,2);

/* norm eigenvectors (to be of length "1" */
eigvec : makelist(eigvec[i]/sqrt(eigvec[i].eigvec[i]),i,1,2);

/* adapt to initial values w[1](0)=0, w[2](0)=0 */
Q[h] : sum(subst(eigval[j],subst([%lambda[j]=%i*sqrt(Lambda),i=j],
                           (c[R,j]+%i*c[I,j])*eigvec[j]*%e^(%lambda[j]*tau))),j,1,2);

/* update Q[t]*/
Q[t] : ''(Q[t]);

/* adapt to initial values */
intcons : [c[R,1],c[I,1],c[R,2],c[I,2]];
intcond : append(makelist(subst([tau=0],     Q[t]     )[i][1]=0,i,1,2),
                 makelist(subst([tau=0],diff(Q[t],tau))[i][1]=0,i,1,2));

/* integration constants: */
sol[1] : ratsimp(solve(realpart(intcond),intcons)[1]);

Q[t] : realpart(ratsimp(subst(params,subst(sol[1],Q[t]/w[s]))))




Post-Processing

Die Lösung für

  • w1 (blau) und
  • w2 (rot)

im Zeitbereich, angepasst an die Anfangsbedingungen, sieht nun so aus:

Ergebnis-Plots für w1(t), w2(t).

Interessant ist die separate Auftragung der Lösungsanteile nach partikularer Lösung (Index "p") und den beiden homogenen Lösungsanteilen (Index "h1", "h2"). Man erkennt, wie die Summe jeweils der blauen und der roten Anteile die Gesamtlösung ergibt.

Ergebnis-Plot mit den Lösungsanteilen.

/* plot results */
preamble: "set yrange [] reverse";
plot2d([Q[t][1][1],Q[t][2][1]],[tau,0,4], [legend, "w[1]", "w[2]"],
    [xlabel, "τ/1 →"], [ylabel, "← w/(m*g/k)"],
    [gnuplot_preamble, preamble]);

/* deconstruct solution into modes */
timeFcts : makelist(subst(eigvalList[i],%e^(%lambda[i]*tau)),i,1,2)
Q[l] : subst(params,append([Q[p]/w[s]],
            realpart(makelist(coeff(subst(sol[1],Q[h]),timeFcts[i])/w[s]*timeFcts[i],i,1,2))));

plot2d([Q[l][1][1][1],Q[l][1][2][1],
        Q[l][2][1][1],Q[l][2][2][1],
        Q[l][3][1][1],Q[l][3][2][1]],
        [tau,0,4],
        [legend, "w[p,1]", "w[p,2]", "w[h1,1]", "w[h1,2]", "w[h2,1]", "w[h2,2]"],
        [color, blue, red, blue, red, blue, red],
        [style, [lines,3], [lines,3], [lines,1], [lines,1], [lines,1], [lines,1]],
        [xlabel, "τ/1 →"], [ylabel, "← w/(m*g/k)"],
        [gnuplot_preamble, preamble]);






Links

  • ...

Literature

  • ...