Détruire l'expression intermédiaire de la méthode sweep avec Python

Méthode de balayage, gênante

C'est trop ennuyeux d'avoir besoin d'une formule intermédiaire. C'est ennuyeux, alors je l'ai résolu avec Python.

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  #Quelle ligne est actuellement
pre_mat = []
for n in range(columns):
    #Permuter les lignes
    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)

    #Définir la nième colonne sur 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_Définissez la nième colonne autre que la ligne sur 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

Détruire l'expression intermédiaire de la méthode sweep avec Python
Vérifier l'existence du fichier avec python
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
Préparer l'environnement d'exécution de Python3 avec Docker
Mathématiques Todai 2016 résolues avec Python
[Note] Exportez le html du site avec python.
Calculez le nombre total de combinaisons avec python
Vérifiez la date du devoir de drapeau avec Python
Convertir le code de caractère du fichier avec Python3
[Python] Déterminez le type d'iris avec SVM
Méthode Kernel avec Python
le zen de Python
Extraire le tableau des fichiers image avec OneDrive et Python
Apprenez Nim avec Python (dès le début de l'année).
Visualisez la gamme d'insertions internes et externes avec python
Calculer le coefficient de régression d'une analyse de régression simple avec python
Résumé du flux de base de l'apprentissage automatique avec Python
Obtenez l'état de fonctionnement de JR West avec Python
Calculer le produit des matrices avec une expression de caractère?
Vers la retraite de Python2
[Python] Méthode de calcul avec numpy
Manipulation d'expressions régulières par Python
Appelez l'API avec python3.
À propos des fonctionnalités de Python
Le pouvoir des pandas: Python
J'ai essayé de trouver l'entropie de l'image avec python
Essayez de gratter les données COVID-19 Tokyo avec Python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
Une implémentation Python simple de la méthode k-voisinage (k-NN)
L'histoire de la mise en œuvre du sujet Facebook Messenger Bot avec python
Unifier l'environnement de l'équipe de développement Python en commençant par Poetry
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
Calculez des millions de chiffres dans la racine carrée de 2 avec python
J'ai écrit la grammaire de base de Python dans Jupyter Lab
Exécutez l'intelligence de votre propre bibliothèque python avec VScode.
[Python] Régression LASSO avec contrainte d'équation utilisant la méthode du multiplicateur
J'ai évalué la stratégie de négociation du système boursier avec Python.
Python --Trouvez le nombre de groupes dans l'expression regex
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
[Homologie] Comptez le nombre de trous dans les données avec Python
Création d'une méthode des éléments finis (FEM) avec python ~ vba → traduction python ~
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Réécrivez le nœud d'ajout d'enregistrement de SPSS Modeler avec Python.
Utilisons rapidement l'expression distribuée des mots avec fastText!
Estimer la posture du marqueur AR avec Python + OpenCV + drone
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Récupérez la source de la page à charger indéfiniment avec python.
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
J'ai essayé de gratter le classement du calendrier de l'avent Qiita avec Python
Extraire le fichier xz avec python
L'histoire de Python et l'histoire de NaN
First Python 3 ~ Le début de la répétition ~
Le 14 mars est le jour du rapport de circonférence. L'histoire du calcul du ratio de circonférence avec python