Seite 1 von 1

Berechnen von Verlusten

Verfasst: Dienstag 26. Mai 2015, 20:27
von flabowski
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

Re: Berechnen von Verlusten

Verfasst: Dienstag 26. Mai 2015, 23:01
von Sirius3
@flabowski: Du meinst also, es gilt

Code: Alles auswählen

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