Matrix mit Textdatei vergleichen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Hallo,

ich habe eine Matrix berechnet. Jetzt möchte ich das Vergleichen mit einer Textdatei, die die Matrixwerte enthält. Oder allgemein, bspw. bei einer 3X3 Matrix möchte ich eingeben:
1 2 3
4 5 6
7 8 9
und das dann vergleichen mit einer Matrix, die in Python deklariert wurde.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Und was genau ist das Problem?
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Das Problem ist, dass ich zwei unterschiedliche Formate habe. Zudem weiß ich nicht, wie ich eine Eingabe von drei Zeilen erzeuge in einer Variablen. Diese Variable soll dann mit einer in Python deklarierten Matrix 3*3 verglichen werden.
BlackJack

@Brando: Du musst halt Code schreiben der beide Werte in eine vergleichbare Form/Struktur bringt. Also beispielsweise den Dateiinhalt in die gleiche Struktur die Du als 3×3-Matrix bezeichnest. Wo aber keiner hier *genau* weiss was Du damit meinst. Zeig doch mal ein bisschen Code und Eigeninitiative.
Brando
User
Beiträge: 171
Registriert: Donnerstag 28. Januar 2016, 15:36

Hier einmal mit widgets programmiert; weiß nicht ob die Matrizen richtig sind, und ob das Einlesen einer Vergleichsmatrix mit anschließendem Vergleich funktioniert. Habe Jupyter Notebooks noch nicht installiert. Der vorliegende Code schwebt deshalb etwas in der Luft


# GNU nano 2.2.6
File: ./home/pi/.ipython/profile_default/startup/la_scalar.py

Code: Alles auswählen

from sympy.matrices import *
from sympy.printing import *
from IPython.display import display, HTML, Math, Latex, clear_output
from ipywidgets import widgets
from random import randint

text1 = widgets.Text()

button1 = widgets.Button(description="Auswerten")
button2 = widgets.Button(description="Neue Aufgabe")

x = Matrix()
y = Matrix()

latexWidget = widgets.Latex()

taskWidget = widgets.HTML()
taskWidget.value = "<b>Berechnen Sie:</b>"

mhbox1 = widgets.HBox((taskWidget, latexWidget))
mhbox2 = widgets.HBox((button1, button2))

def init_vectors(b):
        global x, y, text1
        x = Matrix(([randint(-20,20), randint(-20,20), randint(-20,20)]), ([randint(-20,20), randint(-20,20), randint(-20,20)]), ([randint(-20,20), randint(-20,20), randint(-20,20)])  )
        y =  Matrix(([randint(-20,20), randint(-20,20), randint(-20,20)]), ([randint(-20,20), randint(-20,20), randint(-20,20)]), ([randint(-20,20), randint(-20,20), randint(-20,20)])  )

        text1.value = ""
        display_task()

def display_task():
        global x, y, latexWidget

        clear_output()

        a1 = latex(x)
        a2 = latex(y)

        a1 = a1.replace("left[", "left(")
        a2 = a2.replace("left[", "left(")
        a1 = a1.replace("right]", "right)")
        a2 = a2.replace("right]", "right)")

        str1 = "$\langle" + a1 + ", " + a2 + "\\rangle$"
        latexWidget.value = str1

def evaluate(b):
        global x, y, text1
        z = x.dot(y)

        clear_output()
        display_task()
   l = [ line.split() for line in text1.value]

        if  l==z:
                display(HTML("<b><font color='green'>Richtig</font></b>"))
        else:
                display(HTML("<b><font color='red'>Falsch</font></b>"))


def exec_la_scalar():
        init_vectors(button2)
        button2.on_click(init_vectors)
        button1.on_click(evaluate)
        display(widgets.VBox((mhbox1, text1, mhbox2)))
Zuletzt geändert von Anonymous am Freitag 29. Januar 2016, 20:33, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@Brando: Du hast da also einen Haufen Quelltext den Du noch gar nicht ausprobiert hast. Mach das doch erst einmal und dann isoliere das konkrete Problem, und zwar am besten so, dass man dafür möglichst wenig ”exotische” externe Abhängigkeiten hat. Dafür solltest Du erst einmal die Geschäftslogik von der GUI trennen, dann braucht man beispielsweise Jupyter Notebooks nicht zwingend.
Antworten