Introdução
Hoje nós vamos cuidar da desgraça dos alunos do primeiro ano de álgebra linear: definição de matriz! Aparentemente, isso ainda não tem um desafio, então vamos lá:
Entrada
- Uma Matriz simétrica em qualquer formato conveniente (você também pode, naturalmente, pegar apenas a parte superior ou a parte inferior da matriz)
- Opcionalmente: o tamanho da matriz
O que fazer?
O desafio é simples: dada uma matriz com valor real Matriz decide se é definida positivamente emitindo um valor verdadeiro, se for o caso, e um valor falsey, se não.
Você pode supor que seus internos realmente funcionem com precisão e, portanto, não sejam responsáveis por problemas numéricos que podem levar ao comportamento errado se a estratégia / código "provável" produzir o resultado correto.
Quem ganha?
Isso é código-golfe , então o código mais curto em bytes (por idioma) vence!
O que é uma matriz positiva definida de qualquer maneira?
Aparentemente, existem 6 formulações equivalentes de quando uma matriz simétrica é definida positivamente. Vou reproduzir os três mais fáceis e referenciá-lo à Wikipedia para os mais complexos.
- Se então é positivo-definido.
Isto pode ser formulado como re-:
Se para cada diferente de zero vetor o (padrão) dot produto de e for positivo, então será positivo. - Seja são osautovaloresde , se agora (ou seja, todos os autovalores são positivos), então é positivo-definido.
Se você não sabe quais são os autovalores, sugiro que você use seu mecanismo de pesquisa favorito para descobrir, porque a explicação (e as estratégias de computação necessárias) é muito longa para ser contida neste post. - Se a decomposição de Cholesky de existe, isto é, existe uma matriz triangular inferior tal que então é definida positiva. Observe que isso é equivalente a "false" de retorno antecipado se a qualquer momento o cálculo da raiz durante o algoritmo falhar devido a um argumento negativo.
Exemplos
Para saída de verdade
Para saída falsey
(pelo menos um valor próprio é 0 / semi-definido positivo)
(valores próprios têm sinais diferentes / indefinidos)
(todos os autovalores menores que 0 / negativo definido)
(todos os autovalores menores que 0 / definido negativo)
(todos os autovalores menores que 0 / definido negativo)
(três positivos, um autovalor negativo / indefinido)