Jakobimatrix Tachymeter Numerisch teilweise fertig. Tabelle Beobachtungen muss noch Substituiert werden
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
from Datenbank import *
|
||||
import sympy as sp
|
||||
import csv
|
||||
from Export import Export
|
||||
from Berechnungen import Berechnungen
|
||||
|
||||
|
||||
class FunktionalesModell:
|
||||
def __init__(self, pfad_datenbank):
|
||||
def __init__(self, pfad_datenbank, a, b):
|
||||
self.pfad_datenbank = pfad_datenbank
|
||||
self.berechnungen = Berechnungen(a, b)
|
||||
|
||||
def jacobi_matrix_symbolisch(self):
|
||||
liste_beobachtungsarten = ["tachymeter_distanz", "tachymeter_richtung", "tachymeter_zenitwinkel"]
|
||||
@@ -14,17 +16,8 @@ class FunktionalesModell:
|
||||
liste_beobachtungen_rohdaten = []
|
||||
liste_punktnummern =[]
|
||||
|
||||
liste_beobachtungen_jacobian = []
|
||||
liste_orientierungsunbekannte = []
|
||||
|
||||
liste_beobachtungsgleichungen_jacobian = []
|
||||
liste_beobachtungsgleichungen_abgeleitet = []
|
||||
|
||||
liste_beobachtungen_abgeleitet = []
|
||||
liste_zeilenbeschriftungen_jacobian = []
|
||||
|
||||
liste_zeilenbeschriftungen_abgeleitet = []
|
||||
|
||||
for beobachtungsart in liste_beobachtungsarten:
|
||||
liste_id_standpunkt_zielpunkt = db_zugriff.get_beobachtungen_id_beobachtungsgruppe_standpunkt_zielpunkt(beobachtungsart)
|
||||
|
||||
@@ -164,22 +157,31 @@ class FunktionalesModell:
|
||||
else:
|
||||
return None
|
||||
|
||||
# --- Export der A_jacobian-Matrix in eine CSV-Datei ---
|
||||
dateiname_export = "Jacobi_Matrix.csv"
|
||||
Export.matrix_to_csv(r"Zwischenergebnisse\Jacobi_Matrix_Symbolisch.csv", liste_unbekannte,
|
||||
liste_zeilenbeschriftungen_gesamt, A_gesamt, "Beobachtung")
|
||||
return A_gesamt, liste_unbekannte, liste_zeilenbeschriftungen_gesamt
|
||||
|
||||
with open(dateiname_export, "w", newline="", encoding="utf-8") as csvfile:
|
||||
writer = csv.writer(csvfile, delimiter=";")
|
||||
def jacobi_matrix_zahlen_iteration_0(self, A_symbolisch, koordinatenart, liste_unbekannte = None, liste_zeilenbeschriftungen_gesamt = None):
|
||||
if koordinatenart == "naeherung_us":
|
||||
db_zugriff = Datenbankzugriff(self.pfad_datenbank)
|
||||
dict_koordinaten_B_L = self.berechnungen.geometrische_breite_laenge(db_zugriff.get_koordinaten(koordinatenart))
|
||||
|
||||
# Kopfzeile: leere Ecke + Namen der Unbekannten
|
||||
kopfzeile = ["Beobachtung"]
|
||||
for unbekannte in liste_unbekannte:
|
||||
kopfzeile.append(str(unbekannte))
|
||||
writer.writerow(kopfzeile)
|
||||
substitutionen = {}
|
||||
|
||||
# Zeilen: Standpunkt-Zielpunkt + Jacobimatrix-Zeile
|
||||
for zeilenbeschriftung, zeile in zip(liste_zeilenbeschriftungen_gesamt, A_gesamt.tolist()):
|
||||
zeile_als_text = [zeilenbeschriftung] + [str(eintrag) for eintrag in zeile]
|
||||
writer.writerow(zeile_als_text)
|
||||
for punktnummer, vektor in dict_koordinaten_B_L.items():
|
||||
X_sym, Y_sym, Z_sym, B_sym, L_Sym = sp.symbols(f"X{punktnummer} Y{punktnummer} Z{punktnummer} B{punktnummer} L{punktnummer}")
|
||||
|
||||
substitutionen[X_sym] = vektor[0][0]
|
||||
substitutionen[Y_sym] = vektor[0][1]
|
||||
substitutionen[Z_sym] = vektor[0][2]
|
||||
substitutionen[B_sym] = vektor[1]
|
||||
substitutionen[L_Sym] = vektor[2]
|
||||
|
||||
return A_gesamt
|
||||
A_numerisch = A_symbolisch.xreplace(substitutionen)
|
||||
|
||||
Export.matrix_to_csv(r"Zwischenergebnisse\Jacobi_Matrix_Numerisch_Iteration0.csv", liste_unbekannte,
|
||||
liste_zeilenbeschriftungen_gesamt, A_numerisch, "Beobachtung")
|
||||
|
||||
return A_numerisch
|
||||
else:
|
||||
print("Koordinaten noch nicht implementiert!")
|
||||
Reference in New Issue
Block a user