Ir para conteúdo
Fórum Script Brasil
  • 0

[Matlab] Cálculo das derivadas parciais e da matriz hessiana de uma função


klaus.silva@live.com

Pergunta

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.com
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...