linear-algebra

Lineare Algebra ist ein Kernbereich der Mathematik, der Vektorräume und lineare Abbildungen zwischen diesen Räumen untersucht. Hauptthemen sind: Matrizen, Vektoren, simultane Systeme linearer Gleichungen, diagonale Form, Eigenwerte, Eigenvektoren, Projektionen, Punkte, Linien, Ebenen, Hyperebenen, Rotationen und Reflexionen.
2
Antworten

lineare Simulation von multidimensionalem Array

Ich kann ein 2D-Array in einem linearen Array mit [x + y * width] als linearem Index simulieren. Ich kann dies auf 3D-Arrays erweitern: [x + y * width + z * width * height] . Gibt es eine allgemeine Formel für ein N-dimensionales Arra...
24.03.2009, 19:40
3
Antworten

___ answer15739248 ___

MRDIVIDE oder der Operator %code% löst tatsächlich das lineare System %code% als im Gegensatz zu MLDIVIDE oder dem Operator %code% , der das System %code% löst.

Um ein System %code% mit einer unsymmetrischen, nicht invertierbaren Matrix %code% zu lösen, können Sie sich entweder auf %code% verlassen, was über die Faktorisierung von %code% mit Gauss Elimination oder %code% geschieht. Dies geschieht über die Singular Value Decomposition und das Zero-Sing der Singulärwerte unterhalb einer (Default-) Toleranzgrenze.

Hier ist der Unterschied (für den Fall %code% ): Was ist der Unterschied zwischen PINV und MLDIVIDE, wenn ich A * x = b löse?

  

Wenn das System überbestimmt ist, liefern beide Algorithmen die   gleiche Antwort. Wenn das System unterbestimmt ist, gibt PINV die   Lösung x, die die Mindestnorm hat (min NORM (x)). MLDIVIDE wird   Wählen Sie die Lösung mit der geringsten Anzahl von Nicht-Null-Elementen.

In Ihrem Beispiel:

%Vor%

das System ist unterbestimmt, und die zwei verschiedenen Lösungen werden sein:

%Vor%

In beiden Fällen ist der Approximationsfehler von %code% nicht vernachlässigbar (nicht exakte Lösung) und dasselbe, d. h. %code% und %code% werden das gleiche Ergebnis liefern.

Was macht MATLAB?

In diesem Beitrag in scicomp.stackexchange.com . Ich gehe davon aus, dass ähnliche Optionen für den Operator %code% gelten.

Für Ihr Beispiel wird MATLAB höchstwahrscheinlich eine Gauß-Eliminierung durchführen, die die einfachste Lösung unter einer Unendlichkeit ergibt (da kommt die 5 her).

Was macht Python?

Python, in %code% verwendet pseudoinverse / SVD, wie oben gezeigt (deshalb erhalten Sie einen Vektor von 0.2). Im Endeffekt erhalten Sie mit dem folgenden Befehl das gleiche Ergebnis wie in %code% von MATLAB:

%Vor%     
___ qstntxt ___

Ich habe diese Zeile des MATLAB-Codes:

%Vor%

Ich verwende diese Eingaben:

%Vor%

Dies ist das Ergebnis (eine 1x25-Matrix):

%Vor%

Was macht MATLAB? Ich versuche, dieses Verhalten in Python zu kopieren, und die %code% -Dokumentation in MATLAB war nicht hilfreich. Woher kommt die 5 und warum sind die restlichen Werte 0?

Ich habe dies mit anderen Eingaben versucht und ähnliche Ergebnisse erhalten, normalerweise nur ein anderes erstes Element und Nullen, die den Rest der Matrix füllen. In Python, wenn ich %code% verwende, sind alle Werte in der ersten zurückgegebenen Matrix (d. H. Nicht die Einzahl) 0,2. Ich habe schon in Python die richtige Aufteilung versucht und es gibt etwas komplett mit den falschen Dimensionen aus.

Ich verstehe, was eine Approximation kleinster Quadrate ist, ich muss nur wissen, was %code% macht.

Siehe auch:

___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123matlab ___ MATLAB ist eine von MathWorks entwickelte Hochsprachen- und interaktive Programmierumgebung für numerische Berechnungen und Visualisierung. Fragen sollten entweder mit [tag: matlab] oder [tag: oktave] versehen werden, aber nicht mit beiden, es sei denn, die Frage bezieht sich explizit auf beide Pakete. Wenn Sie dieses Tag verwenden, erwähnen Sie bitte die MATLAB-Version, mit der Sie arbeiten (z. B. R2017a). ___ tag123numpy ___ NumPy ist eine Erweiterung der Python-Programmiersprache für den naturwissenschaftlichen und numerischen Bereich. ___ ___ qstnhdr mrdivide Funktion in MATLAB: was es tut, und wie kann ich es in Python? ___ answer1007532 ___

Per dieses handliche "Spickzettel" von numpy für Matlab Benutzer %code% - %code% numpy.linalg.linalg , eine leichtgewichtige Version des vollen %code% .

    
___ answer1007469 ___

