Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2011, 17:29   #1
StudeHt
Пользователь
 
Регистрация: 05.04.2009
Сообщений: 78
По умолчанию Аппроксимация временного ряда [Delphi]

Здравствуйте уважаемые эксперты! Вообщем нужно аппроксимировать ряд, котрый задается координатами точек из StringGrid'а. Аппроксимирую методом наименьших квадратов. У меня получился следующий код для процедуры аппроксимации:
Код:
procedure TForm2.Button2Click(Sender: TObject);
var i : integer;
    Sum_x : integer;
    Sum_y : integer;
    Sum_x_2 : integer;
    Proizv_x_y : integer;
begin
  //загружаем координаты y StringGrid в отдельный массив
  try
    for i := 1 to Count do
      Pixels_y[i] := StrToInt(StringGrid1.Cells[1,i]);
  except on EConvertError do
    begin
      ShowMessage('Ошибка! Координаты точек заданы не верно либо пусты!!!');
      Exit;
    end;
  end;
  //рисуем ряд черным цветом
  for i := 1 to Count do
    Series1.AddXY(i, Pixels_y[i], '', clBlack);
  //аппроксимируем исходный ряд
  for i := 1 to Count do
    Pixels_x[i] := StrToInt(StringGrid1.Cells[0,i]);
  Sum_x := 0; Sum_y := 0;
  for i := 1 to Count do
    begin
      Sum_x := Sum_x + Pixels_x[i];
      Sum_y := Sum_y + Pixels_y[i];
    end;
  Proizv_x_y := 0;
  for i := 1 to Count do
    Proizv_x_y := Proizv_x_y + Pixels_x[i] * Pixels_y[i];
  Sum_x_2 := 0;
  for i := 1 to Count do
    begin
      Pixels_x[i] := Pixels_x[i] * i;
      Sum_x_2 := Sum_x_2+Pixels_x[i];
    end;
  a_0 := 0; b_0 := 0;
  b_0 := (Sum_x * Sum_y - Proizv_x_y) / (Sum_x * (Count - 1));
  a_0 := (Proizv_x_y - (Sum_x * b_0)) / Sum_x_2;
  Series2.Clear;
  //рисуем аппроксимацию ряда красным цветом
  for i := 1 to Count do
    Series2.AddXY(i, a_0 * i + b_0, '', clRed);
end;
Но аппроксимируется временной ряд неверно.. Подскажите в чем ошибка, заранее огромное спасибо!
StudeHt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi: аппроксимация функций методом базиса из финитных функций Denna Помощь студентам 1 12.03.2012 19:23
написать программу пересчета величин временного интервала rom6520 Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2011 18:19
Сохранение временного изображения. Abuhamed PHP 2 19.01.2011 11:33
Найти сумму ряда с точностью e, если дан общий член этого ряда JiLiYa Общие вопросы C/C++ 2 18.02.2009 11:11