Symetrizace matice transformace

Symetrizace matice transformace#

import numpy as np
np.set_printoptions(precision=3, suppress=True)
from numpy import sqrt, sin, cos, pi
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
vzory=np.array([[0,0],[1,0],[1,1],[.5,1.6],[0,1],[0,0]]).T
plt.plot(*vzory)
plt.gca().set_aspect('equal')
../_images/817c9529897c2df7d6e5ebef91f4ff6414ffa5bfe562d27354fd1be48c3c6f31.png

Modrý domeček postupně zobrazujeme různými maticemi.

import numpy as np
A=np.array([[.1,0.25],[0.05,-.2]])
AT=A.transpose()
B_sym=(A+AT)/2
B_asym=(A-AT)/2

def transformuj(M, vzory=vzory):
    obrazy = (np.eye(2) + M) @ vzory
    fig,ax = plt.subplots(figsize=(8,8))
    poly = Polygon(vzory.T, facecolor='C0', alpha=0.5)
    ax.add_patch(poly)
    poly = Polygon(obrazy.T, facecolor='C1', alpha=0.5)
    ax.add_patch(poly)
    ax.plot(*vzory, *obrazy)
    ax.set(title=M)
    ax.set_aspect('equal')
    ax.grid()

for M in [A,B_sym, B_asym]:
    transformuj(M)
    
../_images/98f2e40c94470aae2de1aa27fcf6c3b2212d35a6e9baf3144445767fd115ce0a.png ../_images/2df9c87cb49ea50b1e90ed076a1c513454913ce60554c2d1fa88ff626845c11b.png ../_images/7215a5ee3449aad663bcbf55dffa3fd0691952d34dfc8352a87694283f8a7c19.png