Berechnen von Verlusten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
flabowski
User
Beiträge: 1
Registriert: Dienstag 26. Mai 2015, 19:33

Hallo zusammen,
ich habe mich hier angemeldet weil ich ein Problem mit numpy habe.
Es geht um Apparaturen die thermische Energie liefern, an bestimmten Zeitpunkten kann man diese aber nicht nutzen. Ich möchte also einen Wirkungsgrad von genutzter zu produzierter Energie berechnen. Nun habe ich aber bemerkt das etwas nicht stimmen kann.
Hier also stark vereinfacht das Programm:

Code: Alles auswählen

import numpy as np
t = 1000
m = 12
output = (1200*np.random.rand(t,m))**2
usable_output = output.copy()
python_result = np.zeros(m)
for j in range(m):
    nutzen = 0.0
    aufwand = 0.0
    for i in range(t):
        if np.random.rand(1)>0.9:
            usable_output[i,j] = 0
        nutzen += usable_output[i,j]
        aufwand += output[i,j]
    python_result[j] = nutzen/aufwand

eta_calc = python_result
eta_calc1 = np.sum(usable_output,axis=0)/np.sum(output,axis=0)
eta_calc2 = np.mean(usable_output,axis=0)/np.mean(output,axis=0)
eta_calc3 = np.mean(usable_output/output,axis=0,dtype=np.float64)
eigentlich sollte für alle eta_calc das gleiche herauskommen, im letzten Fall kommt bei mir aber etwas anderes heraus (np.allclose(eta_calc,eta_calc3) --> False).
Dies hat nichts mit dem "bug" in np.mean() und np.sum() zu tun, was ich mit "dtype = np.float64" ausgeschlossen habe.
Kann mir hierbei jemand helfen?
Wie berechne ich (besonders bei sehr großen float arrays) den korrekten Mittelwert?
Vielen Dank schon mal,
-flabowski
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@flabowski: Du meinst also, es gilt

Code: Alles auswählen

a + b   a   b
----- = - + -
c + d   c   d
Antworten