Mit For-Loops indizieren und Nullvektor ändern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
skertIP
User
Beiträge: 4
Registriert: Donnerstag 26. November 2020, 08:54

Nabend,

ich habe ein Problem mit dem For Loop. Ist es möglich den zum indizieren eines Nullektors zu nutzen und dann über if-Bedingungen die Nullen zu ersetzen?

Bei mir klappt das nur für i=1, dannach bleibt der Vektor =0.

Danke für die Hilfe!
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich verstehe Deine Frage nicht. Kannst Du Code posten und die zugehörige Fehlermeldung, oder beschreiben, wie das Ergebnis von Deiner Erwartung abweicht?
skertIP
User
Beiträge: 4
Registriert: Donnerstag 26. November 2020, 08:54

kann ich machen, obs dir weiterhilft weiß ich nicht:D
hier der Ausschnitt. Weitere Werte (wie Ta) sind aus einer Zeitreihe:

Ti = np.ones_like(laengeT) * Ti_soll
Ti_n = np.zeros(len(laengeT))
Qp_bedarf_ges = np.zeros(len(laengeT))
Ti_verlust = np.zeros(len(laengeT))

for i in range(1, len(Delta_T), 1):
Qp_trans = Qp_haus * (Ti - Ta)
Qp_vent = (Ti - Ta) * (Vr * n_viertelst * (1 - eta_wärmerückgewinnung) * (cp_luft * rho_luft))

Qp_bedarf_ges = Qp_bedarf_ges + (Qp_trans + Qp_vent[i] - Qp_sol - Qp_innen) * 0.25

if Qp_bedarf_ges[i] > 0 and Qp_bedarf_ges[i] >= P_Heiz:
Qp_bedarf_ges[i] = Qp_bedarf_ges[i] - P_Heiz * 0.25
P_Heiz_v[i] = P_Heiz * 0.25
Ti_n[i] = Ti[i] - (Qp_bedarf_ges[i] / (Vr * rho_luft * cp_luft))
print(Ti_n[i])

if Qp_bedarf_ges[i] > 0 and Qp_bedarf_ges[i] < P_Heiz:
Qp_bedarf_ges[i] = 0
P_Heiz_v[i] = Qp_bedarf_ges[i]
Ti_n[i] = Ti[i] - (Qp_bedarf_ges[i] / (Vr * rho_luft * cp_luft))

else:
Qp_bedarf_ges[i] = 0
Ti_n[i] = Ti[i]

print(Qp_bedarf_ges)

#--- Das Problem ist jetzt, dass Qp_bedarf bis auf den ersten Wert weiterhin aus Nullen besteht.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Ein Variable `Qp_bedarf` gibt es gar nicht. Wenn Du `Qp_bedarf_ges` meinst, dann scheint wohl dieser Wert nie größer als P_Heiz zu sein, was irgendwie auch klar ist, denn egal ob Qp_bedarf_ges-Wert größer als P_Heiz ist, oder kleiner, Qp_bedarf_ges wird immer auf 0 gesetzt.
Das innerhalb der for-Schleife

Code: Alles auswählen

    if Qp_bedarf_ges[i] > 0 and Qp_bedarf_ges[i] < P_Heiz:
        Qp_bedarf_ges[i] = 0
        P_Heiz_v[i] = Qp_bedarf_ges[i]
        Ti_n[i] = Ti[i] - (Qp_bedarf_ges[i] / (Vr * rho_luft * cp_luft))
    else:
        Qp_bedarf_ges[i] = 0
        Ti_n[i] = Ti[i]
kann man das Qp_bedarf_ges = 0 auch außerhalb des if schreiben. Das selbe gilt auch für Ti_n, denn 0 geteilt durch irgendwas bleibt 0.
Die for-Schleife vereinfacht sich also zu

Code: Alles auswählen

for i in range(1, len(Delta_T), 1):
    Ti_n[i] = Ti[i]
    Qp_bedarf_ges[i] = 0
Was Du wirklich ausrechnen willst, kann man bei dem Code wirklich nicht sagen.

Warum benutzt Du ones_like aber nicht zeros_like?
Antworten