En lisant ce livre, je vais essayer de résoudre les problèmes.
Suite de "Résoudre les problèmes / problèmes du 'programmeur de matrice' (fonction du chapitre 0) --Qiita". Je le soulèverai avant "1.4.7 la formule d'Euler".
Tout d'abord, affectez l'ensemble ou la liste de nombres complexes ci-dessus à la variable S. Pour afficher des points sur un plan complexe, utilisez la procédure appelée plot incluse dans le module de traçage fourni sur ce site. Pour charger cette procédure à partir du module:
>>> from plotting import plot
Pour afficher le point S, procédez comme suit:
>>> plot(S, 4)
Python ouvrira alors une fenêtre de navigateur et affichera les points sur le plan complexe spécifié par S. Le premier argument de plot est un ensemble de nombres complexes (ou un tuple de deux nombres), et le second argument spécifie l'échelle de la figure à afficher. Dans ce cas, des nombres complexes avec des valeurs absolues de 4 ou moins pour les parties réelle et imaginaire sont affichés. Le deuxième argument est facultatif et la valeur par défaut est 1. Il existe un autre argument facultatif qui spécifie la taille du point.
>>> 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)
Ajoutez 1 + 2i à chaque élément de S en utilisant la notation d'inclusion et dessinez une nouvelle figure.
>>> plot({1+2j+z for z in S}, 4)
>>> plot({1+2j+z for z in S}, 4)
Dessinez un nouveau diagramme qui divise par deux tous les nombres complexes en S en utilisant la notation d'inclusion comme dans la tâche 1.4.3.
>>> plot({z/2 for z in S}, 4)
Dessinez un diagramme dans lequel chaque point de S est tourné de 90 degrés puis mis à l'échelle de moitié. Cependant, cela peut être réalisé en multipliant chaque élément de S par un nombre complexe en utilisant la notation d'inclusion.
>>> plot({z*1j/2 for z in S}, 4)
Faites pivoter chaque magasin S de 90 degrés, mettez-le à l'échelle en deux, puis dessinez un diagramme avec une échelle vers le bas et deux échelles vers la droite. Cependant, il peut être réalisé en multipliant chaque élément de S par un nombre complexe et en ajoutant le nombre complexe en utilisant la notation d'inclusion.
>>> plot({z*1j/2+2-1j for z in S}, 4)
Le module image fourni sur ce site contient une procédure file2image (filenae) pour charger des images au format png. Spécifiez le nom du fichier image comme argument de cette procédure, exécutez-le et affectez la valeur de retour aux données variables. Un exemple d'image en niveaux de gris, img01.png, peut être téléchargé à partir du site Web de ce document. La valeur des données est une liste de listes (listes avec des listes comme éléments), où data [y] [x] représente l'intensité de la luminosité du pixel situé en (x, y). (0, 0) est le pixel supérieur gauche de l'image et (largeur-1, hauteur-1) est le pixel inférieur droit de l'image. L'intensité est représentée par un entier de 0 à 255, où 0 est noir et 255 est blanc. Utilisez la notation d'inclusion pour définir et illustrer un nombre complexe x + iy k qui représente l'emplacement (x, y) des pixels d'une intensité inférieure à 120 dans l'image.
>>> 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)
Ecrivez une procédure f (z) qui décale l'image représentée par S vers l'origine. Appliquez cette procédure à S en utilisant la notation d'inclusion et illustrez les résultats.
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)
Répétez l'exercice 1.4.8 avec pts au lieu de S.
>>> plot([p*1j/2 for p in pts], 190)
Recommended Posts