Ich habe festgestellt, dass nach der Ausführung eigs() Funktion mehrmals, jedes Mal gibt es andere, aber näherungsweise Ergebnis.Julia: eigs() -Funktion, die nach jeder Auswertung verschiedene Werte zurückgibt
Gibt es eine Möglichkeit, es jedes Mal das gleiche Ergebnis zurückgeben? Die Ausgabe erfolgt manchmal mit dem Zeichen "+" oder "-".
Inhalt des M:
[2, 1] = 1.0
[3, 1] = 0.5
[1, 2] = 1.0
[3, 2] = 2.5
[1, 3] = 0.5
[2, 3] = 2.5
M = M+M'
(d, v) = eigs(M, nev=1, which=:LR)
habe ich versucht, gleiche Funktion auf derselben Sparse Matrix in Python ausgeführt wird, obwohl die Matrix etwas anders aussieht als ich denke, es ist gleich ist. Gerade linke Werte sind von 0 nummeriert. In Julia sind sie von 1 nummeriert. Ich weiß nicht, ob das ein großer Unterschied ist. Die Werte sind in Julia und Python ungefähr gleich, aber in Python sind sie nach jeder Auswertung immer gleich. Auch Rückgabewerte in Python sind komplexe Zahlen, in Julia real.
Python-Code:
Inhalt des M.T:
from scipy.sparse import linalg
(1, 0) 1.0
(2, 0) 0.5
(0, 1) 1.0
(2, 1) 2.5
(0, 2) 0.5
(1, 2) 2.5
eigenvalue, eigenvector = linalg.eigs(M.T, k=1, which='LR')
Jede Idee, warum dieses Verhalten auftritt?
Edit:
Dies sind Ergebnisse von vier Bewertungen von GIE
==========eigvalues==============
[2.8921298144977587]
===========eigvector=============
[-0.34667468634025667
-0.679134250677923
-0.6469878912367839]
=================================
==========eigvalues==============
[2.8921298144977596]
===========eigvector=============
[0.34667468634025655
0.6791342506779232
0.646987891236784]
=================================
==========eigvalues==============
[2.8921298144977596]
===========eigvector=============
[0.34667468634025655
0.6791342506779233
0.6469878912367841]
=================================
==========eigvalues==============
[2.8921298144977583]
===========eigvector=============
[0.3466746863402567
0.679134250677923
0.646987891236784]
=================================
Ich habe versucht, die Anzahl der Iterationen zu erhöhen. Ich bin nicht so besorgt, dass die Zahl etwas anders ist. Ich bin besorgt über dieses "-" Zeichen. In Python, egal wie oft ich es ausführe, gibt es nie "-" Vorzeichen für diese Eingabedaten. –
Korrektur: Nach der Bearbeitung scheint es, dass nicht die Anzahl der Iterationen das Problem ist. Der Algorithmus oszilliert wahrscheinlich zur Lösung hin und manchmal findet er ihn von oben und manchmal von unten und er stoppt, wenn die maximale Genauigkeit (Unterschied kleiner eps = nicht messbar) erreicht ist. – maraca
Und gibt es einen Weg, wie man es reparieren kann? –