Partizipationsfakt.-Eigenvekt. < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 18:19 Fr 26.09.2014 | Autor: | flor1an |
Aufgabe | Bestimmung der Partizipationsfaktoren der Matrix A = [ 1+i , 2 ,5; i-3, i+2 , 7; 4, i+2 , 1] |
Mein Ansatz lautet bei der Berechnung mit Matlab:
%right eigenvector R and canonical form of eigenvalue matrix D
[R,D]=eig(A);
test1= A*R-R*D; % Probe, Ergebnis nahe null (e-14)
[W,D]=eig(A.');
test2= W.'*A-D*W.';% Probe, Ergebnis nahe null (e-14)
L = W.';
%Normalisierung, Rechte Eigenvektoren sind automatisch genormt
u=0;
j=1;
while j<4,
i=1;
while i<4,
[mm] u=u+L(i,j)^2;
[/mm]
i=i+1;
end
norm(j,1)=u ;
u=0;
j=j+1;
end
j=1;
while j<4,
i=1;
while i<4,
left(i,j)=L(i,j)./norm(j,1);
i=i+1;
end
j=j+1;
end
j=1;
Nun sollte doch eigentlich gelten:
L(:,i)' * R(:,j)=δij
where δij is the Kronecker delta:
δij=1 for i=j,
=0 else
Oder nicht? Tut es bei mir jedenfalls nicht.
Berechnung der Partizipationsfaktoren würde ich jedenfalls wie folgt machen:
j=1;
% j is index on columns (modes)
% i is index on rows (states)
while j<4,
i=1;
while i<4,
pf(i,j)=L(i,j)*R(i,j);
i=i+1;
end
j=j+1;
end
pf
Ist das so richtig? Warum funktioniert die Normalisierung nicht?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Danke für die Hilfe
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:50 Fr 26.09.2014 | Autor: | flor1an |
zwischen den beiden schleifen fehlt natürlich noch:
norm=sqrt(norm);
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:01 Sa 27.09.2014 | Autor: | Marcel |
Hallo,
> Bestimmung der Partizipationsfaktoren der Matrix A = [ 1+i
> , 2 ,5; i-3, i+2 , 7; 4, i+2 , 1]
Rückfrage: Was sind Partizipationsfaktoren einer Matrix?
Googel liefert mir keine vernünftige Definition, und den Begriff habe ich
(so) meines Wissens nach noch nie gehört.
Ich weiß nicht, ob andere den Begriff auch nicht kennen...
Edit: Passt das hier: http://www.ibk.ethz.ch/emeritus/da/education/EB/Downloads/EBI_V05_Berechnungsverfahren_FS09_DS.pdf ?
Gruß,
Marcel
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:11 Sa 27.09.2014 | Autor: | Marcel |
Hallo nochmal,
generell gibt es in Matlab immer zwei Tücken, die man bei komplexen
Zahlen/Matrizen beachten sollte:
1.) Der Befehl
A.'
liefert die Transponierte einer Matrix, der Befehl
A'
die konjugiert Transponierte. Ich denke, dass Du darauf geachtet hast.
2.) Das Quadrat einer komplexen Zahl ist Vorzeichenbehaftet, wie Du
etwa an
[mm] $i^2=-1$
[/mm]
sofort siehst. Es kann sein, dass Du irgendwo
[mm] $z^2\,$ [/mm] für $z [mm] \in \IC$
[/mm]
geschrieben hast, aber
[mm] $|z|^2$
[/mm]
schreiben wolltest (in Matlab kannst Du norm(z).^2 oder abs(z).^2 schreiben,
der Punkt vor dem ^-Zeichen kann hier auch weggelassen werden).
Das sind jetzt einfach nur mal Kontrolltipps für Deinen Code, evtl. hast
Du da ja doch alles so gemacht, wie Du es machen willst. Aber lieber
einmal zuviel kontrollieren als einmal zu wenig...
Gruß,
Marcel
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 13:02 Fr 03.10.2014 | Autor: | flor1an |
Hallo,
Danke für deine Antwort. Die habe ich leider jetzt erst gesehen, da ich irgendwie keine Mitteilung bekommen habe.
Mit Partizipationsfaktoren meinte ich das folgende:
http://home.eng.iastate.edu/~jdm/ee554/Participation_factors.pdf
Ich habe jetzt zwar die Matrix der participation factor M, allerdings soll die Summe jeder Spalte und jeder Zeile 1 sein. Gibt es eine Möglichkeit Zeile und Spalte eine Matrix gleichzeitig zu normieren? Also wenn ich zunächst die Spalte mit ihrem Betrag normiere, führt das ja noch nicht zu einer Normierung der Zeile. Dessen Normierung würde, aber wieder die Normierung der Spalte untergraben oder nicht?
Mein Code bis hierhin:
[R,D] = eig(A);
L=inv(R);
participation_factor = L.*R';
%% Normalizing coloumns
j=1;
while j<19, %limits depending on matrix size
i=1;
u=0;
while i<19,
u=u+abs(participation_factor(i,j));
i=i+1;
end
norm(j,3)=u ;
u=0;
j=j+1;
end
norm2=sqrt(norm);
%normalizing the vector
j=1;
while j<19,
i=1;
while i<19,
participation_factor(i,j)=participation_factor(i,j)./norm(j,3);
i=i+1;
end
j=j+1;
end
So habe ich aber halt nur die spalten normiert, wenn ich nun aber noch die Zeilen normiere, ändern sich die einzelnen Werte ja wieder...
Also gibt es eine Möglichkeit Zeilen und Spalten gleichweit zu normieren?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:11 Fr 03.10.2014 | Autor: | Marcel |
Hallo,
> Hallo,
> Danke für deine Antwort. Die habe ich leider jetzt erst
> gesehen, da ich irgendwie keine Mitteilung bekommen habe.
> Mit Partizipationsfaktoren meinte ich das folgende:
>
> http://home.eng.iastate.edu/~jdm/ee554/Participation_factors.pdf
>
> Ich habe jetzt zwar die Matrix der participation factor M,
> allerdings soll die Summe jeder Spalte und jeder Zeile 1
> sein. Gibt es eine Möglichkeit Zeile und Spalte eine
> Matrix gleichzeitig zu normieren? Also wenn ich zunächst
> die Spalte mit ihrem Betrag normiere, führt das ja noch
> nicht zu einer Normierung der Zeile. Dessen Normierung
> würde, aber wieder die Normierung der Spalte untergraben
> oder nicht?
das sehe ich genauso. Betrachten wir mal die nicht symmetrische Matrix
[mm] $A=\pmat{3 & 4\\3 & 4}\,.$
[/mm]
Um die Zeilen zu normieren musst Du jede Zeile mit
[mm] $\frac{1}{\sqrt{3^2+4^2}}=\frac{1}{5}$
[/mm]
multiplizieren.
Zur Normierung der Spalte aber die erste mit
[mm] $\frac{1}{2*3}=\frac{1}{6}$
[/mm]
und die zweite mit
[mm] $\frac{1}{2*4}=\frac{1}{8}\,.$
[/mm]
Das bedeutet ja, dass Du bei dem simultanen Vorgang
den ersten Eintrag [mm] $a_{1,1}=3$ [/mm] mit [mm] $\frac{1}{5}*\frac{1}{6}$
[/mm]
multiplizieren wolltest - das kann nicht funktionieren.
P.S. Bei symmetrischen Matrizen haben wir natürlich erstmal das
gleiche Problem. Aber vielleicht will man da ja nur die Zeilen der Matrix normieren
und dann mit den normierten Zeilen eine neue symmetrische Matrix zusammenbauen.
P.P.S. Ich bin noch nicht dazu gekommen, in Deinen Link reinzuschauen und
weiß auch nicht, wann ich die Zeit dazu finde. Ich hoffe, dass vielleicht, wenn
der/die ein/e oder andere mehr Zeit hat, Dir da vielleicht auch helfen kann.
Gruß,
Marcel
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:20 So 05.10.2014 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|