WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Positiv semidefinitheit überprüfen - FEHLER

 

SLAPSTICK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2014, 14:34     Titel: Positiv semidefinitheit überprüfen - FEHLER
  Antworten mit Zitat      
Hi

ich möchte die positiv semidefinitheit meiner Matrix überprüfen, d.h. ich multiplizere einen transponierten vektor an die matrix und dann nochmal mit dem vektor, das ergebnis sollte dann größer oder gleich 0 sein.

Bei meiner Matrix handelt es sich um eine 500x500x492 Matrix (kovarianz).

Hier mal mein Versuch. Aber leider stimmt irgendetwas nicht, da ich nicht für alle Zufallsvektoren die positiv Semidefinitheit herausbekomme, was aber gelten sollte.

Code:
kovarianz = kovarianz;
L=size(kovarianz);

Test_n=1
n_count=zeros(1,L(3));
%kovarianz(find(isnan(kovarianz)))=0;

for t = 1:L(3)
     for i = 1:Test_n
        x = (randn(L(1),1)*1000);
        y = x' * kovarianz(:,:,t) * x;
        if y >= 0
            disp('kovarianz(i,j) ist positiv-semidefinit.')
            n_count(t)=n_count(t)+1;
        else
            disp('kovarianz(i,j) ist nicht positiv-semidefinit.')
        end  
    end
end
disp('Anteil der positiv-semidefinitheit pro Peiode t:');
n_count./Test_n
 


Kann mir bitte jemand helfen?


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.04.2014, 14:58     Titel:
  Antworten mit Zitat      
Hallo,

es ist beispielsweise möglich, dass aufgrund numerischer Fehler nicht genau 0 herauskommt, sondern ein minimal von 0 unterschiedlicher Wert.

Genauer diagnostizieren kann man das aber nur, wenn du eine 500x500-Matrix zur Verfügung stellst, bei der das Problem auftritt.

Aber auch noch eine technische Frage: du testest hier einen Vektor bzw. eine gewisse Anzahl von Vektoren, aber bei positiv semidefiniten Matrizen muss die Bedingung ja für alle denkbaren Vektoren erfüllt sein. Wäre es nicht sinnvoller, die Eigenwerte zu berechnen? Das dauert pro Matrix größenordnungsmäßig 1s, für alle Matrizen also rund 5 Min. - und du hast zuverlässige Ergebnisse.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
SLAPSTICK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2014, 15:10     Titel:
  Antworten mit Zitat      
Ja das mit den Eigenvektoren hatte ich mir auch überlegt. Wie würde dsas gehen? Dann könnte ich das als alternative vorschlagen.

Mein Professor würde es gerne auf meinem Weg haben, und er meinte, dass wenn ich es für genug Zufallsvektoren teste, man dann auch die Bedingung "für alle" folgern kann...

Meinst du eine 500x500x492 Matrix? Die ist leider zu groß...
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.04.2014, 15:15     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ja das mit den Eigenvektoren hatte ich mir auch überlegt. Wie würde dsas gehen? Dann könnte ich das als alternative vorschlagen.
Code:
       y = max(eig(kovarianz(:,:,t));
        if y >= 0
            disp('kovarianz ist positiv-semidefinit.')
        else
            disp('kovarianz ist nicht positiv-semidefinit.')
        end  


Zitat:
Meinst du eine 500x500x492 Matrix? Die ist leider zu groß...

Nein, ich meine (wie gesagt) eine 500x500 - Matrix. Es reicht ja, das ganze für ein t zu betrachten, bei dem du nicht die gewünschten Ergebnisse erhältst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
SLAPSTICK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2014, 15:23     Titel:
  Antworten mit Zitat      
Danke!

Hier die 500x500 Matrix.

test.zip
 Beschreibung:

Download
 Dateiname:  test.zip
 Dateigröße:  383.39 KB
 Heruntergeladen:  339 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.04.2014, 15:57     Titel:
  Antworten mit Zitat      
Hallo,

deine Matrix enthält in Zeile 316 bzw. Spalte 316 unendlich. Damit wird auch das Ergebnis deines Tests Nan oder +/- Inf sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
SLAPSTICK

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.04.2014, 16:09     Titel:
  Antworten mit Zitat      
Super, das hat mein Problem gelöst. Vielen Dank Smile
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.