前書き
今日は、1年目の線形代数の学生の悩みの種である、行列の確定性を考慮します!どうやらこれにはまだ挑戦がありませんので、ここに行きます:
入力
- 任意の便利な形式のA 対称マトリックス(もちろん、マトリックスの上部または下部のみを取ることもできます)
- オプション:行列nのサイズ
何をすべきか?
課題は簡単です。実数値の行列与えられると、Matrixは、もしそうなら真理値を出力し、そうでなければ偽値を出力することにより、正定かどうかを決定します。
ビルトインが実際に正確に機能するため、戦略/コードが「確かに」正しい結果をもたらす場合、間違った動作を引き起こす可能性のある数値的な問題を考慮する必要はありません。
誰が勝ちますか?
これはcode-golfなので、バイト単位の最短コード(言語ごと)が勝ちます!
とにかく正定行列とは何ですか?
対称行列が正定値の場合、明らかに6つの等価な定式化があります。3つの簡単なものを再現し、より複雑なものについてはWikipediaを参照してください。
- もし、次いで正定値です。
これは、次のように再定式化できます。
すべての非ゼロベクトルについて、との(標準)内積が正の場合、は正定です。 - ましょうである固有値の、今ならすべてです(固有値が正の場合)、は正定値です。説明(および必要な計算戦略)が長すぎてこの記事に含まれないため、固有値が何かわからない場合は、お気に入りの検索エンジンを使用して調べることをお勧めします。
- 場合コレスキー分解の存在する、すなわち、下三角行列が存在するよう、その後正定値です。負の引数のためにアルゴリズム中のルートの計算が失敗した場合、これは早期に返される「false」と同等であることに注意してください。
例
真実の出力
偽の出力用
(少なくとも1つの固有値が0 /半正の正数)
(固有値は異なる符号/不定)
(0より小さいすべての固有値/負定)
(0より小さいすべての固有値/負定値)
(0より小さいすべての固有値/負定値)
(3つの正の固有値、1つの負の固有値/不定)