« 上一篇: Matlab迈向电子设计自动化领域(转载) 下一篇: 元旦快乐! »
山城棒棒儿军 @ 2004-12-31 16:02



/************************************************************************
* 本算法用指数平滑法预测数据
* 输入: k--平滑周期
*       n--原始数据个数
*       m--预测步数
*       alfa--加权系数
*       x--指向原始数据数组指针
* 输出: s1--返回值为指向一次平滑结果数组指针
*       s2--返回值为指向二次指数平滑结果数组指针
*       s3--返回值为指向三次指数平滑结果数组指针
*       xx--返回值为指向预测结果数组指针
************************************************************************/
void phyc(int k,int n,int m,double alfa,double x[N_MAX],
 double s1[N_MAX],double s2[N_MAX],double s3[N_MAX],double xx[N_MAX])
{
double a,b,c,beta;
int i;

s1[k-1]=0;
for(i=0;i<k;k++)
s1[k-1]+=x;
s1[k-1]/=k;
for(i=k;i<=n;i++)
s1=alfa*x+(1-alfa)*s1[i-1];
s2[2*k-2]=0;
for(i=k-1;i<2*k-1;i++)
s2[2*k-2]+=s1;
s2[2*k-2]/=k;
for(i=2*k-1;i<=n;i++)
s2=alfa*s1+(1-alfa)*s2[i-1];
s3[3*k-3]=0;
for(i=2*k-2;i<3*k-2;i++)
s3[3*k-3]+=s2;
s3[3*k-3]/=k;
for(i=3*k-2;i<=n;i++)
s3=alfa*s2+(1-alfa)*s3[i-1];
beta=alfa/(2*(1-alfa)*(1-alfa));
for(i=3*k-3;i<=n;i++)
{
a=3*s1-3*s2+s3;
b=beta*((6-5*alfa)*s1-2*(5-4*alfa)*s2+(4-3*alfa)*s3);
c=beta*alfa*(s1-2*s2+s3);
xx=a+b*m+c*m*m;
}
}

最新评论


刘新锋

2005-06-21 17:19

不错



rainbow

2005-06-23 18:32

我想问一下,我要做的是:我得到某个区间上的一组数据,由这些数据拟合曲线,并希望曲线在另外的区间符合我的预期目标,应该怎么做啊?
希望得到各位高手的指点,谢谢!也可以email联系!


评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定