Показать сообщение отдельно
Старый 26.08.2010, 16:33
Yuorik вне форума Посмотреть профиль Отправить личное сообщение для Yuorik Найти все сообщения от Yuorik
  № 8  
Ответить с цитированием
Yuorik
 
Аватар для Yuorik

Регистрация: Oct 2002
Адрес: Львов
Сообщений: 103
Отправить сообщение для Yuorik с помощью ICQ
Да, спасибо! Тут http://office.microsoft.com/ru-ru/ex...6.aspx?redir=0 конкретно по модели вычислений.

Добавлено через 1 час 27 минут
Тему открыл значит и закрою. Может кому потом будет интересно.

Вот собсно код. Для ленивых Ctrl+C Ctrl+V в новый чистый Timeline
Код AS3:
/*
 * 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));
__________________
Правильный вопрос, это половина ответа.


Последний раз редактировалось Yuorik; 26.08.2010 в 18:20.