2013-07-25 9 views
5

Mam bardzo ograniczoną wiedzę na temat JS, a nawet matematyki, więc zwracam się do Ciebie. Korzystam z witryny z linkami here, aby znaleźć roczne stopy wzrostu liczby ludności w poszczególnych stanach Nigerii. Kiedy klikniesz na stan, powiedzmy Abia, da ci roczną stopę wzrostu. Próbuję znaleźć dokładną formułę, której używają do produkcji wspomnianych wskaźników wzrostu. Here to plik .js zawierający kod służący do tego. Uważam, że blok chcemy to:Próba zrozumienia, w jaki sposób ta strona korzysta z javascript do generowania stopy wzrostu

cp.data.computeAnnualChange=function(a,b,c,d){ 
    if(!a||!b)return null;a=this.dateDiffInYears(a,b); 
    return 0<c&&0<a&&0<d?Math.round(1E4*(Math.exp(Math.log(d/c)/a)-1))/100:null}; 
    cp.data.INT_MODE="i"; 

pewien kontekst: Formuła ma podjąć ludność stanu z 1991 i ludności z 2006 roku i dostarczy Ci rocznej stopy wzrostu. Rozpoznaję to podstawowe równanie na linii 4, to geometryczne tempo wzrostu. Mogę to zrobić w Excelu, ale kiedy robię numer, wymyślę około 13% zniżki, co jest znaczące. Moim ostatecznym celem jest uczynienie tego w formule, której mogę używać w programie Excel.

+0

Wydaje się brakować przecinka lub operatora po "1E4", nieprawdaż? – bfavaretto

+0

@bfavaretto - dobrze zauważony! – pnuts

+0

Czy masz jakieś rzeczywiste liczby jako przykłady? np. Koniec 1991 r. do rozpoczęcia 2006 r. (4 lata) może się różnić od początku 1991 r. do końca 2006 r. (6 lat). – pnuts

Odpowiedz

0

Zamknięcie tego pytania, ponieważ czyjś komentarz pomógł mi go rozgryźć.

Zasadniczo miałem rację ze wzorem, który napisałem w oryginalnym pytaniu, po prostu nie byłem wystarczająco precyzyjny w zakresie danych. Dwa spisy miały 14.32 lat osobno i właśnie używałem 14.

Prawidłową formułą jest (EXP ((LN (pn/p0) /14.32)) - 1) gdzie pn i p0 są odpowiednio najnowszymi i najstarszymi spisami ludności .

Powiązane problemy