注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

delphi 实现指数平滑算法  

2015-05-03 12:39:12|  分类: delphixe7 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//* 本算法用指数平滑法预测数据
//* 输入: k--平滑周期
//*       n--原始数据个数
//*       m--预测步数
//*       alfa--加权系数
//*       x--指向原始数据数组指针
//* 输出: s1--返回值为指向一次平滑结果数组指针
//*       s2--返回值为指向二次指数平滑结果数组指针
//*       s3--返回值为指向三次指数平滑结果数组指针
//*       xx--返回值为指向预测结果数组指针
//************************************************************************/
procedure ExponentialSmoothing(k, n, m: Integer; alfa: Real; x, s1, s2, s3, xx: array of Real);
var
  a, b, c, beta: Real;
  I: Integer;
begin
  s1[k - 1] := 0;

  for I := 0 to k - 1 do
    s1[k - 1] := s1[k - 1] + x[i];

  s1[k - 1] := s1[k - 1] / k;

  for I := k to n - 1 do
    s1[i] := alfa * x[i] + (1 - alfa) * s1[i - 1];
  s2[2 * k - 2] := 0;

  for I := k - 1 to 2 * k - 1 do
    s2[2 * k - 2] := s2[2 * k - 2] + s1[i];

  s2[2 * k - 2] := s2[2 * k - 2] / k;

  for I := 2 * k - 1 to n do
    s2[i] := alfa * s1[i] + (1 - alfa) * s2[i - 1];
  s3[3 * k - 3] := 0;

  for I := 2 * k - 2 to 3 * k - 2 do
    s3[3 * k - 3] := s3[3 * k - 3] + s2[i];
  s3[3 * k - 3] := s3[3 * k - 3] / k;

  for I := 3 * k - 2 to n do
    s3[i] := alfa * s2[i] + (1 - alfa) * s3[i - 1];
  beta := alfa / (2 * (1 - alfa) * (1 - alfa));

  for I := 3 * k - 3 to n do
  begin
    a := 3 * s1[i] - 3 * s2[i] + s3[i];
    b := beta * ((6 - 5 * alfa) * s1[i] - 2 * (5 - 4 * alfa) * s2[i] + (4 - 3 * alfa) * s3[i]);
    c := beta * alfa * (s1[i] - 2 * s2[i] + s3[i]);
    xx[i] := a + b * m + c * m * m;
  end;

end;
  评论这张
 
阅读(281)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017