a / b findet die Lösung des kleinsten Quadrats für das lineare Gleichungssystem bx = a

Wenn b invertierbar ist, ist dies a * inv (b), aber wenn es nicht ist, ist es das x, das norm (bx-a)

minimiert

Sie können mehr über die kleinsten Quadrate auf wikipedia .

nach matlab documentation , mrdivide liefert höchstens k Werte ungleich null, wobei k der berechnete Rang von b ist. Meine Vermutung ist, dass Matlab in Ihrem Fall das Problem der kleinsten Quadrate löst, das durch Ersetzen von b durch b (: 1) (das den gleichen Rang hat) gegeben ist. In diesem Fall wird die moore-penrose inverse %code% definiert und gibt die gleiche Antwort

    
___ tag123linearalgebra ___ Lineare Algebra ist ein Kernbereich der Mathematik, der Vektorräume und lineare Abbildungen zwischen diesen Räumen untersucht. Hauptthemen sind: Matrizen, Vektoren, simultane Systeme linearer Gleichungen, diagonale Form, Eigenwerte, Eigenvektoren, Projektionen, Punkte, Linien, Ebenen, Hyperebenen, Rotationen und Reflexionen. ___

Ich habe diese Zeile des MATLAB-Codes: %Vor% Ich verwende diese Eingaben: %Vor% Dies ist das Ergebnis (eine 1x25-Matrix): %Vor% Was macht MATLAB? Ich versuche, dieses Verhalten in Python zu kopieren, und die mrdivide -Dokumentatio...
17.06.2009, 14:36
1
Antwort

Eigen: Der beste Weg, A * S * A_ zu evaluieren und das Ergebnis in einer symmetrischen Matrix zu speichern

Sei S eine symmetrische n x n -Matrix und A sei eine m x n -Matrix. Gegeben: B = A * S * A_transposes (wobei "*" für eine Matrixproduktoperation steht) B wird auch eine symmetrische Matrix sein. Mit der Bibliothek tuxfamily Eigen, Versi...
04.11.2012, 02:25
1
Antwort

Elegante Implementierung der n-dimensionalen Matrixmultiplikation mit Listen?

Mit Hilfe von Listenfunktionen lassen sich beliebig dimensionierte Vektormathematik recht elegant implementieren. Zum Beispiel: %Vor% Und so weiter. %Vor% Natürlich ist dies nicht die effizienteste Lösung, aber es ist aufschlussreich zu...
02.07.2015, 22:17
1
Antwort

Was verursacht die 2x Verlangsamung in meiner Cython-Implementierung der Matrixvektormultiplikation?

Ich versuche derzeit, grundlegende Matrixvektormultiplikation in Cython (als Teil einer viel größeres Projekt, um die Berechnung zu reduzieren ) und feststellen, dass mein Code etwa 2x langsamer ist als Numpy.dot . Ich frage mich, ob es et...
09.02.2016, 22:50
1
Antwort

Finite-Feld-Bibliothek für lineare Algebra für Haskell

Ich suche nach einer linearen Bibliothek für lineare Algebra für Haskell. Etwas wie FFLAS-FFPACK für Haskell wäre großartig: -). Natürlich habe ich hmatrix überprüft, es scheint etwas Unterstützung für beliebige Matrix-Element-Typen ,...
19.05.2012, 14:07
1
Antwort

Löse kleine symmetrische positiv definite Ax = b nur auf der GPU

Ich versuche eine Anwendung in Echtzeit-3D-Modellierung zu optimieren. Der Berechnungsteil der Anwendung läuft fast vollständig auf der GPU in CUDA. Die Anwendung erfordert die Lösung eines kleinen (6 × 6) doppeltpräzisen symmetrischen positiv d...
29.07.2012, 17:06
2
Antworten

Einige Fragen zum Überprüfen, ob eine Menge in C ++ eine algebraische Gruppe ist

Ich habe begonnen, eine Bibliothek zu erstellen, um Dinge mit abstrakter Algebra zu tun. Im Moment versuche ich eine Funktion zu erstellen, die überprüft, ob ein Set eine Gruppe ist. Es sollte selbsterklärend sein: In der Mathematik ist eine...
28.05.2014, 21:35
1
Antwort

Minimierung der kleinsten Quadrate innerhalb des Schwellenwerts in MATLAB

Die cvx -Suite für MATLAB kann das (scheinbar harmlose) Optimierungsproblem lösen, ist aber für die großen, vollständigen Matrizen I eher langsam arbeite mit. Ich hoffe, dies liegt daran, dass cvx Overkill ist und dass das Problem tatsächlich...
18.12.2015, 18:27
1
Antwort

Large-scale pseudoinverse

Ich möchte das Moore-Penrose Pseudoinverse einer riesigen Matrix berechnen. Idealerweise würde ich das gerne auf einer Matrix machen, die 23 Millionen Zeilen und 1000 Spalten hat, aber wenn nötig, kann ich die Anzahl der Zeilen auf 4 Millionen...
21.07.2010, 15:43