2013-07-25 17 views
5

Tôi rất hạn chế trong JS của tôi và thậm chí là kiến ​​thức toán học cho vấn đề đó để tôi quay sang bạn. Tôi đang sử dụng trang web được liên kết here để tìm mức tăng trưởng dân số hàng năm cho các quốc gia riêng lẻ ở Nigeria. Khi bạn bấm vào một tiểu bang, nói Abia, nó sẽ cho bạn tốc độ tăng trưởng hàng năm. Tôi đang cố gắng tìm ra công thức chính xác mà họ đang sử dụng để tạo ra tốc độ tăng trưởng cho biết. Here là tệp .js có chứa mã để thực hiện việc này. Tôi tin rằng khối mà chúng tôi muốn là:Cố gắng hiểu cách trang web này sử dụng javascript để tạo ra tốc độ tăng trưởng

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"; 

Một số ngữ cảnh: Công thức được tính là dân số của tiểu bang từ năm 1991 và dân số từ năm 2006 và cung cấp cho bạn tốc độ tăng trưởng hàng năm. Tôi nhận ra rằng phương trình cơ bản trên dòng 4, đó là tốc độ tăng trưởng hình học. Tôi có thể làm điều đó trong excel, nhưng khi tôi làm số tôi đưa ra là khoảng 0,1 phần trăm tắt, đó là đáng kể. Mục tiêu cuối cùng của tôi là biến nó thành một công thức mà tôi có thể sử dụng trong excel.

+0

Dường như thiếu dấu phẩy hoặc toán tử sau '1E4', phải không? – bfavaretto

+0

@bfavaretto - cũng được phát hiện! – pnuts

+0

Bạn có số thực nào làm ví dụ không? ví dụ: Kết thúc năm 1991 để bắt đầu năm 2006 (4 tuổi) có thể được dự kiến ​​sẽ khác nhau từ đầu năm 1991 đến cuối năm 2006 (6 năm). – pnuts

Trả lời

0

Đóng câu hỏi này vì nhận xét của ai đó đã giúp tôi tìm ra.

Về cơ bản, tôi đã làm đúng với công thức tôi đã đăng trong câu hỏi ban đầu, chỉ là tôi không đủ chính xác với phạm vi dữ liệu. Hai cuộc tổng điều tra cách nhau 14,32 năm và tôi chỉ sử dụng 14.

Công thức chính xác là (EXP ((LN (pn/p0) /14.32)) - 1) trong đó pn và p0 là các cuộc tổng điều tra mới nhất và cũ nhất .

Các vấn đề liên quan