j4nk3y: Kleines Matherätsel

Servus zusammen,

Ich stehe gerade etwas auf dem Schlauch bei folgendem:

function update(value){
  var date = new Date();
  var time = date.getTime() / 1000;
		
  value.number = Math.floor(value.number * Math.exp(3.8 * Math.pow(10,-6) * (time - value.time)));
	
  timeouts.push(setTimeout(function(){update(value)},1000));
}

Man möchte meinen, dass dies simples Exponentielles Wachstum sei, jedenfalls ist es so gedacht. Dazu ist value.number irgendeine Zahl größer 0 und value.time ein unix-timestamp der vorher von php zurückkommt.

Nun ist mir gerade durch Zufall aufgefallen, dass wenn ich die Aufrufzeit des setTimeout vergrößer oder verkleinere, das Ergebnis schneller oder langsamer wachst. Und ich verstehe ehrlich gesagt nicht genau warum. Falls mir dort jemand kurz auf die Sprünge helfen könnte wär das klasse!

Noch einen schönen 1. Weihnachtsfeiertag.
Jo

  1. Oh Moment...

    Ich glaube mich beschleicht gerade eine Ahnung. Dazu einmal kurz den Code erweitern:

     var data = [];
     
     // nach ajax sieht data vereinfacht so aus: data.value
    
     function update(data){
       var date = new Date();
       var time = date.getTime() / 1000;
       $.each(data, function(key, value){	
         data[key].number = Math.floor(data[key].number * Math.exp(3.8 * Math.pow(10,-6) * (time - data.value.time)));
      });
     	
       timeouts.push(setTimeout(function(){update(data)},1000));
     }
    

    Jetzt wird es mir noch deutlicher... hätte ich auch vorher dran denken können...

    timeouts.push(setTimeout(function(){update(data)},1000)); dieses data stimmt nicht mit dem Ergebnis data[key].number überein sonder immer noch mit dem übergebenen Wert an die Funktion. Da liege ich doch richtig, oder?

    Edit: Ähm Nein.

    Edit 2: AHHH jetzt weiß ich's!

    Gruß
    Jo

  2. Hey,

    ist doch schön wenn man seine Probleme selbst lösen kann ;)

    In diesem Sinne darf hier alles gelöscht werden ;)

    Frohes fest euch noch!

    Gruß
    Jo