您的位置:首页 > 编程语言 > Java开发

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: