Просмотр полной версии : Аналог FORECAST в AS3 ?
Кто ни-ть делал в AS3 FORECAST ф-цию как в EXEL? Щас оч срочно нужно а времени самому разбирать нету. Мож кто где встречал или делал?
Psycho Tiger
26.08.2010, 15:47
А что функция делает?
Прогнозирует результат на основе предварительных данных.
Psycho Tiger
26.08.2010, 15:53
А как прогнозирует?
Скорее всего это придётся писать (почти) с нуля.
gloomyBrain
26.08.2010, 15:54
А как прогнозирует?
Используя линейную экстраполяцию. И, по-моему, это не очень сложно
Нет не сложно просто сроки поджимают. Думал может у кого есть. Кстати уже начал писать..
Ну вот вродь формулы http://en.wikipedia.org/wiki/Numerical_methods_for_linear_least_squares#Computation с ними моск не задействуется, за время от начала топега можно было написать вродь)
Да, спасибо! Тут http://office.microsoft.com/ru-ru/excel-help/HP005209096.aspx?redir=0 конкретно по модели вычислений.
Добавлено через 1 час 27 минут
Тему открыл значит и закрою. Может кому потом будет интересно.
Вот собсно код. Для ленивых Ctrl+C Ctrl+V в новый чистый Timeline
/*
* Legend
* y = a + b * x;
* where a = y_average - b * x_average;
* also b = SUMM((x - x_average) * (y - y_average)) / SUMM(pow(x - x_average, 2));
*/
// these two arrays only for testing You have to substitute to yours own data
var y_arr :Array = new Array(6, 7, 9, 15, 21);
var x_arr :Array = new Array(20, 28, 31, 38, 40);
function forecast(x_point :Number, y_arr :Array, x_arr :Array) :Number
{
if(x_arr.length != y_arr.length) throw new Error("The x_arr and y_arr arrays have to have the same lenght");
var a :Number;
var b :Number;
// found x_average and y_average
var x_avr :Number = 0;
var y_avr :Number = 0;
for(var i :int = 0; i < x_arr.length; i++)
{
x_avr += x_arr[i];
y_avr += y_arr[i];
}
x_avr /= x_arr.length;
y_avr /= y_arr.length;
// found b
var summ_numerator :Number = 0;
var summ_denominator :Number = 0;
for(var n :Number = 0; n < x_arr.length; n++)
{
summ_numerator += (x_arr[n] - x_avr) * (y_arr[n] - y_avr);
summ_denominator += Math.pow(x_arr[n] - x_avr, 2);
}
b = summ_numerator / summ_denominator;
// found a
a = y_avr - b * x_avr;
return a + b * x_point;
}
trace("Here is the result :) -> " + forecast(30, y_arr, x_arr));
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.