Gelöste Aufgaben/Kw25: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 22: Zeile 22:
== Lösung mit Maxima ==
== Lösung mit Maxima ==


==tmp==
"Stick-Slip" Schwingungen sind klassische selbsterregte Schwingungen. Selbsterrung heißt: das System lenkt den Energiefluss im System so, dass Schwingungen "aus sich heraus" angeregt werden. Charakteristisch für "Stick-Slip" Schwingungen ist, dass zwei Körper zeitweise aneinander haften, dann auseinander gerissen werden und dann aneinander reiben - bis sie wieder aneinander haften.<!-------------------------------------------------------------------------------->


<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Header
{{MyCodeBlock|title=Header
|text=Text
|text=
"Stick-Slip" Schwingungen sind klassische selbsterregte Schwingungen. Selbsterrung heißt: das System lenkt den Energiefluss im System so, dass Schwingungen "aus sich heraus" angeregt werden. Charakteristisch für "Stick-Slip" Schwingungen ist, dass zwei Körper zeitweise aneinander haften, dann auseinander gerissen werden und dann aneinander reiben - bis sie wieder aneinander haften.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*********************************************************/
/* MAXIMA script                                        */
/* version: wxMaxima 15.08.2                            */
/* author: Andreas Baumgart                              */
/* last updated: 2017-09-24                              */
/* ref: Kw25 (TM-C, Labor 6)                            */
/* description: finds the solution for                  */
/*              the nonlinear IVP                        */
/*********************************************************/
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->
 
{{MyCodeBlock|title=Declarations
Im Zentrum dieser Aufgabe steht die Kennlinie (engl.: Characteristic), die den Zusammenhang zwischen Tangentialkräft (Haftkraft, Reibkraft), Normalkraft und Relativgeschwindigkeit erfasst.
|text=Im Zentrum dieser Aufgabe steht die Kennlinie (engl.: Characteristic), die den Zusammenhang zwischen Tangentialkräft (Haftkraft, Reibkraft), Normalkraft und Relativgeschwindigkeit erfasst.


Dafür brauchen wir hier drei Parameter.
Dafür brauchen wir hier drei Parameter.
Zeile 42: Zeile 49:
* ''a=μ / μ<sub>0;</sub>''
* ''a=μ / μ<sub>0;</sub>''
* ''b'' : erfasst, welchen Ausschnitt der Sinus-Funktion wir nutzen;
* ''b'' : erfasst, welchen Ausschnitt der Sinus-Funktion wir nutzen;
* ''v<sub>0</sub>'': eine (kleine) Kriechgeschwindigkeit.<!-------------------------------------------------------------------------------->
* ''v<sub>0</sub>'': eine (kleine) Kriechgeschwindigkeit.
 
{{MyCodeBlock|title=Declarations
|text=Text
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*********************************************************/
/* declarations */
assume(a>0,b>0);
 
/* parameter */
params: [a=1/2, b = 5/6, v = 1., V0=0.001];
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->
 
{{MyCodeBlock|title=Friction Characteristic
Trockene Reibung im Modell beschreibt man mit zwei System-Parametern:
|text=Trockene Reibung im Modell beschreibt man mit zwei System-Parametern:


* dem Reibungskoeffizient ''μ'' und
* dem Reibungskoeffizient ''μ'' und
Zeile 61: Zeile 70:
Haften Körper und Unterlage aneinander (Relativgeschwindigkeit ''v<sub>r</sub>'' ist "Null"), so ist die Haftkraft
Haften Körper und Unterlage aneinander (Relativgeschwindigkeit ''v<sub>r</sub>'' ist "Null"), so ist die Haftkraft


<math>|H| \le \mu_0 \cdot N</math>
::<math>|H| \le \mu_0 \cdot N</math>


mit der Normalkraft ''N''. Bewegen sich die beiden relativ zueinander, so schreibt man
mit der Normalkraft ''N''. Bewegen sich die beiden relativ zueinander, so schreibt man


<math>|R| = \mu\cdot N</math>.
::<math>|R| = \mu\cdot N</math>.


Die Beträge bedeuten hier: die Kräfte sind gegen die Bewegung orientiert.
Die Beträge bedeuten hier: die Kräfte sind gegen die Bewegung orientiert.
Zeile 78: Zeile 87:
Kommerzielle Programme führen deshalb "Schaltstellen" ein, in denen der Lösungsalgorithmus an diesen Unstetigkeiten dann "etwas anderes" macht. Oft wird die Lösung des Anfangswertproblems dadurch aber sehr ineffizient. Hier schreiben wir deshalb eine Kennlinie an, bei der die Tangentialkraft (hier nennen wir sie Reibkraft) stetig von der Relativgeschwindigkeit ''v<sub>r</sub>'' zwischen Körper und Band abhängt.[[Datei:Kw25-03.png|mini|Reibkennlinie]]Wir suchen eine Kennlinie wie hier im Bild blau und rot gekennzeichnet. Die klassische Formulierung ist in grau hinterlegt. Die Kennlinie unserer Formulierung nennen wir Reibkennlinie
Kommerzielle Programme führen deshalb "Schaltstellen" ein, in denen der Lösungsalgorithmus an diesen Unstetigkeiten dann "etwas anderes" macht. Oft wird die Lösung des Anfangswertproblems dadurch aber sehr ineffizient. Hier schreiben wir deshalb eine Kennlinie an, bei der die Tangentialkraft (hier nennen wir sie Reibkraft) stetig von der Relativgeschwindigkeit ''v<sub>r</sub>'' zwischen Körper und Band abhängt.[[Datei:Kw25-03.png|mini|Reibkennlinie]]Wir suchen eine Kennlinie wie hier im Bild blau und rot gekennzeichnet. Die klassische Formulierung ist in grau hinterlegt. Die Kennlinie unserer Formulierung nennen wir Reibkennlinie


<math>R(\mu, \mu_0, v_r)</math>.
::<math>R(\mu, \mu_0, v_r)</math>.


Das Haften ist hier nur ein Sonderfall, den die Kennlinine mit abbildet.
Das Haften ist hier nur ein Sonderfall, den die Kennlinine mit abbildet.
Zeile 84: Zeile 93:
Die gesuchte Kennlinie
Die gesuchte Kennlinie


<math>R = \mu(v_r)\cdot N</math>
::<math>R = \mu(v_r)\cdot N</math>


muss punkt-symmetrisch sein (die Reibkraft ändert ihr Vorzeichen mit der Orientierung der Relativgeschwindigkeit). Welche Funktionen wir verwenden ist egal, hier probieren wir Sinus und Exponential-Funktionen aus. Wie diese Funktioen aneinader-gestückelt werden, steht im Lexikon unter "[[Sources/Lexikon/Reibkennlinie|Reibkennlinie]]".
muss punkt-symmetrisch sein (die Reibkraft ändert ihr Vorzeichen mit der Orientierung der Relativgeschwindigkeit). Welche Funktionen wir verwenden ist egal, hier probieren wir Sinus und Exponential-Funktionen aus. Wie diese Funktioen aneinader-gestückelt werden, steht im Lexikon unter "[[Sources/Lexikon/Reibkennlinie|Reibkennlinie]]".
Zeile 90: Zeile 99:
Wir arbeiten mit
Wir arbeiten mit


<math>\displaystyle \mu = \left\{ \begin{array}{lllll}\left( a-\sin\left( \pi \cdot {{b}^{2}}\right) \right) \cdot {{e}^{\displaystyle -\frac{\pi \cdot b\cdot \mathrm{cos}\left( \pi \cdot {{b}^{2}}\right) \cdot \left( b+\upsilon\right) }{\mathrm{sin}\left( \pi \cdot {{b}^{2}}\right) -a}}}-a&\text{für}&\upsilon&<-b\\\sin(\pi\;b\;\upsilon)&\text{für}-b<&\upsilon&<+b\\a-\left( a-\sin\left( \pi \cdot {{b}^{2}}\right) \right) \cdot {{e}^{\displaystyle -\frac{\pi \cdot b\cdot \cos\left( \pi \cdot {{b}^{2}}\right) \cdot \left( b-\upsilon\right) }{\sin\left( \pi \cdot {{b}^{2}}\right) -a}}}&\text{für}+b<&\upsilon&\end{array}\right. </math>.<!-------------------------------------------------------------------------------->
::<math>\displaystyle \mu = \left\{ \begin{array}{lllll}\left( a-\sin\left( \pi \cdot {{b}^{2}}\right) \right) \cdot {{e}^{\displaystyle -\frac{\pi \cdot b\cdot \mathrm{cos}\left( \pi \cdot {{b}^{2}}\right) \cdot \left( b+\upsilon\right) }{\mathrm{sin}\left( \pi \cdot {{b}^{2}}\right) -a}}}-a&\text{für}&\upsilon&<-b\\\sin(\pi\;b\;\upsilon)&\text{für}-b<&\upsilon&<+b\\a-\left( a-\sin\left( \pi \cdot {{b}^{2}}\right) \right) \cdot {{e}^{\displaystyle -\frac{\pi \cdot b\cdot \cos\left( \pi \cdot {{b}^{2}}\right) \cdot \left( b-\upsilon\right) }{\sin\left( \pi \cdot {{b}^{2}}\right) -a}}}&\text{für}+b<&\upsilon&\end{array}\right. </math>.
 
{{MyCodeBlock|title=Friction Characteristic
|text=Text
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*********************************************************/
/*  define friction characteristics (Reib-Kennlinie) */
ch : [sin(b*%pi*upsilon),0,0];
 
ch[2]: E*%e^(kappa*(upsilon+b))-a;
ch[2] : subst(solve([subst([upsilon=-b],ch[2]=ch[1]),subst([upsilon=-b],diff(ch[2]=ch[1],upsilon))],[E,\kappa])[1],ch[2]);
ch[3] : subst([upsilon=-upsilon],-ch[2]);
plot2d([[parametric, t, subst(params,subst(t,upsilon,ch[1])),subst(params,[t,-b, b])],
        [parametric, t, subst(params,subst(t,upsilon,ch[2])),subst(params,[t,-3,-b])],
        [parametric, t, subst(params,subst(t,upsilon,ch[3])),subst(params,[t,+b,+3])]],[legend,"sec. 0","sec -1","sec +1"],
        [y,-1,1],
        [style, [lines,3,1], [lines,3,2], [lines,3,2]], [xlabel, "Geschwindigkeit v/V0 →"], [ylabel, "Reib-Koeffizient μ/1 →"])$
 
/**** define nonlinear friction characteristic ***/
fric(upsilon, a,b) :=
  if upsilon < -b then
    (a-sin(%pi*b^2))*%e^(-(%pi*b*cos(%pi*b^2)*(b+upsilon))/(sin(%pi*b^2)-a))-a      /*ch[2]*/
  elseif upsilon > +b then
    a-(a-sin(%pi*b^2))*%e^(-(%pi*b*cos(%pi*b^2)*(b-upsilon))/(sin(%pi*b^2)-a))      /*ch[3]*/
  else
    sin(%pi*b*upsilon)                                                              /*ch[1]*/
    ;
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->
 
{{MyCodeBlock|title=Equilibrium Conditions
|text=
[[Datei:Kw25-02.png|mini|Freikörperbild|alternativtext=|links|150x150px]]Die Bewegungsgleichungen des Systems bekommen wir direkt aus dem Kräftegleichgewicht am Körper (mit dem [[Sources/Lexikon/Prinzip von d'Alembert|Prinzip von d'Alembert]]) zu
[[Datei:Kw25-02.png|mini|Freikörperbild|alternativtext=|links|150x150px]]Die Bewegungsgleichungen des Systems bekommen wir direkt aus dem Kräftegleichgewicht am Körper (mit dem [[Sources/Lexikon/Prinzip von d'Alembert|Prinzip von d'Alembert]]) zu


<math>m \; \ddot{u} + k\; u - R(\mu, \mu_0, v_r) = 0</math>.
::<math>m \; \ddot{u} + k\; u - R(\mu, \mu_0, v_r) = 0</math>.


Dimensionslos machen wir die Bewegungsgleichung mit
Dimensionslos machen wir die Bewegungsgleichung mit


* der Referenzzeit ''T'' aus
<ul>
<math>\begin{array}{ll}\omega_0 &= 2\pi/T \\&= \sqrt{k/m}\end{array}</math> mit der Eigenkreisfrequenz
<li>der Referenzzeit ''T'' aus<br/>
<math>\omega_0</math> des frei schwingenden Körpers (''R=0'') und
<math>\begin{array}{ll}\omega_0 &= 2\pi/T \\&= \sqrt{k/m}\end{array}</math><br/>
* der Auslenkung des Körpers an der Feder im Erd-Schwerefeld
mit der Eigenkreisfrequenz<br/>
<math>\displaystyle \hat{u} = \frac{m\;g}{k}</math>
<math>\omega_0</math>
<br/>des frei schwingenden Körpers (''R=0'') und</li>
<li>
der Auslenkung des Körpers an der Feder im Erd-Schwerefeld<br/>
<math>\displaystyle \hat{u} = \frac{m\;g}{k}</math></li>
</ul>


Wir erhalten mit
Wir erhalten mit


<math>u = \hat{u}\cdot U \text{ und } t = T\cdot \tau</math>
::<math>u = \hat{u}\cdot U \text{ und } t = T\cdot \tau</math>


als Bewegungsgleichung
als Bewegungsgleichung


<math>\displaystyle \frac{{{\mu}_{0}}\cdot g\cdot m }{4\cdot {{\pi }^{2}}}\cdot  \frac{{{d}^{2}U}}{d\,{{\tau}^{2}}}+{{\mu}_{0}}\cdot g\cdot m\cdot U-g\cdot m\cdot \mu(v_r)=0</math>  
::<math>\displaystyle \frac{{{\mu}_{0}}\cdot g\cdot m }{4\cdot {{\pi }^{2}}}\cdot  \frac{{{d}^{2}U}}{d\,{{\tau}^{2}}}+{{\mu}_{0}}\cdot g\cdot m\cdot U-g\cdot m\cdot \mu(v_r)=0</math>  


bzw.
bzw.


<math>\displaystyle \frac{{{d}^{2}U}}{d\,{{\tau}^{2}}}+4\pi^2 \cdot U-4\pi^2 \cdot \frac{\mu(v_r)}{\mu_0}=0</math><!-------------------------------------------------------------------------------->
::<math>\displaystyle \frac{{{d}^{2}U}}{d\,{{\tau}^{2}}}+4\pi^2 \cdot U-4\pi^2 \cdot \frac{\mu(v_r)}{\mu_0}=0</math>
 
{{MyCodeBlock|title=Equilibrium Conditions
|text=Text
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/*********************************************************/
/* define ODE in dim'less coordinate U */
equil : m*'diff(u,t,2) + k*u - R = 0;
 
fstOrd : ['diff(U,tau,2)='diff(V,tau,1)];
ref: [solve((2*%pi/T)^2 = k/m,T)[2]];
 
equil : subst([R=m*g*mu[0]*fric((v-V)/V0,a,b), 'diff((mu[0]*m*g/k*U),tau,2)=mu[0]*m*g/k*'diff(U,tau,2)],subst(u=mu[0]*m*g/k*U, subst(ref,subst(['diff(u,t,2)= 'diff(u,tau,2)/T^2],equil))));
equil : [subst(fstOrd,equil), 'diff(U,tau,1)=V];
 
dydt : solve(equil,['diff(V,tau,1),'diff(U,tau,1)])[1];
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
<!-------------------------------------------------------------------------------->


{{MyCodeBlock|title=Solving
|text=
Die Differentialgleichung erster Ordnung
Die Differentialgleichung erster Ordnung


Zeile 150: Zeile 192:
Als Anfangsbedingungen wählen wir diese vier:
Als Anfangsbedingungen wählen wir diese vier:


<math>\underline{q}_{0,1} = \left(\begin{array}{l}1\\0\end{array} \right)</math>, <math>\underline{q}_{0,2} = \left(\begin{array}{l}-1\\+0\end{array} \right)</math>, <math>\underline{q}_{0,3} = \left(\begin{array}{l}0.\\0.001\end{array} \right)</math>, <math>\underline{q}_{0,4} = \left(\begin{array}{l}0\\3\end{array} \right)</math>.<!-------------------------------------------------------------------------------->
::<math>\underline{q}_{0,1} = \left(\begin{array}{l}1\\0\end{array} \right)</math>,
 
::<math>\underline{q}_{0,2} = \left(\begin{array}{l}-1\\+0\end{array} \right)</math>,
{{MyCodeBlock|title=Solving
::<math>\underline{q}_{0,3} = \left(\begin{array}{l}0.\\0.001\end{array} \right)</math>,
|text=Text
::<math>\underline{q}_{0,4} = \left(\begin{array}{l}0\\3\end{array} \right)</math>.
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/********************************/
/* numerical solution of IVP */
times : subst([t0 = 0, tmax = 4, dt = 0.001],
                    [t, t0, tmax, dt]);
dgl1stOrder : [rhs(dydt[2]),float(subst(params,rhs(dydt[1])))];
stateVabs : [U,V];
initiVals : [[1,0],[-1,0],
            [0,0.001],[0,3]];
/* solution of IVP (ivs) */
for i: 1 thru length(initiVals) do
  ivs[i] : rk(dgl1stOrder, stateVabs, initiVals[i], times)$
</syntaxhighlight>
</syntaxhighlight>
}}
}}


==tmp==
Im Auslenkung ''U(τ)'': für die vier Anfangsbedingungen:


<table class="wikitable" style="background-color:white; float: left;  margin-right:14px;">
<!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Post-Processing
|text=
Für die vier Anfangsbedingungen finden wir diese Zeitverläufe der Auslenkung ''U(τ)'':
 
<table class="wikitable" style="background-color:white;">
<tr><td>a)[[Datei:Kw25-21.png|rahmenlos]]
<tr><td>a)[[Datei:Kw25-21.png|rahmenlos]]
</td><td>b)[[Datei:Kw25-22.png|rahmenlos]]
</td><td>b)[[Datei:Kw25-22.png|rahmenlos]]
</td></tr><tr><td>c)[[Datei:Kw25-23.png|rahmenlos]]</td><td>d)[[Datei:Kw25-24.png|rahmenlos]]</td></tr></table>
</td></tr><tr><td>c)[[Datei:Kw25-23.png|rahmenlos]]</td><td>d)[[Datei:Kw25-24.png|rahmenlos]]</td></tr></table>


Unabhängig von den Anfangsbedingungen läuft das System sofort in die "Stick-Slip" Schwingung hinein.


<table class="wikitable" style="background-color:white; float: left;  margin-right:14px;">
Phasen Diagramme:
<table class="wikitable" style="background-color:white;">
<tr>
<tr>
<td>a)[[Datei:Kw25-31.png|rahmenlos]]</td>
<td>a)[[Datei:Kw25-31.png|rahmenlos]]</td>
Zeile 176: Zeile 233:
</table>
</table>


 
Hier erkennt man gut, wie der Körper am Band haften bleibt - für V=1 sind Band und Körper-Geschwindigkeit gleich.
 
 
Unabhängig von den Anfangsbedingungen läuft das System sofort in die "Stick-Slip" Schwingung hinein.
 
Phasen Diagramme:
 
 
Hier erkennt man gut, wie der Körper am Band haften bleibt - für V=1 sind Band und Körper-Geschwindigkeit gleich.<!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Post-Processing
|text=Text
|code=
|code=
<syntaxhighlight lang="lisp" line start=1>
<syntaxhighlight lang="lisp" line start=1>
1+1
/********************************/
/* plot results, time domain  */
for i: 1 thru length(initiVals) do
(T[i] : makelist(ivs[i][j][1],j,1,length(ivs[i])),
uD[i] : makelist(ivs[i][j][2],j,1,length(ivs[i])),
vD[i] : makelist(ivs[i][j][3],j,1,length(ivs[i])),
plot2d([discrete, T[i], uD[i]],
      [title, sconcat("start @: ",string(initiVals[i]))],
                  [xlabel,"τ/1->"], [ylabel,"U/1->"]));
 
/* phase plot */
curves : makelist([discrete,uD[i],vD[i]],i,1,length(initiVals))$
plot2d(curves, [legend, false], [x,-1.2,1.2],
                  [ylabel,"V/1->"], [xlabel,"U/1->"]);
plot2d(curves, [legend, false], [x,-0.1,0.8], [y,-1,2],
                  [ylabel,"V/1->"], [xlabel,"U/1->"]);
</syntaxhighlight>
</syntaxhighlight>
}}
}}

Version vom 29. März 2021, 07:06 Uhr


Aufgabenstellung

Ein Körper (Masse m) liegt auf einem Band, das über eine Rolle (Radius r) mit konstanter Drehgeschwindigkeit Ω angetrieben wird. Der Körper ist über eine Feder (Steifigkeit k) mit der Umgebung verbunden. Zwischen Körper und Band wirkt trockene Reibung (μ, μ0).


Lageplan

Gesucht ist die numerische Lösung für den Klotz auf dem Band als Anfangswertproblem, untersucht werden selbsterregte Schwingungen.


Lösung mit Maxima

Header

"Stick-Slip" Schwingungen sind klassische selbsterregte Schwingungen. Selbsterrung heißt: das System lenkt den Energiefluss im System so, dass Schwingungen "aus sich heraus" angeregt werden. Charakteristisch für "Stick-Slip" Schwingungen ist, dass zwei Körper zeitweise aneinander haften, dann auseinander gerissen werden und dann aneinander reiben - bis sie wieder aneinander haften.


/*********************************************************/
/* MAXIMA script                                         */
/* version: wxMaxima 15.08.2                             */
/* author: Andreas Baumgart                              */
/* last updated: 2017-09-24                              */
/* ref: Kw25 (TM-C, Labor 6)                             */
/* description: finds the solution for                   */
/*              the nonlinear IVP                        */
/*********************************************************/




Declarations

Im Zentrum dieser Aufgabe steht die Kennlinie (engl.: Characteristic), die den Zusammenhang zwischen Tangentialkräft (Haftkraft, Reibkraft), Normalkraft und Relativgeschwindigkeit erfasst.

Dafür brauchen wir hier drei Parameter.

  • a=μ / μ0;
  • b : erfasst, welchen Ausschnitt der Sinus-Funktion wir nutzen;
  • v0: eine (kleine) Kriechgeschwindigkeit.

/*********************************************************/
/* declarations */
assume(a>0,b>0);

/* parameter */
params: [a=1/2, b = 5/6, v = 1., V0=0.001];




Friction Characteristic

Trockene Reibung im Modell beschreibt man mit zwei System-Parametern:

  • dem Reibungskoeffizient μ und
  • dem Haftungskoeffizient μ0.

Haften Körper und Unterlage aneinander (Relativgeschwindigkeit vr ist "Null"), so ist die Haftkraft

mit der Normalkraft N. Bewegen sich die beiden relativ zueinander, so schreibt man

.

Die Beträge bedeuten hier: die Kräfte sind gegen die Bewegung orientiert.

Für die numerische Lösung des Anfangswertproblems ist diese Bescheibung eine Katastrophe!

  1. Wir haben eine Kennlinie mit Sprung zwischen μ und μ0.
  2. Das Vorzeichen des Funktionswerts für Haftung hängt davon ab, mit welcher Orientierung eine resultierende Kraft auf den Körper wirkt.

Der Sprung ist eine effektive Handbremse für jeden Algorithmus zur numerischen Integration der Bewegungsgleichung, der von einer stetigen und stetig differenzierbaren "Rechten Seite" der Bewegungsgleichung ausgehen (vgl. Runge-Kutta-Verfahren 4.ter Ordnung) - also für praktisch alle Algorithmen. Und dass die Haftkraft nicht eindeutig von den Zustandsgrößen des Systems abhängt, hebelt jedes Standard-Lösungsverfahren aus.

Kommerzielle Programme führen deshalb "Schaltstellen" ein, in denen der Lösungsalgorithmus an diesen Unstetigkeiten dann "etwas anderes" macht. Oft wird die Lösung des Anfangswertproblems dadurch aber sehr ineffizient. Hier schreiben wir deshalb eine Kennlinie an, bei der die Tangentialkraft (hier nennen wir sie Reibkraft) stetig von der Relativgeschwindigkeit vr zwischen Körper und Band abhängt.

Reibkennlinie

Wir suchen eine Kennlinie wie hier im Bild blau und rot gekennzeichnet. Die klassische Formulierung ist in grau hinterlegt. Die Kennlinie unserer Formulierung nennen wir Reibkennlinie

.

Das Haften ist hier nur ein Sonderfall, den die Kennlinine mit abbildet.

Die gesuchte Kennlinie

muss punkt-symmetrisch sein (die Reibkraft ändert ihr Vorzeichen mit der Orientierung der Relativgeschwindigkeit). Welche Funktionen wir verwenden ist egal, hier probieren wir Sinus und Exponential-Funktionen aus. Wie diese Funktioen aneinader-gestückelt werden, steht im Lexikon unter "Reibkennlinie".

Wir arbeiten mit

.

/*********************************************************/
/*  define friction characteristics (Reib-Kennlinie) */
ch : [sin(b*%pi*upsilon),0,0];

ch[2]: E*%e^(kappa*(upsilon+b))-a;
ch[2] : subst(solve([subst([upsilon=-b],ch[2]=ch[1]),subst([upsilon=-b],diff(ch[2]=ch[1],upsilon))],[E,\kappa])[1],ch[2]);
ch[3] : subst([upsilon=-upsilon],-ch[2]);
plot2d([[parametric, t, subst(params,subst(t,upsilon,ch[1])),subst(params,[t,-b, b])],
        [parametric, t, subst(params,subst(t,upsilon,ch[2])),subst(params,[t,-3,-b])],
        [parametric, t, subst(params,subst(t,upsilon,ch[3])),subst(params,[t,+b,+3])]],[legend,"sec. 0","sec -1","sec +1"],
        [y,-1,1],
        [style, [lines,3,1], [lines,3,2], [lines,3,2]], [xlabel, "Geschwindigkeit v/V0 →"], [ylabel, "Reib-Koeffizient μ/1 →"])$

/**** define nonlinear friction characteristic ***/
fric(upsilon, a,b) := 
  if upsilon < -b then
     (a-sin(%pi*b^2))*%e^(-(%pi*b*cos(%pi*b^2)*(b+upsilon))/(sin(%pi*b^2)-a))-a       /*ch[2]*/
  elseif upsilon > +b then
     a-(a-sin(%pi*b^2))*%e^(-(%pi*b*cos(%pi*b^2)*(b-upsilon))/(sin(%pi*b^2)-a))       /*ch[3]*/
  else
     sin(%pi*b*upsilon)                                                               /*ch[1]*/
     ;




Equilibrium Conditions

Freikörperbild

Die Bewegungsgleichungen des Systems bekommen wir direkt aus dem Kräftegleichgewicht am Körper (mit dem Prinzip von d'Alembert) zu

.

Dimensionslos machen wir die Bewegungsgleichung mit

  • der Referenzzeit T aus

    mit der Eigenkreisfrequenz

    des frei schwingenden Körpers (R=0) und
  • der Auslenkung des Körpers an der Feder im Erd-Schwerefeld

Wir erhalten mit

als Bewegungsgleichung

bzw.


/*********************************************************/
/* define ODE in dim'less coordinate U */
equil : m*'diff(u,t,2) + k*u - R = 0;

fstOrd : ['diff(U,tau,2)='diff(V,tau,1)];
ref: [solve((2*%pi/T)^2 = k/m,T)[2]];

equil : subst([R=m*g*mu[0]*fric((v-V)/V0,a,b), 'diff((mu[0]*m*g/k*U),tau,2)=mu[0]*m*g/k*'diff(U,tau,2)],subst(u=mu[0]*m*g/k*U, subst(ref,subst(['diff(u,t,2)= 'diff(u,tau,2)/T^2],equil))));
equil : [subst(fstOrd,equil), 'diff(U,tau,1)=V];

dydt : solve(equil,['diff(V,tau,1),'diff(U,tau,1)])[1];




Solving

Die Differentialgleichung erster Ordnung

lösen wir nun als Anfangswertproblem

mit

.

Als Anfangsbedingungen wählen wir diese vier:

,
,
,
.

/********************************/
/* numerical solution of IVP */
		
times : subst([t0 = 0, tmax = 4, dt = 0.001],
                    [t, t0, tmax, dt]);
dgl1stOrder : [rhs(dydt[2]),float(subst(params,rhs(dydt[1])))];
stateVabs : [U,V];
initiVals : [[1,0],[-1,0],
             [0,0.001],[0,3]];
/* solution of IVP (ivs) */
for i: 1 thru length(initiVals) do
   ivs[i] : rk(dgl1stOrder, stateVabs, initiVals[i], times)$




Post-Processing

Für die vier Anfangsbedingungen finden wir diese Zeitverläufe der Auslenkung U(τ):

a) b)
c)d)

Unabhängig von den Anfangsbedingungen läuft das System sofort in die "Stick-Slip" Schwingung hinein.

Phasen Diagramme:

a) b)

Hier erkennt man gut, wie der Körper am Band haften bleibt - für V=1 sind Band und Körper-Geschwindigkeit gleich.


/********************************/
/* plot results, time domain  */
for i: 1 thru length(initiVals) do
	(T[i] : makelist(ivs[i][j][1],j,1,length(ivs[i])),
	 uD[i] : makelist(ivs[i][j][2],j,1,length(ivs[i])),
	 vD[i] : makelist(ivs[i][j][3],j,1,length(ivs[i])),
	 plot2d([discrete, T[i], uD[i]],
	      [title, sconcat("start @: ",string(initiVals[i]))],
	                   [xlabel,"τ/1->"], [ylabel,"U/1->"]));

/* phase plot */
curves : makelist([discrete,uD[i],vD[i]],i,1,length(initiVals))$
plot2d(curves, [legend, false], [x,-1.2,1.2],
                   [ylabel,"V/1->"], [xlabel,"U/1->"]);
plot2d(curves, [legend, false], [x,-0.1,0.8], [y,-1,2],
                   [ylabel,"V/1->"], [xlabel,"U/1->"]);




Lageplan



Links

  • ...

Literature

  • ...