java实现梯度下降算法
2015-12-13 15:40
387 查看
/** * 梯度下降算法,求解 f(x)=x^4-3x^3+2 最小值 * 导数为: f'(x)=4x^3-9x^2 * @author Zealot * @date 2015年12月13日 */ public class GradientDescent { // 经过计算, we expect that the local minimum occurs at x=9/4 double x_old = 0; static double x_new = 6; // 从 x=6 开始迭代 double gamma = 0.01; // 每次迭代的步长 double precision = 0.00001;//误差 static int iter = 0;//迭代次数 //目标函数的导数 private double derivative(double x) { return 4 * Math.pow(x, 3) - 9 *Math.pow(x, 2); } private void getmin() { while (Math.abs(x_new - x_old) > precision){ iter++; x_old = x_new; x_new = x_old - gamma * derivative(x_old); } } public static void main(String[] args) { GradientDescent gd = new GradientDescent(); gd.getmin(); System.out.println(iter+": "+x_new); } }
相关文章推荐
- BF算法(java版本)
- Java泛型详解【转】
- Java日志记录的事儿
- KMP算法(java版本)
- java类初始化
- Intellij idea搭建maven+springMVC开发项目(二)
- Spark---Scala与Java性能比较
- Java虚拟机(二)执行子系统
- struts2知识点总结(3)
- Java&Xml教程(五)使用SAX方式解析XML文件
- Java&Xml教程(五)使用SAX方式解析XML文件
- Java&Xml教程(五)使用SAX方式解析XML文件
- 一个简单的hibernate+mysql的实例java/jsp开发
- Java回炉之反射(二)动态代理
- java RSA/DSA/ECDSA实现数字签名
- java RSA/DSA/ECDSA实现数字签名
- 【原】java环境变量配置&& jdk配置 && 各配置的意义
- java.io
- 【Java自学】计算正多边形的面积
- Eclipse小技巧--快速输入System.out.println();