python

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.
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
4
Antworten

SQLAlchemy-Viele-zu-Viele-Orphan-Löschung

Ich versuche SQLAlchemy zu verwenden, um ein grundlegendes Benutzergruppenmodell zu implementieren, in dem Benutzer mehrere Gruppen und Gruppen haben können, die mehrere Benutzer haben können. Wenn eine Gruppe leer wird, möchte ich, dass die...
11.04.2009, 19:07
1
Antwort

Ändern Sie die Farbe der ausgewählten Matplotlib-Histogramm-Bin-Leiste, wenn Sie ihren Wert angeben

Ähnlich einer Frage, die ich zuvor gestellt habe , ich habe ein MWE so: %Vor% Ich möchte dann die Variable bar_value_to_colour verwenden, um die Farbe des Balkens im Histogramm, in dem sich der Wert befindet, automatisch in Blau zu änder...
09.03.2016, 11:46
1
Antwort

Schnellster Weg zur Vereinigung von Listen - Python

Es gibt einen C ++ Vergleich, um die Vereinigung von Listen aus Listen von Listen zu erhalten: Der schnellste Weg zur Vereinigung von Sets Und es gibt noch einige andere Python-bezogene Fragen, aber keine schlägt den schnellsten Weg vor, di...
08.03.2016, 11:24
3
Antworten

Wie kann ich die Standard-Python-Version von EMACS 23 ändern?

Versuchen Sie, die Version von Python zu ändern, die emacs verwendet. (OSX10.6) Im Terminal    Python zeigt die Version an, die ich in PATH eingerichtet habe Aber in EMACS nicht. Wie kann ich das ändern?     
10.05.2011, 15:29
2
Antworten

Liste von Spaltennamen aus einer leeren Tabelle abrufen [duplizieren]

Ich benutze Pythons sqlite3 Modul und möchte eine Liste aller Spalten in einer Tabelle erhalten, wenn die Tabelle keine Zeilen hat. Normalerweise, wenn ich eine Datenbank wie erstelle %Vor% Dann kann ich die Spaltennamen mit etwas wi...
13.05.2011, 14:05
2
Antworten

Pyinstaller Jinja2 TemplateNotFound

Ich verwende pyinstaller , um meine flask-Anwendung zu erstellen, Alles funktioniert gut, außer ich bekomme Probleme mit Jinja2 Vorlagen. Es gab mir jinja2.exceptions.TemplateNotFound , Ich habe versucht, from app import template zu...
05.03.2016, 07:37
4
Antworten

Beschleunigung der Entfernung zwischen allen möglichen Paaren in einem Array

Ich habe ein Array von x, y, z-Koordinaten von mehreren (~ 10 ^ 10) Punkten (nur 5 hier gezeigt) %Vor% Ich möchte ein neues Array mit nur den Punkten erstellen, die von allen anderen Punkten in der Liste mindestens um eine Distanz d entfe...
26.02.2016, 19:13
2
Antworten

Ruft die DataFrame-Spalte als Werteliste ab

Ich versuche, die Spalten eines Pandas DataFrame als eine Liste von Werten zu erhalten. Ich kann mit iloc : auf die erste Spalte zugreifen %Vor% Dies gibt jedoch ein Array von Listen zurück: %Vor% Wie kann ich eine Liste von Numm...
02.03.2016, 12:22
1
Antwort

Unerwartetes Verhalten in numpy beim Teilen von Arrays

In Numpy 1.8.2 (mit Python 2.7.6) scheint also ein Problem bei der Array-Aufteilung zu bestehen. Bei der In-Place-Division eines ausreichend großen Arrays (mindestens 8192 Elemente, mehr als eine Dimension, Datentyp ist irrelevant) mit einem Tei...
12.11.2015, 15:22