enabnahem

This commit is contained in:
2026-02-11 19:47:07 +01:00
parent 8b928c1bb7
commit 5749d173a0
12 changed files with 13284 additions and 14884 deletions

View File

@@ -107,12 +107,12 @@ class Genauigkeitsmaße:
daten.append([pid, float(sx), float(sy), float(sz), float(sP)])
except:
continue
helmert_punktfehler = pd.DataFrame(daten, columns=["Punkt", "σ̂x", "σ̂y", "σ̂z", f"σ̂P_{dim}D"])
mittel_sP = helmert_punktfehler[f"σ̂P_{dim}D"].mean()
print(f"Mittlerer Helmert-Punktfehler über alle Punkte: {mittel_sP:.6f} [m]")
helmert_punktfehler = pd.DataFrame(daten, columns=["Punkt", "σ̂x [m]", "σ̂y [m]", "σ̂z [m]", f"σ̂P_{dim}D [m]"])
mittel_sP = helmert_punktfehler[f"σ̂P_{dim}D [m]"].mean()
print(f"Mittlerer Helmert-Punktfehler über alle Punkte: {mittel_sP:.6f} m")
display(HTML(helmert_punktfehler.to_html(index=False)))
helmert_punktfehler.to_excel(r"Netzqualitaet\Standardabweichungen_Helmertscher_Punktfehler.xlsx",index=False)
return helmert_punktfehler
return helmert_punktfehler, mittel_sP
@@ -255,10 +255,10 @@ class Genauigkeitsmaße:
"""
alpha_input = input("Irrtumswahrscheinlichkeit α wählen (z.B. 0.05, 0.01) [Standard=0.05]: ")
if alpha_input.strip() == "":
alpha = 0.05
alpha_konf = 0.05
else:
alpha = float(alpha_input)
print(f"→ Verwende alpha = {alpha} (Konfidenz = {(1 - alpha) * 100:.1f}%)")
alpha_konf = float(alpha_input)
print(f"→ Verwende alpha = {alpha_konf} (Konfidenz = {(1 - alpha_konf) * 100:.1f}%)")
Qxx = np.asarray(Qxx, float)
daten = []
namen_str = [str(sym) for sym in unbekannten_liste]
@@ -266,7 +266,7 @@ class Genauigkeitsmaße:
punkt_ids = [n[1:] for n in namen_str if n.upper().startswith('X')]
# Faktor fürs Konfidenzellipoid (F-Verteilung)
k = float(np.sqrt(3.0 * f.ppf(1.0 - alpha, 3, R)))
k = float(np.sqrt(3.0 * f.ppf(1.0 - alpha_konf, 3, R)))
for pid in punkt_ids:
try:
@@ -327,12 +327,12 @@ class Genauigkeitsmaße:
konfidenzellipoid["γ [gon]"] = konfidenzellipoid["γ [gon]"].astype(float).round(3)
display(HTML(konfidenzellipoid.to_html(index=False)))
konfidenzellipoid.to_excel(r"Netzqualitaet\Konfidenzellipoid.xlsx", index=False)
return konfidenzellipoid, alpha
return konfidenzellipoid, alpha_konf
@staticmethod
def konfidenzellipsen(Qxx: np.ndarray, sigma0_apost: float, unbekannten_liste: list, r_gesamt: int) -> pd.DataFrame:
def konfidenzellipsen(Qxx: np.ndarray, sigma0_apost: float, unbekannten_liste: list, r_gesamt: int) -> tuple[pd.DataFrame, float]:
"""
Berechnet Konfidenzellipsen für Punkte aus der Kofaktor-Matrix Qxx.
@@ -355,16 +355,16 @@ class Genauigkeitsmaße:
:param r_gesamt: Redundanz (Freiheitsgrade) des Netzes.
:type r_gesamt: int
:return: Tabelle der Konfidenzellipsen je Punkt.
:rtype: pd.DataFrame
:rtype: tuple[pd.DataFrame, float]
"""
# Irrtumswahrscheinlichkeit alpha
alpha_input = input("Irrtumswahrscheinlichkeit α wählen (z.B. 0.05, 0.01) [Standard=0.05]: ")
if alpha_input.strip() == "":
alpha = 0.05
alpha_konf2d = 0.05
else:
alpha = float(alpha_input)
print(f"→ Verwende alpha = {alpha} (Konfidenz = {(1 - alpha) * 100:.1f}%)")
alpha_konf2d = float(alpha_input)
print(f"→ Verwende alpha = {alpha_konf2d} (Konfidenz = {(1 - alpha_konf2d) * 100:.1f}%)")
Qxx = np.asarray(Qxx, float)
daten = []
@@ -373,7 +373,7 @@ class Genauigkeitsmaße:
punkt_ids = [n[1:] for n in namen_str if n.upper().startswith("X")]
# Faktor für die Konfidenzellipe (F-Verteilung)
k2 = float(np.sqrt(2.0 * f.ppf(1.0 - alpha, 2, r_gesamt)))
k2 = float(np.sqrt(2.0 * f.ppf(1.0 - alpha_konf2d, 2, r_gesamt)))
for pid in punkt_ids:
try:
@@ -411,12 +411,12 @@ class Genauigkeitsmaße:
"Punkt", "σ̂x [m]", "σ̂y [m]",
"Halbachse a_k [m]", "Halbachse b_k [m]", "θ [gon]"
])
return Konfidenzellipse
return Konfidenzellipse, alpha_konf2d
@staticmethod
def konfidenzellipsen_enu(a: float, b: float, ausgabe_parameterschaetzung: dict, liste_unbekannte: list, ausgleichungsergebnis: dict, sigma0apost: float, r_gesamt: int) -> tuple[pd.DataFrame, np.ndarray]:
def konfidenzellipsen_enu(a: float, b: float, ausgabe_parameterschaetzung: dict, liste_unbekannte: list, ausgleichungsergebnis: dict, sigma0apost: float, r_gesamt: int) -> tuple[pd.DataFrame, np.ndarray, float]:
"""
Berechnet Konfidenzellipsen im lokalen ENU-System aus einer ins ENU-System transformierten Qxx-Matrix.
@@ -442,7 +442,7 @@ class Genauigkeitsmaße:
:param r_gesamt: Redundanz (Freiheitsgrade) für die Konfidenzberechnung.
:type r_gesamt: int
:return: Tabelle der Konfidenzellipse im ENU-System, Rotationsmatrix R0 der ENU-Transformation.
:rtype: tuple[pandas.DataFrame, numpy.ndarray]
:rtype: tuple[pandas.DataFrame, numpy.ndarray, float]
"""
berechnungen = Berechnungen.Berechnungen(a, b)
@@ -459,7 +459,7 @@ class Genauigkeitsmaße:
f"ENU-Referenz (Schwerpunkt): B0={Einheitenumrechnung.Einheitenumrechnung.rad_to_gon_Decimal(B0):.8f} rad, L0={Einheitenumrechnung.Einheitenumrechnung.rad_to_gon_Decimal(L0):.8f} rad")
# 2) Konfidenzellipsen im ENU-System
Konfidenzellipse_ENU = Genauigkeitsmaße.konfidenzellipsen(
Konfidenzellipse_ENU, alpha_konf2d = Genauigkeitsmaße.konfidenzellipsen(
Qxx_enu,
sigma0apost,
liste_unbekannte,
@@ -486,7 +486,7 @@ class Genauigkeitsmaße:
# 5) Export
Konfidenzellipse_ENU.to_excel(r"Netzqualitaet\Konfidenzellipse_ENU.xlsx", index=False)
return Konfidenzellipse_ENU, R0
return Konfidenzellipse_ENU, R0, alpha_konf2d