<jupyter_start><jupyter_text>Materialien zu aglaAutor: <NAME> - <EMAIL> Hyperbolische Geometrie<jupyter_code>%run agla/start<jupyter_output><empty_output><jupyter_text>Berechnung von Dreiecken   Verwendete Sätze  Seitenkosinussatz $\:\:\:\:\:\: \cosh c = \cosh a\, \cosh b - \sinh a\, \sinh b\, \cos \gamma $Winkelkosinussatz $\:\:\:\:\:\, \cos \alpha = - \cos \beta\, \cos\gamma + \sin \beta \, \sin \gamma\, \cosh a	$ Sinussatz$ \:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\: \frac{\sin \alpha}{\sin \beta} = \frac{\sinh a}{\sinh b} $Halbseitensatz $ \:\:\:\:\:\:\:\:\:\:\:\:\tan \frac{c} {R} = \sqrt{\frac{-\cos s\, \cos (s-\gamma)}{\cos (s-\alpha)\, \cos (s-\beta)}}, \:\:\:\:\:s = \frac{\alpha + \beta + \gamma}{2}, \:\:\:\:\: R $- Radius $\qquad\qquad\qquad\quad\:\:$ (Satz der sphärischen Geometrie, $\:R\:$ wird durch $\:i\:$ ersetzt)Weitere Sätze sind durch die zyklischen Vertauschungen $\:\: a \rightarrow b \rightarrow c \rightarrow a, \:\:\alpha \rightarrow \beta \rightarrow \gamma \rightarrow \alpha \:\:$ zu gewinnenDie Maßeinheit für Winkel ist Grad, es werden die entsprechenden Funktionen benutzt   Grundaufgabe SSS  (1)<jupyter_code># Gegeben sind die drei Seiten

a = 2; b = 3.5; c = 1.7

# Die Winkel werden nach dem Seitenkosinussatz berechnet

wic = N(acosg((cosh(a)*cosh(b)-cosh(c))/(sinh(a)*sinh(b))))

wia = N(acosg((cosh(b)*cosh(c)-cosh(a))/(sinh(b)*sinh(c))))

wib = N(acosg((cosh(a)*cosh(c)-cosh(b))/(sinh(a)*sinh(c))))

wia, wib, wic<jupyter_output><empty_output><jupyter_text>Grundaufgabe WWW (2)<jupyter_code># Gegeben sind die drei Winkel

wia = 9.92298225786045; wib = 128.187167858749; wic = 7.22134301861041

# Die Berechnung der Seiten erfolgt auf der Grundlage des Halbseitensatzes der
# sphärischen Geometrie

s = 1/2 * (wia + wib + wic)

c = (N(abs(2*R*atan(sqrt(-cosg(s)*cosg(s-wic)/cosg(s-wia)/cosg(s-wib)))))).subs(R, I)

a = (N(abs(2*R*atan(sqrt(-cosg(s)*cosg(s-wia)/cosg(s-wib)/cosg(s-wic)))))).subs(R, I)

b = (N(abs(2*R*atan(sqrt(-cosg(s)*cosg(s-wib)/cosg(s-wia)/cosg(s-wic)))))).subs(R, I)

a, b, c<jupyter_output><empty_output><jupyter_text>Grundaufgabe SWS (3)<jupyter_code># Gegeben sind zwei Seiten und der eingeschlossene Winkel

a = 2; b = 3.5; wic = 7.22134301861041

# Die fehlende Seite wird nach dem Seitenkosinussatz

c = N(acosh(cosh(a)*cosh(b) - sinh(a)*sinh(b)*cosg(wic)))

# Die Winkel werden durch Lösen eines Gleichungssystems auf der 
# Basis des Winkelkosinussatzes erhalten

wia, wib = symbols('wia wib')

gl1 = cosg(wia) + cosg(wib)*cosg(wic) - sing(wib)*sing(wic)*cosh(a)
gl2 = cosg(wib) + cosg(wic)*cosg(wia) - sing(wic)*sing(wia)*cosh(b)

L = nsolve([gl1, gl2], [wia, wib], [45, 45])

wia = N(L[0]); wib = N(L[1])

# Die Winkel können auch nach dem Sinussatz ermittelt werden; 
# dort sind Mehrdeutigkeiten zu beachten  

c, wia, wib<jupyter_output><empty_output><jupyter_text>Grundaufgabe WSW (4)<jupyter_code># Gegeben sind eine Seite und die beiden anliegenden Winkel

c = 1.7; wia = 9.92298225786045; wib = 128.187167858749;

# Der fehlende Winkel wird nach dem Winkelkosinussatz berechnet  

wic = N(arccosg((sing(wia)*sing(wib)*cosh(c)-cosg(wia)*cosg(wib))))

# Die Seiten werden wie in Grundaufgabe WWW ermittelt

s = 1/2 * (wia + wib + wic)

c = N(abs(2*R*arctan(sqrt(-cosg(s)*cosg(s-wic)/cosg(s-wia)/cosg(s-wib))))).subs(R, I)

a = N(abs(2*R*arctan(sqrt(-cosg(s)*cosg(s-wia)/cosg(s-wib)/cosg(s-wic))))).subs(R, I)

