
Ein kleines Modul zum Arbeiten mit Arrays in Python, ohne Bibliotheken von Drittanbietern zu verwenden (ein NumPy-Klon, aber nur in reinem Python).
Die Hausaufgaben an der Universität wurden gebeten, ein Programm zu schreiben, das die Normen und Zerlegungen der Matrix berechnet, es war jedoch verboten, Bibliotheken von Drittanbietern zu verwenden. Die Wahl der Programmiersprache ist nicht begrenzt. Ich habe mich für Python entschieden (was ein Fehler war, weil es viel langsamer als Java und C / C ++ ist) und dementsprechend kann ich NumPy nicht verwenden. Dabei musste ich Funktionen zum Ausführen von Operationen mit Arrays, Funktionen zum Auffinden von Minderjährigen, Determinanten usw. schreiben. Das Ergebnis ist eine Mini-Bibliothek zum Arbeiten mit Arrays.
Mein reiner Python-Code ist viel langsamer als NumPy, mit dem C- und Fortran-Berechnungen durchgeführt werden (außerdem ist mein Code nicht optimiert).
Was kann MatLOL:
- Summe, Differenz und Produkt der Matrizen
- Matrixprodukt nach Nummer
- Matrix-Transponierung
- Kleine Matrix
- Matrixdeterminante
- Inverse Matrix
- Union Matrix
- Matrix-Bedingungsnummer
- Die erste, zweite (nicht abgeschlossene), euklidische und unendliche Matrixnorm
- Lösung der Gleichung AX = B
- LU-Zerlegung
- Cholesky-Zersetzung
- Seidel-Methode
MathLOL-Beispiele
Importieren Sie das Modul:
Matrix-Initialisierung
matrix = mathlol() matrix.set([[1, 2, 3], [4, 5, 6], [7, -8, 9]]) matrix.get()
Einige Matrixoperationen
matrix * 2
Es gibt auch Funktionen zum Arbeiten mit Vektoren
vector = mathlol() vector.set([1, 2, 3, 4, 5]) vector.checkvector()
Andere BeispieleMathLOL-Leistung
Lassen Sie uns sehen, wie schnell Produkte mit Matrizen der Größe NxN berechnet werden. Matrizen werden mit Zufallszahlen von -100 bis 100 gefüllt.
Code from mathlol import mathlol import time import random import matplotlib.pyplot as plt

Die Geschwindigkeit der Berechnung von Matrixproduktgrößen von 100x100 bis 1000x1000

Vergleichen Sie die Rechengeschwindigkeit von numpy und mathlol. Leider war Mathlol sehr langsam und ich entschied mich, Matrizen für Zahlenmatrixgrößen von 100x100 bis 1000x1000 und für Mathlol von 10x10 bis 100x100 zu verwenden.

MathLOL berechnete das Produkt der Matrix 100x100 für sich in 0,16 Sekunden und NumPy berechnete das Produkt der Matrix 1000x1000 für sich in 0,002 (!!!) Sekunden. Der Unterschied ist riesig.
Unsere Aufgabe bestand einfach darin, verschiedene Funktionen für die Arbeit mit Matrizen zu implementieren, die wir ausgeführt haben, aber das Programm mit großen Matrizen arbeitet nicht so schnell, wie wir es möchten. Es bleibt, das Programm zu verfeinern, ein paar weitere Funktionen hinzuzufügen (zum Beispiel eine Funktion zur Berechnung der Todd-Zahl). Ich wäre dankbar, wenn Sie sich den Code ansehen, auf Fehler hinweisen und vielleicht helfen würden, den Code zu verfeinern.
Das ist alles, der Code und die Beispiele sind auf dem
Github veröffentlicht .
PS Beim Schreiben des Artikels wollte ich C / C ++ experimentieren und in mein Modul einbetten. Ich werde mich in naher Zukunft darum kümmern und sehen, wie nahe NumPys Leistung sein wird.