Ich möchte überprüfen, ob eine Matrix positiv definit ist oder nicht. Ich habe im Internet gesucht, wie man es mit Matlab überprüft. Ich interessiere mich für die Verwendung der chol
Möglichkeit zur Überprüfung (nicht die Eigenwerte eins überprüfen). Im Folgenden sind die Codes:Bestimmen einer Matrix als positiv definit
[~, r] = chol(A);
r == 0 && rank(A) == size(A,1)
Ich weiß, dass, wenn A
nicht positiv definit ist, dann r
positiv ist. Was ist jedoch der Zweck der Überprüfung rank(A)==size(A,1)
? Es scheint, dass es funktioniert immer noch, wenn ich nur die folgenden Codes verwenden:
[~, r] = chol(A);
r == 0 % check if r>0
Ich frage mich, ob A
positive semi-definite Matrix ist, r==0
. Wenn ich jedoch A=[1,0;0,0]
als Beispiel verwende, unter Verwendung der obigen Codes zur Überprüfung, r = 2 > 0
. Das macht es mir unangenehm, den Rang zu überprüfen.
Ich fand diesen Code here.
In Ihrem Fall, ich denke einfach, dass r nicht gleich Null ist, weil ‚Chol‘, heißt es, dass „wenn A positiv definit ist“ nicht nur semidefinit . – marcoresk
Rank-defiziente Matrizen sind definitionsgemäß nicht positiv definit. Deshalb gibt dein Beispiel 'A'' r> 0' an - positiv * semi * -definite wird von 'chol' einfach nicht als speziell angesehen. Sie haben Recht, dass die explizite Rangprüfung überflüssig ist –