b = N(abs(2*R*arctan(sqrt(-cosg(s)*cosg(s-wib)/cosg(s-wia)/cosg(s-wic))))).subs(R, I)

a, b, wic<jupyter_output><empty_output><jupyter_text>Konstruktion von Dreiecken   Dreieck in Ursprungslage  Bei gegebenen drei Seiten kann ein Dreieck mit einer Ecke ($A$) im (euklidischen) Ursprungkonstruiert werden. Wenn der 2.  Eckpunkt ($B$) auf die  positive $x$-Achse gelegt wird, sind die Seiten $c$ und $b$ hyperbolische Strecken, deren Träger Durchmesser des Einheitskreises sind<jupyter_code># Beispiel für die Lage eines solcheen Dreiecks

A = hPunkt(0, 0); B = hPunkt(0.8, 0); C = hPunkt(0.3, 0.3)
d = hDreieck(A, B, C)

sicht_box(-1.1, 1.1)
zeichne(EinhKreis2, [d, rot, 2], 
        [A, rot, 2], [B, gruen, 2], [C, blau, 2],
        [Gerade(v(-1, 0), v(1, 0)), gruen],
        [Gerade(O2, C.e), gruen], 
        bez = [(O2-v(0,0.1), 'A'),
               (B.e-v(0, 0.1), 'B'),
               (C.e+v(0, 0.05), 'C'),
               (v(0.3, -0.07), 'c'),
               (v(0.5, 0.16), 'a'),
               (v(0.1, 0.17), 'b')],
        achsen=nein)
d.längen<jupyter_output><empty_output><jupyter_text>Die nachfolgenden Anweisungen erzeugen ein solches Dreieck anhand der 3 vorgegebenen Seitenlängen<jupyter_code>a = 1.5; b = 2; c = 1.8

p = Symbol('p', real=True)
q = Symbol('q', real=True)
r = Symbol('r', real=True)

A = hPunkt(0, 0)
B = hPunkt(p, 0)
C = hPunkt(q, r)  

L = solve(A.abstand(B) - c, numeric=True)   # Verwendung von solve wegen
p0 = L[1]                                   # des Zusatzes

B = B.subs(p, p0)

# Weiter ist das System aus den beiden Gleichungen

gl1 = A.abstand(C) - b
gl2 = B.abstand(C) - a

# nach q und r zu lösen

gl1, gl2

L1 = solve([gl1, gl2], set=True)
L1
q0 = list(L1[1])[0][0]    # beide Lösungen sollen positiv sein
r0 = list(L1[1])[0][1]
q0, r0
C = hPunkt(q0, r0)
A.e, B.e, C.e
d1 = hDreieck(A, B, C)
d1.längen, d1.winkel   # das Dreieck hat die vorgegebenen Seiten
zeichne(EinhKreis2, d1, A, B, C)<jupyter_output><empty_output><jupyter_text>Dreieck in beliebiger Lage<jupyter_code># Mit der folgenden Isometrie kann der Ursprung in den Punkt P(r, s)
# überführt werden (siehe Isometrien im D-Modell)

r, s = Symbol('r', real=True), Symbol('s', real=True)

a = (r-s)/(r^2+s^2) + (r+s)/(r^2+s^2)*I
b = 1+I

f = lambda z: (a*conjugate(z)+conjugate(b)) / (b*conjugate(z)+conjugate(a))
f(z)

einfach(re(f(0))), einfach(im(f(0)))   # Kontrolle
P = hPunkt(-0.5, 0.6)   # Ziel-Bild des Ursprungs

# die entsprechende Isometrie

r, s = -0.5, 0.6
a = (r-s)/(r**2+s**2) + (r+s)/(r**2+s**2)*I;  b = 1+I

f = lambda z: (a*conjugate(z)+conjugate(b)) / (b*conjugate(z)+conjugate(a))

# Anwendung der Isometrie auf die Eckpunkte des Dreiecks d

A, B, C = d.punkte
AA = hPunkt(re(f(0)), im(f(0)))
wB = f(B.e.x+B.e.y*I); BB = hPunkt(re(wB), im(wB))
wC = f(C.e.x+C.e.y*I); CC = hPunkt(re(wC), im(wC))

AA.e.dez, BB.e.dez, CC.e.dez

# Das Dreieck

dd = hDreieck(AA, BB, CC)

# ist zum obigen Dreieck d kongruent
dd.laengen, dd.winkel
d.längen, d.winkel   # siehe oben
dd.fläche, d.fläche
zeichne(EinhKreis2, d, [dd, rot, 2], A, [P, rot, 2], achsen=nein)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.20203264551894057, 'fraction_numerical': 0.0368032029565753, 'mean_word_length': 3.988479262672811, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 35, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '382937', 'license': 'Apache-2.0', 'n_tokens_mistral': 3205, 'n_tokens_neox': 3074, 'n_words': 649, 'path': 'agla/mat/hyp_geometrie_Dreiecke.ipynb', 'repo_name': 'HBOMAT/AglaUndZufall', 'size': '6512'}