转载:二次指数平滑法求预测值的Java代码
原文地址:
http://blog.csdn.net/qustmeng/article/details/52186378?locationNum=4&fps=1
import java.util.LinkedList;
import java.util.List;
public class Demo {
/**
* 二次指数平滑法求预测值
* @param list 基础数据集合
* @param year 未来第几期
* @param modulus 平滑系数
* @return 预测值
*/
/**
原文代码设置,当输入的数据数(list长度)小于10, 则不进行计算
*/
private static Double getExpect(List<Double> list, int year, Double modulus ) {
if (list.size() < 10 || modulus <= 0 || modulus >= 1) {
return null;
}
Double modulusLeft = 1 - modulus;
Double lastIndex = list.get(0);
Double lastSecIndex = list.get(0);
for (Double data :list) {
lastIndex = modulus * data + modulusLeft * lastIndex;
lastSecIndex = modulus * lastIndex + modulusLeft * lastSecIndex;
}
Double a = 2 * lastIndex - lastSecIndex;
Double b = (modulus / modulusLeft) * (lastIndex - lastSecIndex);
return a + b * year;
}
public static void main(String[] args) {
List<Double> list = new LinkedList<Double>();
list.add(30.177);
list.add(30.1762);
list.add(30.1761);
list.add(30.1763);
list.add(30.1774);
list.add(30.1766);
list.add(30.1767);
list.add(30.177);
list.add(30.179);
list.add(30.1799);
list.add(30.1813);
list.add(30.1813);
list.add(30.1816);
list.add(30.1839);
list.add(30.1847);
list.add(30.1841);
list.add(30.1824);
list.add(30.1806);
list.add(30.1802);
list.add(30.179);
list.add(30.1773);
list.add(30.1769);
list.add(30.1783);
list.add(30.1822);
list.add(30.1852);
Double value = getExpect(list, 1, 0.6);
System.out.println(value);
}
}
效果图:
相关文章
- 大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)
- 【JAVA】日期函数及格式化实例大全。(后续更新中...)
- [转]java反射机制
- JAVA--如何基于checkstyle统一代码风格和规范?
- Java并发JUC(java.util.concurrent)JMM内存模型
- JavaDemo——使用java代码提交TortoiseSVN
- linux中启动 java -jar 后台运行程序
- Java总结篇系列:Java泛型
- Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求
- java中文排序
- 【蓝桥杯Java组】数论基础—素数筛、最大公约数、最小公倍数
- Java学习---Lucene原理与代码分析完整版
- 华为OD机试 -数字加减游戏(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -报数游戏(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 【JAVA】Exception in thread "main" java.lang.NoClassDefFoundError
- JAVA中如何正确的用String转Date
- 危险代码:如何使用Unsafe操作内存中的Java类和对象
- Java 线程池框架核心代码分析--转
- 如何编写良好的Java代码?为什么?
- Java面试全解析——505道面试题详解
- 整合SSM时报错:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;