# file "Rsteep4" (related to Q4 of HW#2) x = c(3,4,8,10,11) y = c(5,10,21,35,40) f = function(delta, beta) { sum((y - delta * x^beta)^2) } fdelta = function(delta,beta) { sum(-2*(y-delta*x^beta)*x^beta) } fbeta = function(delta,beta) { sum(-2*(y-delta*x^beta)*delta*x^beta*log(x)) } alpha = -0.2 deltalist = betalist = c(1) for (i in 1:500) { deltaprev = deltalist[length(deltalist)] betaprev = betalist[length(betalist)] deltanew = deltaprev + alpha * fdelta(deltaprev,betaprev) betanew = betaprev + alpha * fbeta(deltaprev,betaprev) # Do the "retraction" step. while ( f(deltanew,betanew) > f(deltaprev,betaprev) ) { deltanew = (deltanew+deltaprev)/2 betanew = (betanew+betaprev)/2 } deltalist = c( deltalist, deltanew ) betalist = c( betalist, betanew ) } print(deltalist[length(deltalist)]) print(betalist[length(betalist)]) plot(deltalist, betalist, type='b')