enabnahem
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user