Estou com grandes dificuldades para determinar, através do Matlab, o gradiente (derivadas parciais de uma função multivariável) e a matriz hessiana (derivadas parciais de primeira e segunda ordem de uma função multivariável) de uma função quadrática. Apesar de conhecer a função e poder alocar esses dados no código apenas fazendo o cálculo analítico, preciso considerar que o usuário não saiba como fazer essa etapa (ou que não tenha acesso ao programa para incluir tais dados). Portanto, tanto o cálculo do gradiente e da hessiana devem ser feitos através da análise da própria função (estou implementando um código de otimização de segunda ordem Quasi-Newton, de métrica variável BFGS).
A questão é: como implemento esse cálculo no código? Segue um exemplo matemático para melhor compreensão:
A hessiana acima tem valia apenas na primeira iteração do método, contudo o gradiente será atualizado a cada iteração. Espero que tenha sido claro o bastante, muito obrigado!
Pergunta
klaus.silva@live.com
Boa tarde, pessoal!
Estou com grandes dificuldades para determinar, através do Matlab, o gradiente (derivadas parciais de uma função multivariável) e a matriz hessiana (derivadas parciais de primeira e segunda ordem de uma função multivariável) de uma função quadrática. Apesar de conhecer a função e poder alocar esses dados no código apenas fazendo o cálculo analítico, preciso considerar que o usuário não saiba como fazer essa etapa (ou que não tenha acesso ao programa para incluir tais dados). Portanto, tanto o cálculo do gradiente e da hessiana devem ser feitos através da análise da própria função (estou implementando um código de otimização de segunda ordem Quasi-Newton, de métrica variável BFGS).
A questão é: como implemento esse cálculo no código? Segue um exemplo matemático para melhor compreensão:
f(x) = x(1)^2 + 10*x(2)^2
gradiente f(x) = [ df/dx(1) ; df/dx(2) ] = [ 2*x(1) ; 20*x*2 ]
hessiana f(x) = [ dfx(1)/dx(1) dfx(1)/dx(2) ; dfx(2)/dx(1) dfx(2)/dx(2)] = [ 2 0 ; 0 20 ]
A hessiana acima tem valia apenas na primeira iteração do método, contudo o gradiente será atualizado a cada iteração. Espero que tenha sido claro o bastante, muito obrigado!
Editado por klaus.silva@live.comLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.