100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java实现数据预测—加权移动平均法

java实现数据预测—加权移动平均法

时间:2019-10-17 06:21:27

相关推荐

java实现数据预测—加权移动平均法

/*** @author Along* @desc 风险预测--加权移动平均法*/public class Predicted implements Serializable{private static final long serialVersionUID = 1L;/*加权移动平均法* data : 时间序列 [100,200,300,400]* x : 迭代次数,人为给定最大迭代次数(优化,精度:平均相对误差计算)* jd : 结果精度要求,预测结果复合精度要求时结束预测* s : 预测结果*/public static double WeightedMovingAverage1(double[] data, int x,int jd){double[] newData = data.clone();int count = newData.length;double s = 0.0;int i = 0;while (i<=x){s = 0.0;for (int j = 0; j < count; j++){s += (j + 1) * newData[j];}s /= (count * (count + 1) / 2);for (int j = 0; j < count - 1; j++){newData[j] = newData[j + 1];}newData[count - 1] = s;double nd = getRealVaule(newData[newData.length-1],jd);double cs = 0;int js = 0;for(int h=0; h<newData.length-1; h++){cs = getRealVaule(newData[h],jd);cs = newData[h];if(nd == cs){js++;}}if(js == newData.length-1){break;}i++;}return s;}/*加权移动平均法* data : 时间序列 [100,200,300,400]* x : 迭代次数,人为给定最大迭代次数* s : 预测结果*/public static double WeightedMovingAverage2(double[] data, int x){double[] newData = data.clone();int count = newData.length;double s = 0.0;int i = 0;while (i<=x){s = 0.0;for (int j = 0; j < count; j++){s += (j + 1) * newData[j];}s /= (count * (count + 1) / 2);for (int j = 0; j < count - 1; j++){newData[j] = newData[j + 1];}newData[count - 1] = s;double nd =newData[newData.length-1];double cs = 0;int js = 0;for(int h=0; h<newData.length-1; h++){cs = newData[h];if(nd == cs){js++;}}if(js == newData.length-1){break;}i++;}return s;}public static void main(String[] args){//double[] data = {100,200,300,400};double[] data = {3,7,2,4,9,1,5};int x = 50;double s = WeightedMovingAverage2(data,x);System.out.println(s);}/*** 对结果进行四舍五入* value :原始数* resLen :所要的精度*/public static double getRealVaule(double value,int resLen) {if(resLen==0){//原理:123.456*10=1234.56+5=1239.56/10=123//原理:123.556*10=1235.56+5=1240.56/10=124return Math.round(value*10+5)/10;}else{double db = Math.pow(10, resLen);return Math.round(value*db)/db;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。