Bauinformatik 1Ubungen
Ernst Baeck
Fachgebiet Statik und Dynamik der Flachentragwerke
10. April 2019
E. Baeck (Uni-DUE) Folien-Skript (U) 1 / 31
Ubungen
Ubungen
E. Baeck (Uni-DUE) Folien-Skript (U) 2 / 31
Ubungen Fakultat
Fakultat, die Themen
Große numerischer Datentypen von VBA
Deren Wertebereich
Einfache indizierte Schleife (for-next)
Programmabbruch durch Uberlauf
Schreiben in das Direktfenster
E. Baeck (Uni-DUE) Folien-Skript (U) 3 / 31
Ubungen Fakultat
Fakultat, der Algorithmus
f = n! = 1 · 2 · · · (n − 1) · n =n∏
i=1
i
Implementierung furbyte, integer, long
single, double
Prufen auf Uberlauf?
Definitions- und Wertebereich?
Start
f = 1i = 1
f = f · i
i = ni = i + 1
print results
End
ja
nein
E. Baeck (Uni-DUE) Folien-Skript (U) 4 / 31
Ubungen Genauigkeit
Genauigkeit des Fließkomma-Datentyps
Ermittlung der Fließkomma-Genauigkeit (Single, Double)
Implizite Schleife (do while - loop)
E. Baeck (Uni-DUE) Folien-Skript (U) 5 / 31
Ubungen Genauigkeit
Genauigkeitsermittlung, der Algorithmus
Test auf Verschwinden einer zueins vergleichbar kleinen Zahl
s = a+ b mit: s?= a ∧ b > 0
Reduktion von b solange, esnoch sichtbar ist. DannRucknahme der letztenReduktion.
Implementierung furSingle
Double
Starta = 1.b = 1.
b = b/2s = a + b
s ≥ a
b = b ∗ 2Stop
ja
nein
E. Baeck (Uni-DUE) Folien-Skript (U) 6 / 31
Ubungen Quadratische Gleichung
Quadratische Gleichung, die Themen
Mathematische Funktionen in VBA
Fallunterscheidung und Verzweigungen (if-elseif-else-endif)
Datenerfassung in XLS-Tabelle
Ausgabe der Ergebnisse in eine XLS-Tabelle
Debuggen
E. Baeck (Uni-DUE) Folien-Skript (U) 7 / 31
Ubungen Quadratische Gleichung
Quadratische Gleichung, der Algorithmus
Die allgemeine Form der quadratischen Gleichung lautet
a · x2 + b · x + c = 0
Das Problem zerfallt in die folgenden Falle.a 6= 0 Quadratischer Fall, zwei Losungena = 0 ∧ b 6= 0 Linearer Fall, eine Losunga = 0 ∧ b = 0 ∧ c 6= 0 Konstanter Fall, keine Losunga = 0 ∧ b = 0 ∧ c = 0 Konstanter Fall, unendlich viele Losungen
Bitte auch Vorzeichen von d = b2 − 4 · a · c beachten!d ≥ 0 Quadratischer Fall, zwei reele Losungend < 0 Quadratischer Fall, zwei komplexe Losungen
E. Baeck (Uni-DUE) Folien-Skript (U) 8 / 31
Ubungen Quadratische Gleichung
PAP der Quadratische Gleichung
a · x2 + b · x + c = 0
Start
a = 0 b = 0 c = 0Unendlich
vieleLosungen
Stop
KeineLosung
Stopx = − cb Stopd = b2 − 4 · a · c
d < 0 x1,2 = −b±i√
−d2·a Stop
x1,2 = −b±√
d2·a
Stop
ja ja ja
neinneinnein
ja
nein
E. Baeck (Uni-DUE) Folien-Skript (U) 9 / 31
Ubungen Quadratische Gleichung
GUI der Quadratische Gleichung
Eingabe der Konstanten aus gelben Felder D4-6 lesen.
Ergebnisdaten Felder D8-9 ausgeben.
Kommentarausgabe in Feld C11.
Programm mit Schaltflache starten.
E. Baeck (Uni-DUE) Folien-Skript (U) 10 / 31
Ubungen Newton’s Nullstellenermittlung
Newton Iteration, die Themen
Funktionen und Unterprogramme
Implementierung eines Iterationsverfahrens
Numerische Ableitung
Schleife mit impliziter Abbruchkontrolle (do-loop, exit do)
Datenerfassung in XLS-Tabelle
Ausgabe der Ergebnisse in eine XLS-Tabelle
Debuggen
E. Baeck (Uni-DUE) Folien-Skript (U) 11 / 31
Ubungen Newton’s Nullstellenermittlung
Die Idee
Startpunkt ist beliebig, falls nichts bekannt.
Suche nach einem besseren Punkt xn+1.
Steigung der Tangente ist:ddx f (x = xn) = f ′(xn)
sowie andererseits:f (xn)
xn−xn+1
aufgelost nach xn+1:
xn+1 = xn − f (xn)f ′(xn)
Nachster Punkt: xn ⇒ xn+1
Fallunterscheidung:
Erfolg : |f (xn)| ≤ ε Losung gefunden.Problem : |f ′(xn)| ≤ ε Neuen Versuch starten.Misserfolg : n > nmax Nichts gefunden! Abbruch!
E. Baeck (Uni-DUE) Folien-Skript (U) 12 / 31
Ubungen Newton’s Nullstellenermittlung
Der Pseudocode
Der Pseudocode formuliert das Problem in lockerer Art.
1 Wahle einen Startwert x .
2 Falls maximale Anzahl Iterationen erreicht, Abbruch. Gehe nach 10.
3 Inkrementiere Interationszahler.
4 Berechne f (x)
5 Falls |f (x)| < ε, dann Nullstelle gefunden. Gehe nach 10.
6 Berechne f ′(x).
7 Falls |f ′(x)| < ε, x ⇐ x + x , weiter bei 2.
8 Nachsten x-Wert berechnen: x ⇐ x − f (x)f ′(x)
9 Nachster Iterationsschritt mit Punkt 2.
10 Ende!
E. Baeck (Uni-DUE) Folien-Skript (U) 13 / 31
Ubungen Newton’s Nullstellenermittlung
Das Flussdiagramm
StartParameter setzen:x0; itmax ; ε; ...
Startwerte setzen:x = x0; it = 0;
it ≥ itmax
Funktionswert und Ableitung:F = f (x); FS = f ′(x);
nein
Keine Losungja
|F | < ε Losungja
|FS| < ε
nein
x = x + sja
it = it + 1
x = x − FFS
it = it + 1
nein
E. Baeck (Uni-DUE) Folien-Skript (U) 14 / 31
Ubungen Newton’s Nullstellenermittlung
Newton’s GUI
Eingabe in den gelben Felder C3-C5 lesen.Programmstart durch Schaltflache!Ergebnisausgabe in Felder C8-C10.Ausgabe der Iterationsdaten in Tabelle B13.
E. Baeck (Uni-DUE) Folien-Skript (U) 15 / 31
Ubungen Rotationen
Rotationen, die Themen
Einheitsvektoren
Koordinatensysteme
Matrix eines Koordinatensystems
Drehmatrizen
Drehung um globale und lokale Achsen
Matrixmultiplikation
Implementierung in Form eines VBA-Klassenmoduls
E. Baeck (Uni-DUE) Folien-Skript (U) 16 / 31
Ubungen Rotationen
Einheitsvektoren und Koordinatensysteme
Einheitsvektoren, normierter Vektor: ~e = ~v‖~v‖
~e1 =
100
, ~e2 =
010
, ~e3 =
001
Koordinatensysteme (geradlinige orthogonale)beschrieben durch Basisvektoren ~ei
K = (~e1, ~e2, ~e3) =
1 0 00 1 00 0 1
Einheitsvektoren in 2D
E. Baeck (Uni-DUE) Folien-Skript (U) 17 / 31
Ubungen Rotationen
Eigenschaften von Drehmatrizen
Drehmatrizen D haben die Norm 1,
det(D) = ‖D‖ = 1
Drehmatrizen sind orthogonale Matrizen
⇒ ~ei · ~ej = δi,j , z.B.:
cos(α) −sin(α) 0sin(α) cos(α) 0
0 0 1
Die inverse der Drehmatrix ist deren Transponierte
D−1 = DT ,
z.B.
cos(α) −sin(α) 0sin(α) cos(α) 0
0 0 1
·
cos(α) sin(α) 0−sin(α) cos(α) 0
0 0 1
=
1 0 00 1 00 0 1
E. Baeck (Uni-DUE) Folien-Skript (U) 18 / 31
Ubungen Rotationen
Drehmatrizen
Drehung eines Vektors um Winkel α: ~v ′ = Dαi· ~v
bzg. z-Achse: Beispiele
Dαz=
cos(α) −sin(α) 0sin(α) cos(α) 0
0 0 1
,
100
· D90z=
010
bzg. x-Achse:
Dαx=
1 0 00 cos(α) −sin(α)0 sin(α) cos(α)
,
001
· D90x=
0−10
bzg. y -Achse:
Dαy=
cos(α) 0 sin(α)0 1 0
−sin(α) 0 cos(α)
,
100
· D90y=
00−1
E. Baeck (Uni-DUE) Folien-Skript (U) 19 / 31
Ubungen Rotationen
Drehen eines Koordinatensystems
Koordinatensystem sei ein kartesisches Weltkoordinatensystem
K =
1 0 00 1 00 0 1
Drehung um globale Achsen (x, y, z) durch Multiplikation von links
K ′ = D · K
Drehung um lokale Achsen (1, 2, 3) durch Multiplikation von rechts
K ′ = K · D · K−1 · K = K · D, → zunachst auf global drehen mit K−1
→ K−1 · K = 1→ zuletzt wieder nach K drehen
E. Baeck (Uni-DUE) Folien-Skript (U) 20 / 31
Ubungen Rotationen
GUI der Rotation
Eingabe in gelb hinterlegten Feldern
Die Drehmatrix ist Matrix der akkumulierten Drehungen
Zur Verbesserung der Ausgabe wird ein Rahmen gezeichnet
E. Baeck (Uni-DUE) Folien-Skript (U) 21 / 31
Ubungen Rotationen
Die Rotator -Klasse
Der Konstruktor Class Initialize initialisiertdie rad-grad Konvertierung toRad.
Drehmatrix D wird in rm gespeichert.
run setzt Eingabe:
> Drehwinkel, Drehachse, Achsentyp> zu drehendes Koordinatensystem K
und startet Transformation.
setMat generiert rm, D aus Eingabe.
matMult erzeugt Matrixprodukt:
> D · K , global> K · D, lokal
UML-Klassendiagramm
Rotator
- rm(3,3)- toRad
- Class Initialize- setMat+ matMult+ run
E. Baeck (Uni-DUE) Folien-Skript (U) 22 / 31
Ubungen Quader
Quader, die Themen
Implementierung einer Quader-Klasse
Beschreibung durch
Kantenlangen,Referenzpunkt in BodenmitteLokales Koordinatensystem
Rotationen erzeugen durch Rotator -Objekt
Implementierung in Form eines VBA-Klassenmoduls
Zeichnen der Quaderkanten in einem xy-Diagramm
Ausgabe von Volumen und Massenschwerpunkt
E. Baeck (Uni-DUE) Folien-Skript (U) 23 / 31
Ubungen Quader
GUI des Quaders
Eingabe in gelb hinterlegten Feldern
Das lokale Koordinatensystem erzeugt durch sequentielle Drehungen
Zur Verbesserung der Ausgabe wird ein Rahmen gezeichnet
E. Baeck (Uni-DUE) Folien-Skript (U) 24 / 31
Ubungen Quader
Die Quader -Klasse
Der Konstruktor Class Initialize initialisiertden Quader mit init.
Attribute:
e, Richtungsvektorenr, Referenzpunktd, Dimensionen, KantenlAngen
dimSet, Festlegen der Quaderdimensionen
setRef, Festlegen des Referenzpunktes
rot, Rotation des lokalen Koordinatensystems
getVolumn, Berechnung des Volumens
getCenter, Berechnung des Schwerpunkts
points, Eckpunkte erzeugen
lines, Linien erzeugen
UML-Klassendiagramm
Quader
- e(3,3)- r(3)- d(3)
- Class Initialize+ init+ setDim+ setRef+ rot+ getMat+ getVolumn+ getCenter+ points+ lines
E. Baeck (Uni-DUE) Folien-Skript (U) 25 / 31
Ubungen Sonderubung: Fibonacci
Fibonacci und seine Zahlen
Leonardo da Pisa, auch Fibonacci genannt(von 1180 in Pisa; bis 1241 in Pisa)war Rechenmeister in Pisa und gilt als der bedeutendste Mathematiker desMittelalters.
Die Fibonacci-Zahlen werden nach der folgenden rekursivenBeschreibung berechnet.
f (0) = 0
f (1) = 1
f (n) = f (n − 1) + f (n − 2) fur n > 1
Fibonacci
E. Baeck (Uni-DUE) Folien-Skript (U) 26 / 31
Ubungen Sonderubung: Fibonacci
Pseudo-Code
Die Fibonacci-Zahl von n kann nach dem folgenden Pseudo-Code iterativberechnet werden.
1 Vereinbare i , f1, f2 und f32 Initialisiere f1 = 0 und f2 = 1
3 Schleife uber alle i von 2 bis n
4 Setze f3 = f2 + f15 Speicher f2 in f1 (altes f1 nicht mehr benotigt)
6 Speicher f3 in f2 (altes f2 bereits in f1)
7 Starte nachsten Schleifendurchlauf mit Schritt 4.
Fibonacci-Kacheln
E. Baeck (Uni-DUE) Folien-Skript (U) 27 / 31
Ubungen Sonderubung: Fibonacci
GUI der Fibonacci-Berechnung
Eingabe in gelb hinterlegtem Felder
Links Kontrollberechnung mit EXCEL-Formel
Rechts Berechnung nach Moivre-Binet
f (n) = 1√5·[(
1+√5
2
)n−
(1−
√5
2
)n]Lichtmuseum
Unna
E. Baeck (Uni-DUE) Folien-Skript (U) 28 / 31
Ubungen Szene
Szene, die Themen
Implementierung einer Szene mit Hilfe der Quader-KlasseBeschreibung der Szene durch
Quader,Positionierung,Container
Erstellen einer Szenen-DatenbankErweiterung der Quader-Klasse mit SQL-ExportAusgabe von Volumina und Massenschwerpunkten
Mass Wert−−−−−−−−−−−−a1 300 cma2 700 cma3 30 cmb1 200 cmb2 150 cmb3 150 cm ( l i n k s s e i t i g )c1 100 cmc2 500 cm ( l i n k s s e i t i g )c3 200 cm ( Absch l u s s oben )
E. Baeck (Uni-DUE) Folien-Skript (U) 29 / 31
Ubungen Szene
GUI der Szene
Eingabe in gelb hinterlegten Feldern
Ergebnisse in grun hinterlegten Feldern
Festlegen der Datenbank durch Browser-Dialog
Starten der System-Generierung
Schreiben der Bauteildaten in ACCESS-Datenbank
E. Baeck (Uni-DUE) Folien-Skript (U) 30 / 31
Ubungen Szene
Datenbankformat
CREATE TABLE Bau t e i l e (i d I n t e g e r , idMin I n t e g e r , typ I n t e g e r ,d1 Double , d2 Double , d3 Double ,x r Double , y r Double , z r Double ,x1 Double , y1 Double , z1 Double ,x2 Double , y2 Double , z2 Double ) ;
Spalte Typ Beschreibungid Integer BauteilnummeridMin Integer Nummer des Minuend-Bauteils bei Subtraktiontyp Integer Bauteiltyp: 1:Quader/2:Zylinderd1 Double Quaderlange in 1-Richtung / Radius des Zylindersd2 Double Quaderlange in 2-Richtung / Zylinderlanged3 Double Quaderlange in 3-Richtungxr, yr, zr Double Position des Referenzpunktesx1, y1, z1 Double Richtungspunkt in 1-Richtungx2, y2, z2 Double Richtungspunkt in 2-Richtung
E. Baeck (Uni-DUE) Folien-Skript (U) 31 / 31