Qll Symbolisch für Distanzen fertig

This commit is contained in:
2025-12-19 12:10:00 +01:00
parent 787ad56a03
commit cfc5d60bb9
3 changed files with 111 additions and 759 deletions

View File

@@ -1,6 +1,8 @@
import sympy as sp
from dataclasses import dataclass, field
from typing import Dict, Tuple, Iterable
from Export import Export
from Datenbank import Datenbankzugriff
@dataclass
class StochastischesModell:
@@ -48,8 +50,42 @@ class StochastischesModell:
Q_ll[i, i] = q_ii #Diagonale
return Q_ll
def Qll_aus_db(self):
pass
def Qll_symbolisch(self, pfad_datenbank, liste_beobachtungen_symbolisch):
liste_standardabweichungen_symbole = []
liste_beobachtungen_symbolisch = [str(b) for b in liste_beobachtungen_symbolisch]
Qll = sp.zeros(len(liste_beobachtungen_symbolisch), len(liste_beobachtungen_symbolisch))
db_zugriff = Datenbankzugriff(pfad_datenbank)
dict_beobachtungenID_instrumenteID = db_zugriff.get_instrumenteID_beobachtungenID_dict()
for i, beobachtung_symbolisch_i in enumerate(liste_beobachtungen_symbolisch):
aufgeteilt_i = beobachtung_symbolisch_i.split("_")
beobachtungenID_i = int(aufgeteilt_i[0])
instrumenteID_i = dict_beobachtungenID_instrumenteID[beobachtungenID_i]
beobachtungsart_i = str(aufgeteilt_i[1])
if beobachtungsart_i == "SD":
stabw_apriori_konstant = sp.Symbol(f"stabw_apriori_konstant_{instrumenteID_i}")
stabw_apriori_streckenprop = sp.Symbol(f"stabw_apriori_streckenprop_{instrumenteID_i}")
tachymeter_distanz = sp.Symbol(f"SD_{beobachtungenID_i}")
sigma = sp.sqrt(stabw_apriori_konstant ** 2 + (stabw_apriori_streckenprop * tachymeter_distanz / 1000) ** 2)
liste_standardabweichungen_symbole.append(sigma)
Qll[i, i] = sigma ** 2
for j in range (i + 1, len(liste_beobachtungen_symbolisch)):
beobachtung_symbolisch_j =liste_beobachtungen_symbolisch[j]
aufgeteilt_j = beobachtung_symbolisch_j.split("_")
beobachtungsart_j = str(aufgeteilt_j[1])
if beobachtungsart_i == "SD" and beobachtungsart_j == "SD":
Qll[i, j] = 0
Qll[j, i] = 0
Export.matrix_to_csv(r"Zwischenergebnisse\Qll_Symbolisch.csv", liste_beobachtungen_symbolisch, liste_beobachtungen_symbolisch, Qll, "Qll")
return Qll
def berechne_P(Q_ll):