introduzione
Oggi ci occuperemo della rovina degli studenti di algebra lineare del primo anno: la precisione della matrice! Apparentemente questo non ha ancora una sfida, quindi eccoci qui:
Ingresso
- A simmetrica Matrice in qualsiasi formato conveniente (puoi anche prendere solo la parte superiore o inferiore della matrice)
- Opzionalmente: la dimensione della matrice
Cosa fare?
La sfida è semplice: data una matrice con valore reale matrice decide se è definita positiva emettendo un valore di verità in caso affermativo e un valore di falsità in caso contrario.
Potresti presumere che i tuoi built-in funzionino effettivamente in modo preciso e quindi non debbano tenere conto di problemi numerici che potrebbero portare a comportamenti errati se la strategia / il codice "dimostrabilmente" dovesse produrre il risultato corretto.
Chi vince?
Questo è code-golf , quindi vince il codice più breve in byte (per lingua)!
Che cos'è comunque una matrice definita positiva?
Apparentemente ci sono 6 formulazioni equivalenti di quando una matrice simmetrica è definita positiva. Riprodurrò i tre più facili e ti farò riferimento a Wikipedia per quelli più complessi.
- Se allora è definito positivo.
Questo può essere riformulato come:
Se per ogni vettore diverso da zero il prodotto punto (standard) di e è positivo, allora è definito positivo. - Lascia che sono gliautovaloridi , se ora (ovvero tutti gli autovalori sono positivi), allora è definito positivo.
Se non sai quali sono gli autovalori, ti suggerisco di utilizzare il tuo motore di ricerca preferito per scoprirlo, perché la spiegazione (e le strategie di calcolo necessarie) è troppo lunga per essere contenuta in questo post. - Se esiste la decomposizione di Cholesky di , cioè esiste una matrice triangolare inferiore tale che allora è definita positiva. Si noti che questo equivale a "false" di ritorno anticipato se in qualsiasi momento il calcolo della radice durante l'algoritmo fallisce a causa di un argomento negativo.
Esempi
Per risultati veritieri
Per output falso
(almeno un autovalore è 0 / semi-definito positivo)
(gli autovalori hanno segni diversi / indefiniti)
(tutti gli autovalori inferiori a 0 / negativo definito)
(tutti gli autovalori inferiori a 0 / negativo definito)
(tutti gli autovalori inferiori a 0 / negativi definiti)
(tre autovalori positivi, uno negativo / indefinito)