Não é esse o caso. No código que eu postei, a função l.u é otimizada somente com relação à 'u' (primeiro argumento da função), enquanto todos os outros valores ficam constantes.

Eu acabei postando a pergunta no r-help tb e a solução é bastante prosaica -- bastava nomear os argumentos, ie, optim(par=...,fn=...,...). De toda forma, obrigado pela resposta.