Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python

Kehrmethode, mühsam

Es ist zu nervig, eine Zwischenformel zu brauchen. Es ist langweilig, also habe ich es mit Python gelöst.

sweep.py


from fractions import Fraction
import copy


def swicth_rows(mat_list, num1, num2):
    temp = mat_list[num1]
    mat_list[num1] = mat_list[num2]
    mat_list[num2] = temp
    return mat_list


def check_chaneg(a, b):
    if not a == b:
        print("&=" + tex_print(a) + r"\\")


def tex_print(mat_list):
    tex_txt = r"\left(\begin{array}{" + "c" * len(mat_list[0]) + r"}@\end{array}\right)"
    inner_txt = ""
    for l in mat_list:
        line_txt = ""
        for el in l:
            if "/" in str(el):
                line_txt += r"\frac{" + str(el).split("/")[0] + "}{" + str(el).split("/")[1] + "}"
            else:
                line_txt += str(el)
            line_txt += "&"
        line_txt = line_txt[: -1]
        line_txt += r"\\"
        inner_txt += line_txt
    tex_txt = tex_txt.replace("@", inner_txt)
    return tex_txt



rows = int(input("rows:"))
columns = int(input("columns:"))

mat_list = []
for _ in range(rows):
    mat_list.append(list(map(int, input().split())))

print(mat_list)
now_row = 0  #Welche Zeile ist aktuell
pre_mat = []
for n in range(columns):
    #Linien tauschen
    pre_mat = copy.deepcopy(mat_list)
    zero_flag = True
    for i in range(now_row, rows):
        if not mat_list[i][n] == 0:
            swicth_rows(mat_list, now_row, i)
            zero_flag = False
            break
    if zero_flag:
        continue
    check_chaneg(mat_list, pre_mat)

    #Setzen Sie die n-te Spalte auf 1
    pre_mat = copy.deepcopy(mat_list)
    temp = [0] * columns
    for c in range(columns):
        temp[c] = Fraction(mat_list[now_row][c], mat_list[now_row][n])
    mat_list[now_row] = temp
    check_chaneg(mat_list, pre_mat)

    # now_Setzen Sie die n-te Spalte außer Zeile auf 0
    pre_mat = copy.deepcopy(mat_list)
    for i in range(0, rows):
        if i == now_row:
            continue
        if not mat_list[i][n] == 0:
            temp = [0] * columns
            for c in range(columns):
                temp[c] = mat_list[i][c] - mat_list[i][n] * mat_list[now_row][c]
            mat_list[i] = temp
    check_chaneg(mat_list, pre_mat)

    now_row += 1
    if now_row > rows:
        break
check_chaneg(mat_list, 0)

Recommended Posts

Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
Überprüfen Sie die Existenz der Datei mit Python
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
2016 Todai Mathematik mit Python gelöst
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Konvertieren Sie den Zeichencode der Datei mit Python3
[Python] Bestimmen Sie den Typ der Iris mit SVM
Kernel-Methode mit Python
der Zen von Python
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
Lerne Nim mit Python (ab Anfang des Jahres).
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Holen Sie sich mit Python den Betriebsstatus von JR West
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
Auf dem Weg zum Ruhestand von Python2
[Python] Berechnungsmethode mit numpy
Manipulation regulärer Ausdrücke durch Python
Rufen Sie die API mit python3 auf.
Über die Funktionen von Python
Die Kraft der Pandas: Python
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Eine einfache Python-Implementierung der k-Neighborhood-Methode (k-NN)
Die Geschichte der Implementierung des Themas Facebook Messenger Bot mit Python
Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Visualisieren Sie die Ergebnisse von Entscheidungsbäumen, die mit Python scikit-learn erstellt wurden
Berechnen Sie mit Python Millionen von Stellen in der Quadratwurzel von 2
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
Führen Sie die Intelligenz Ihrer eigenen Python-Bibliothek mit VScode aus.
[Python] LASSO-Regression mit Gleichungsbeschränkung unter Verwendung der Multiplikatormethode
Ich habe die Strategie des Aktiensystemhandels mit Python evaluiert.
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck
Berühren wir die API der Netatmo Weather Station mit Python. #Python #Netatmo
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Erstellen einer Finite-Elemente-Methode (FEM) mit Python ~ vba → Python-Übersetzung ~
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Schreiben Sie den Datensatzadditionsknoten von SPSS Modeler mit Python neu.
Verwenden wir den verteilten Ausdruck von Wörtern schnell mit fastText!
Schätzen Sie die Haltung des AR-Markers mit Python + OpenCV + Drohne
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
Ich habe die Geschwindigkeit von Hash mit Topaz, Ruby und Python verglichen
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
Extrahieren Sie die xz-Datei mit Python
Die Geschichte von Python und die Geschichte von NaN
Erster Python 3 ~ Der Beginn der Wiederholung ~
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python