Während ich dieses Buch lese, werde ich versuchen, die Probleme zu lösen.
Fortsetzung von "Lösen der Probleme / Probleme von" Matrix Programmer "(Kapitel 0 Funktion) --Qiita". Ich werde es vor "1.4.7 Eulers Formel" ansprechen.
Weisen Sie zuerst der Variablen S den obigen Satz oder die Liste komplexer Zahlen zu. Um Punkte in einer komplexen Ebene anzuzeigen, verwenden Sie das Verfahren Plot, das im Plotmodul auf dieser Website enthalten ist. So laden Sie diese Prozedur aus dem Modul:
>>> from plotting import plot
Gehen Sie wie folgt vor, um den S-Punkt anzuzeigen:
>>> plot(S, 4)
Python öffnet dann ein Browserfenster und zeigt die Punkte auf der von S angegebenen komplexen Ebene an. Das erste Argument der Darstellung ist eine Menge komplexer Zahlen (oder ein Tupel aus zwei Zahlen), und das zweite Argument gibt den Maßstab der anzuzeigenden Figur an. In diesem Fall werden komplexe Zahlen mit Absolutwerten von 4 oder weniger für den Real- und Imaginärteil angezeigt. Das zweite Argument ist optional und der Standardwert ist 1. Es gibt ein weiteres optionales Argument, das die Größe des Punkts angibt.
>>> from plotting import plot
>>> S = {2+2j, 3+2j, 1.75+1j, 2+1j, 2.25+1j, 2.5+1j, 2.75+1j, 3+1j, 3.25+1j}
>>> plot(S, 4)
Addiere 1 + 2i zu jedem Element von S unter Verwendung der Einschlussnotation und zeichne eine neue Figur.
>>> plot({1+2j+z for z in S}, 4)
>>> plot({1+2j+z for z in S}, 4)
Zeichnen Sie eine neue Figur, die alle komplexen Zahlen in S mit der Einschlussnotation wie in Aufgabe 1.4.3 halbiert.
>>> plot({z/2 for z in S}, 4)
Zeichnen Sie ein Diagramm, in dem jeder Punkt von S um 90 Grad gedreht und dann in zwei Hälften skaliert wird. Dies kann jedoch erreicht werden, indem jedes Element von S mit einer komplexen Zahl unter Verwendung der Einschlussnotation multipliziert wird.
>>> plot({z*1j/2 for z in S}, 4)
Drehen Sie jeden S-Speicher um 90 Grad, skalieren Sie ihn in zwei Hälften und zeichnen Sie dann ein Diagramm mit einer Skala nach unten und zwei Skalen nach rechts. Dies kann jedoch realisiert werden, indem jedes Element von S mit einer komplexen Zahl multipliziert und die komplexe Zahl unter Verwendung der Einschlussnotation addiert wird.
>>> plot({z*1j/2+2-1j for z in S}, 4)
Das auf dieser Website bereitgestellte Bildmodul enthält ein file2image-Verfahren (filenae) zum Laden von Bildern im PNG-Format. Geben Sie den Namen der Bilddatei als Argument für diese Prozedur an, führen Sie sie aus und weisen Sie den Variablendaten den Rückgabewert zu. Ein Beispiel für ein Graustufenbild, img01.png, kann von der Website dieses Dokuments heruntergeladen werden. Der Wert von Daten ist eine Liste von Listen (Listen mit Listen als Elemente), und Daten [y] [x] geben die Intensität der Helligkeit des Pixels an, das sich bei (x, y) befindet. (0, 0) ist das obere linke Pixel des Bildes und (Breite-1, Höhe-1) ist das untere rechte Pixel des Bildes. Die Intensität wird durch eine ganze Zahl von 0 bis 255 dargestellt, wobei 0 schwarz und 255 weiß ist. Verwenden Sie die Einschlussnotation, um eine komplexe Zahl x + iy k zu definieren und zu veranschaulichen, die die Position (x, y) von Pixeln mit einer Intensität von weniger als 120 im Bild darstellt.
>>> from image import file2image
>>> data = file2image('img01.png')
>>> pts = [x - y * 1j + len(data) * 1j for y in range(len(data)) for x in range(len(data[y])) if data[y][x][0] < 120]
>>> plot(pts, 190)
Schreiben Sie eine Prozedur f (z), die das durch S dargestellte Bild zum Ursprung verschiebt. Wenden Sie dieses Verfahren unter Verwendung der Einschlussnotation auf S an und veranschaulichen Sie die Ergebnisse.
util.py
def f(z):
x_list = [v.real for v in z]
y_list = [v.imag for v in z]
x_center = (min(x_list) + max(x_list)) / 2
y_center = (min(y_list) + max(y_list)) / 2
return [v - x_center - y_center * 1j for v in z]
>>> from util import f
>>> lot(f(list(S)), 4)
Wiederholen Sie Übung 1.4.8 mit Punkten anstelle von S.
>>> plot([p*1j/2 for p in pts], 190)