简单的梯度下降法求正玄函数局部最小值

来源:互联网 发布:98印尼排华知乎 编辑:程序博客网 时间:2024/06/06 05:40
最近在看Stanford university的Andrew ng关于机器学习的视频,刚看到梯度下降法,做个小实验:使用梯度下降法求正玄函数局部最小值。


#include <stdio.h>#include <math.h>int main(int argc, char** argv){double err=0.00001;  //定义的收敛误差double alpha=0.001; //学习率 学习率越小 学习速度越慢 但是学习率定大了可能会错过最小值double x=-6;   //x的初始值 修改该值 能得到不同的局部最小值 显示了梯度下降法的不足double yCurr=sin(x);double yNext=0;while (true){x=x-alpha*cos(x);yNext=sin(x);if (abs(yNext-yCurr)<err){yCurr=yNext;break;}yCurr=yNext;}printf("%f\n",yCurr);  //y轴局部最小值printf("%f\n",x); //局部最小值对应的x的值return 0;}
x=0时:

x=3时:


x=-6时:


0 0
原创粉丝点击