#include "stdio.h"
#define F(x) (x*x+2*x+3) //目标函数
#define dF(x) (2*x+2) //函数求导
#define learning_rate 0.1 //步长
#define update(x) (x-learning_rate*dF(x)) //x更新规则
void main()
{
double x0, y0, x1, y1;
int i;
x0 = 2;
y0 = 11; //设定初值
for (i = 0; i < 30; i++)
{
x1 = update(x0);
y1 = F(x1);
x0 = x1;
y0 = y1;
}
printf("x=%f,y=%f\n", x0, y0);
}
运行结果: