Code funktioniert nicht
Verfasst: Dienstag 7. Juni 2016, 09:12
In folgendem Code wandle ich eine smypy Matrix in eine numpy Matrix um, und will dann die Methode np.linalg.det darauf loslassen.
Allerdings erhalte ich für diese Methode die Fehlermeldung: No loop matching the specified signature and casting
was found for ufunc det
Warum funktioniert det nicht?
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
import numpy as np
from builtins import str
text1 = widgets.Text()
button1 = widgets.Button(description="Auswerten")
button2 = widgets.Button(description="Neue Aufgabe")
#x = np.arange(9).reshape(3,3)
#y = np.arange(3).reshape(3,1)
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=zeros(3,3)
y=zeros(3,1)
for i in range(3):
for j in range(3):
x[j,i]=randint(-10,10)
for i in range(1):
for j in range(3):
y[j,i]=randint(-10,10)
#n_matrix_x=np.eye(3)
n_matrix_x=np.matrix(x)
gefunden=False
if np.linalg.det(n_matrix_x)==0:
init_vectors(b)
else:
A,B=np.linalg.eig(n_matrix_x)
for i in range(3):
if A[i].real==0 or A[i].imag!=0:
gefunden=True
break
if gefunden:
init_vectors(b)
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
n_matrix_x=np.array(x)
n_matrix_y=np.array(y)
z = np.linalg.solve(n_matrix_x,n_matrix_y)
w=widgets.Textarea(Description='Lösung GLS',
value=str(z)
)
display(w)
clear_output()
display_task()
if "{0}".format(z) == text1.value:
display(HTML("<b><font color='green'>Richtig</font></b>"))
else:
display(HTML("<b><font color='red'>Falsch</font></b>"))
def exec_la_scalar_1():
init_vectors(button2)
button2.on_click(init_vectors)
button1.on_click(evaluate)
display(widgets.VBox((mhbox1, text1, mhbox2)))
was found for ufunc det
Warum funktioniert det nicht?