Gebiet zur Positivität der Determinante zu ploten
Verfasst: Dienstag 23. April 2024, 20:13
Hallo zusammen,
das ist mein erster Beitrag. Ich versuche eine ein Gebiet zu plotten in (x,y), wo die Determinante einer Matrix, deren Einträgen Funktion von x und y sind, positiv ist (s.u. wobei, dass es um die Determinante geht ist unwichtig hier; wichtig ist, dass reellwertige Funktionen von Matrizen in plot einzusetzen wären).
Offenbar meckert python, da bei der Erstellung der Grafik, „x“ und „y“ arrays und nicht reelle Zahlen sind (s.u., was kommentiert erscheint).
Ein blödes Beispiel wäre, xy>1 als det(M)>0 zu plotten, wo M=[[x,1],[1,y]] ist. Ich mache aus dem bool-wertigen Ergebnis x*y>1 eine Zahl (1 oder 0), was in dem ersten Fall Funktioniert. Drucke ich aber dies als Determinante aus, so habe ich ein Problem mit den Größen der arrays . Wie könnte ich arrays bzw. Matrizen in meinen Grafiken einsetzen?
Danke im Voraus
das ist mein erster Beitrag. Ich versuche eine ein Gebiet zu plotten in (x,y), wo die Determinante einer Matrix, deren Einträgen Funktion von x und y sind, positiv ist (s.u. wobei, dass es um die Determinante geht ist unwichtig hier; wichtig ist, dass reellwertige Funktionen von Matrizen in plot einzusetzen wären).
Offenbar meckert python, da bei der Erstellung der Grafik, „x“ und „y“ arrays und nicht reelle Zahlen sind (s.u., was kommentiert erscheint).
Ein blödes Beispiel wäre, xy>1 als det(M)>0 zu plotten, wo M=[[x,1],[1,y]] ist. Ich mache aus dem bool-wertigen Ergebnis x*y>1 eine Zahl (1 oder 0), was in dem ersten Fall Funktioniert. Drucke ich aber dies als Determinante aus, so habe ich ein Problem mit den Größen der arrays . Wie könnte ich arrays bzw. Matrizen in meinen Grafiken einsetzen?
Danke im Voraus
Code: Alles auswählen
import numpy as np
import math
from numpy import linalg as LA
from matplotlib.pyplot import *
from matplotlib import pyplot as plt
d = np.linspace(-2,2,200)
x,y = np.meshgrid(d,d)
# ~ print( LA.det(np.array( [[np.math.pi,1] , [1,1]] , dtype=float )) )
# das funktioniert:
# ~ plt.imshow( ((x*y >1 ) ).astype(int) , extent=(x.min(),x.max(),y.min(),y.max()),\
# ~ origin="lower", cmap="YlGn", alpha = 0.3)
# Das untere funktioniert nicht. Fehler lautet:
# ValueError: setting an array element with a sequence.
# The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (2, 2) + inhomogeneous part.
plt.imshow( (LA.det( np.array( [[x,1] , [1,y]] , dtype=float )) )).astype(int), extent=(gmin,gmax,gmin,gmax),\
origin="lower", cmap="YlGn", alpha = 0.5)
plt.show()