
# 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')

