# File "Rsteep2". f = function(x1,x2) { -(x1-2)^2 -(x2-3)^4 } fx1 = function(x1,x2) { -2*(x1-2) } fx2 = function(x1,x2) { -4*(x2-3)^3 } alpha = 0.2 x1list = x2list = c(10) for (i in 1:50) { x1prev = x1list[length(x1list)] x2prev = x2list[length(x2list)] x1new = x1prev + alpha * fx1(x1prev,x2prev) x2new = x2prev + alpha * fx2(x1prev,x2prev) # Do the "retraction" step. while ( f(x1new,x2new) < f(x1prev,x2prev) ) { x1new = (x1new+x1prev)/2 x2new = (x2new+x2prev)/2 } x1list = c( x1list, x1new ) x2list = c( x2list, x2new ) } plot(x1list, x2list, type='b')