Mittelwert über verschiedene Schleifenwerte



  • Hey Leute,

    ich kann mir sicher denken, dass man sich unter dem Titel nichts vorstellen kann.
    Also ich habe eine for-Schleife die über die Variable t läuft, d.h. for(t=....)
    Nun berechne ich zu einem Zeitpunkt tstart>t die Größe J1. Im Prinzip mache ich das solange bis t die Abbruchbedingung erfüllt, sodass ich ein J1(t+tstart) in Abhänigkeit von t erhalte.

    Mein Problem ist, dass ich gerne zu einem späteren Zeitpunkt tstart+tau mit tau<tstart wieder die Größe J2(t+tstart+tau) berechnen möchte und diese mit der Größe J1(t+tstart) mitteln möchte. Aber weil J1(t+tstart) schon tau-Schritte früher berechnet wurde muss ich es zwischenzeitlich speichern, damit es mit J2(t+tstart+tau) gemittelt werden kann.

    Ich hoffe ich konnte mich mehr oder weniger klar Ausdrücken. Leider fehlt mir ein vernünftiger Ansatz dafür. Meine Idee war im Zeitraum tau ein Array mit den Werte zu füllen, aber mir fällt nicht ein wie ich ihn danach von vorne wieder fülle, da ich ich t schon bis 1 Miollionen laufen lassen will.

    Ich wär super dankbar über jede Hilfe. Des Weiteren wäre recht nett wenn man das Problem auf eine Mittelung von n-fache J erweitert, die n*tau voneinander entfernt liegen.

    Viele Grüße,
    Walter White



  • .oO das ist doch gar kein problem eine million werte zu speichern ...



  • Doch weil ich nur nicht über zwei J-Werte mitteln möchte und das Programm läuft doch dann super langsam oder nicht?



  • am besten du zeigst code.



  • Leider kann ich keinen Code zeigen, weil ich nicht weiss wie ich es umsetzen soll. Sorry!



  • So ganz klar ist mir das Problem ehrlich gesagt noch nicht. Was sind die Abhängigkeiten? Welche Flexibilität ist notwendig ("Wünsch dir was" führt selten zu brauchbaren Lösungen)?



  • Ich habe das zwar nicht so ganz verstanden, aber evtl. geht es, wenn du ein Array hast, in dem die Summe aller bisherigen Werte abgelegt sind.

    Wenn du dann den Mittelwert zwischen 1000 und 2000 haben willst, rechnest du
    (summe[2000]-summe[1000])/(2000-1000+1)



  • Ich will einfach zwei Größen mitteln, die nicht im gleichen Schleifendurchlauf berechnet werden. Das Problem ist, aber dass ich dennoch in jedem Durchlauf neue Werte errechne und ich nicht warten will.

    Eigentlich könnt ihr es euch so vorstellen, dass ich z.B. eine 1/x Kurve aufnehme und dann eine 1/x aufnehme die leicht verschoben ist. Nun will ich aber das beide Kurven übereinander liegen, damit ich an den richtigen Stellen mitteln kann.

    Ist das verständlicher?

    Achja DirkB vielen Dank für deine Antwort!

    Im Prinzip passiert dies für tstart = 4 und tau=1

    t=1
    2
    3
    4 berechne j[0][0]
    5 berechne j[0][1] und j[1][0], jm=(j[1][0]+j[0][0])/2
    6 berechne j[0][2] und j[1][1], jm=(j[1][1]+j[0][1])/2
    //Nun soll j[0][1] wieder neu beschrieben, da es für jm verwendet wurde
    7 berechne j[0][1] und j[1][2], jm=(j[1][2]+j[0][2])/2
    //Genau so soll j[0][2] und j[1][1], weil diese oben schon verwendet wurden
    8 berechne j[0][2] und j[1][1], jm=(j[1][1]+j[0][1])/2
    9 berechne j[0][1] und j[1][2], jm=(j[1][2]+j[0][2])/2
    10 und so weiter...

    Der erste Feldindex bezieht sich auf die Größe Ji und der zweite soll nur dazu dienen, dass man die J's zum gleichen Zeitpunkt mittelt. Am besten wäre als Bedingung, dass das j[][] neu beschrieben werden soll wenn es vorher schonmal für die Mittelung genommen wurde. Also schon im Einsatz war. Das würde reichen



  • Hast du denn überhaupt schonmal probiert einen Mittelwert zu berechnen? Mach das mal, dann solltest du merken das du dafür nicht alle Werte speichern musst.
    Auch solltest du veruschen deine Aufgabe verständlich zu erklären, dass hilft nicht nur uns sondern auch dir.



  • Die Berechnung e. Mittelwertes ist dir aber schon klar oder?

    Alle Werte aufsummieren und am Ende das ganze durch die Anzahl d. Schleifendurchläufe teilen..

    Dürfte einige Überlegungen hier vereinfachen 😉


Log in to reply