Sie sind auf Seite 1von 2

04.02.23, 20:19 22W_TM3_MB-CED: Julia-Code für die Lösung des Schwingers aus Aufgabe 10.

Technische Mechanik III (22W)



Painel / Meus cursos / 22W_TM3_MB-CED / Numerik und Tools / Julia-Code für die Lösung des Schwingers aus Aufgabe 10.3

Julia-Code für die Lösung des Schwingers aus Aufgabe 10.3

Start aus der Ruhe aus einer Lage, die nur geringfügig von der statischen Gleichgewichtslage (GGL) abweicht. chi ist das Verhältnis von Masse 2
zu Masse 1. L ist die Gesamtlänge des Seils (die für die Dynamik des Systems nicht relevant ist, sondern nur für die konkrete Position der Massen).
Hinweis: Der Programmcode sieht möglicherweise kompliziert aus. Machen Sie sich klar, dass ein Großteil mit "copy-and-paste" übernommen
werden kann, wenn ein anderes System mit Freiheitsgrad 1 und zwei Koordinaten simuliert werden soll. Insbesondere die Differentiationsformeln
in der Funktion für den Zwang können wiederverwendet werden.

using Optim, Plots, ForwardDiff, DifferentialEquations

struct Systemparameter
   g::Float64
   chi::Float64
   b::Float64
   L::Float64
end
param = Systemparameter(9.81,2.0,4.0,12.0)

function zwang(a1,z,p)
   # Es wird der Zwang dividiert durch m1/2 betrachtet
   f(y) = p.L - sqrt(y^2 + p.b^2)
   Psi(q) = f(q[1]) - q[2]
   y1 = z[1]
   v1 = z[2]
   y2 = f(y1)
   q = [y1; y2]
   G = ForwardDiff.gradient(Psi,q)
   H = ForwardDiff.hessian(Psi,q)
   v2 = -G[1]/G[2]*v1
   a2 = - (G[1]*a1 + H[1,1]*v1^2 + (H[1,2] + H[2,1])*v1*v2 + H[2,2]*v2^2)/G[2]
   return ((a1 - p.g)^2 + p.chi*(a2 - p.g)^2)
end

function dgl!(F,z,param,t)
   Z(a1) = zwang(a1,z,param)
   erg = optimize(Z, -10.0,10.0) 
   F[1] = z[2]
   F[2] = Optim.minimizer(erg)
end

y1GGL = param.b/sqrt(3)

https://lms.bht-berlin.de/mod/page/view.php?id=995140 1/2
04.02.23, 20:19 22W_TM3_MB-CED: Julia-Code für die Lösung des Schwingers aus Aufgabe 10.3
y1_start = y1GGL + param.b/50
v1_start = 0.0
z_start = [y1_start; v1_start]

tspan = (0.0,7.0)
prob = ODEProblem(dgl!,z_start,tspan,param)
sol = solve(prob)

plot(sol,linewidth=2,xaxis="t",label=["y_1 [m]" "v_1 [m/s]"],layout=(2,1))

Última atualização: Freitag, 16 Dez 2022, 12:26

◄ Python-Code für die Animation des Doppelpendels

Seguir para...

Lösung des Anfangswertproblems (mit R) ►

Português - Brasil (‎pt_br)‎


Deutsch (‎de)‎
English (‎en)‎
Español - Internacional ‎(es)‎
Français (‎fr)‎
Italiano ‎(it)‎
Polski ‎(pl)‎
Português - Brasil (‎pt_br)‎
Português - Portugal ‎(pt)‎
Türkçe ‎(tr)‎
Русский ‎(ru)‎
‫ العربية‬‎(ar)‎

Obter o aplicativo para dispositivos móveis

Berliner Hochschule für Technik | Datenschutz- und Einwilligungserklärung | Hinweise zum Urheberrecht | Impressum

https://lms.bht-berlin.de/mod/page/view.php?id=995140 2/2

Das könnte Ihnen auch gefallen