Gelöste Aufgaben/Kw25: Unterschied zwischen den Versionen

Aus numpedia
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 13: Zeile 13:


==Aufgabenstellung==
==Aufgabenstellung==
SOME TEXT
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 (''μ, μ<sub>0</sub>'').


<onlyinclude>
<onlyinclude>
[[Datei:Screenshot 20210111-063733~2.png|100px|left|mini|Caption]]
[[Datei:Kw25-01.png|alternativtext=|links|mini|Lageplan|250x250px]]
Gesucht ist "SOME EXPLANATION"
Gesucht ist die numerische Lösung für den Klotz auf dem Band als Anfangswertproblem, untersucht werden selbsterregte Schwingungen.
</onlyinclude>
</onlyinclude>


== Lösung mit Maxima ==
== Lösung mit Maxima ==
Lorem Ipsum ....


==tmp==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->
{{MyCodeBlock|title=Title
{{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
|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.


<!-------------------------------------------------------------------------------->
* ''a=μ / μ<sub>0;</sub>''
{{MyCodeBlock|title=Title
* ''b'' : erfasst, welchen Ausschnitt der Sinus-Funktion wir nutzen;
|text=Text
* ''v<sub>0</sub>'': eine (kleine) Kriechgeschwindigkeit.
|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
|text=Trockene Reibung im Modell beschreibt man mit zwei System-Parametern:
 
* dem Reibungskoeffizient ''μ'' und
* dem Haftungskoeffizient ''μ<sub>0</sub>''.
 
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>
 
mit der Normalkraft ''N''. Bewegen sich die beiden relativ zueinander, so schreibt man
 
::<math>|R| = \mu\cdot N</math>.
 
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!
 
# Wir haben eine Kennlinie mit Sprung zwischen ''μ'' und ''μ<sub>0</sub>''.
# 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. [[Anfangswertprobleme/Methoden zur Lösung von Anfangswertproblemen/Runge-Kutta-Verfahren 4.ter Ordnung|Runge-Kutta-Verfahren 4.ter Ordnung]]) - also für praktisch alle Algorithmen. Und dass die Haftkraft nicht eindeutig von den [[Sources/Lexikon/Zustandsgröße|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 ''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>.
 
Das Haften ist hier nur ein Sonderfall, den die Kennlinine mit abbildet.
 
Die gesuchte Kennlinie
 
::<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]]".
 
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>.
{{MyCodeBlock|title=Title
|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
 
::<math>m \; \ddot{u} + k\; u - R(\mu, \mu_0, v_r) = 0</math>.
 
Dimensionslos machen wir die Bewegungsgleichung mit
 
<ul>
<li>der Referenzzeit ''T'' aus<br/>
<math>\begin{array}{ll}\omega_0 &= 2\pi/T \\&= \sqrt{k/m}\end{array}</math><br/>
mit der Eigenkreisfrequenz<br/>
<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
 
::<math>u = \hat{u}\cdot U \text{ und } t = T\cdot \tau</math>
 
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>  
{{MyCodeBlock|title=Title
 
|text=Text
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>
|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
 
::<math>\begin{array}{ll}\displaystyle \frac{d\,U}{d\,\tau}&=V,\\\displaystyle \frac{d\,V}{d\,\tau}&=4\cdot {{\pi }^{2}}\cdot \left( \mu\left( v_r\right) - U\right)\end{array}</math>
 
lösen wir nun als Anfangswertproblem
 
::<math>\underline{\dot{q}} = \underline{f}(\underline{q})</math>
 
mit
 
::<math>\underline{q} = \left(\begin{array}{c}U\\V\end{array}\right)</math>.
 
Als Anfangsbedingungen wählen wir diese vier:


<!-------------------------------------------------------------------------------->
::<math>\underline{q}_{0,1} = \left(\begin{array}{l}1\\0\end{array} \right)</math>,
{{MyCodeBlock|title=Title
::<math>\underline{q}_{0,2} = \left(\begin{array}{l}-1\\+0\end{array} \right)</math>,
|text=Text
::<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>.
|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==


<!-------------------------------------------------------------------------------->
<!-------------------------------------------------------------------------------->{{MyCodeBlock|title=Post-Processing
{{MyCodeBlock|title=Title
|text=
|text=Text
Für die vier Anfangsbedingungen finden wir diese Zeitverläufe der Auslenkung ''U(τ)'':
|code=
<syntaxhighlight lang="lisp" line start=1>
1+1
</syntaxhighlight>
}}


<table class="wikitable" style="background-color:white; float: left;  margin-right:14px;">
<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.


Phasen Diagramme:
<table class="wikitable" style="background-color:white;">
<tr>
<td>a)[[Datei:Kw25-31.png|rahmenlos]]</td>
<td>b)[[Datei:Kw25-32.png|rahmenlos]]</td>
</tr>
</table>


[[Datei:Kw25-03.png|mini|Reibkennlinie]]
Hier erkennt man gut, wie der Körper am Band haften bleibt - für V=1 sind Band und Körper-Geschwindigkeit gleich.
[[Datei:Kw25-01.png|mini|Lageplan]]
|code=
[[Datei:Kw25-02.png|mini|Freikörperbild]]
<syntaxhighlight lang="lisp" line start=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->"]));


[[Datei:Kw25-31.png|rahmenlos]]
/* phase plot */
 
curves : makelist([discrete,uD[i],vD[i]],i,1,length(initiVals))$
[[Datei:Kw25-32.png|rahmenlos]]
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>
}}


<hr/>
<hr/>

Aktuelle Version vom 29. März 2021, 07:08 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->"]);





Links

  • ...

Literature

  • ...