Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Implementação de Transformação de Matrizes em Python | Fundamentos de Álgebra Linear
Matemática para Ciência de Dados

bookImplementação de Transformação de Matrizes em Python

Resolvendo um Sistema Linear

Definimos um sistema de equações:

2x+y=5xy=12x + y = 5 \\ x - y = 1

Isto é reescrito como:

123456789
import numpy as np A = np.array([[2, 1], # Coefficient matrix [1, -1]]) b = np.array([5, 1]) # Constants (RHS) x_solution = np.linalg.solve(A, b) print(x_solution)
copy

Isso encontra os valores de xx e yy que satisfazem ambas as equações.

Importância: resolver sistemas de equações é fundamental em ciência de dados — desde o ajuste de modelos lineares até a resolução de restrições de otimização.

Aplicando Transformações Lineares

Definimos um vetor:

v = np.array([[2], [3]])

Em seguida, aplicamos duas transformações:

Escalonamento

Esticamos xx por 2 e comprimimos yy por 0,5:

S = np.array([[2, 0],
              [0, 0.5]])

scaled_v = S @ v

Isso realiza:

Sv=[2000.5][23]=[41.5]S \cdot v = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} 4 \\ 1.5 \end{bmatrix}

Rotação

Rotacionamos o vetor 90°90° no sentido anti-horário usando a matriz de rotação:

theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])

rotated_v = R @ v

Isso resulta em:

Rv=[0110][23]=[32]R \cdot v = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} -3 \\ 2 \end{bmatrix}

Visualizando as Transformações

Utilizando matplotlib, plotamos cada vetor a partir da origem, com suas coordenadas rotuladas:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define original vector v = np.array([[2], [3]]) # Scaling S = np.array([[2, 0], [0, 0.5]]) scaled_v = S @ v # Rotation theta = np.pi / 2 R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]]) rotated_v = R @ v # Vizualization origin = np.zeros(2) fig, ax = plt.subplots(figsize=(6, 6)) # Plot original ax.quiver(*origin, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original') # Plot scaled ax.quiver(*origin, scaled_v[0], scaled_v[1], angles='xy', scale_units='xy', scale=1, color='green', label='Scaled') # Plot rotated ax.quiver(*origin, rotated_v[0], rotated_v[1], angles='xy', scale_units='xy', scale=1, color='red', label='Rotated') # Label vector tips ax.text(v[0][0]+0.2, v[1][0]+0.2, "(2, 3)", color='blue') ax.text(scaled_v[0][0]+0.2, scaled_v[1][0]+0.2, "(4, 1.5)", color='green') ax.text(rotated_v[0][0]-0.6, rotated_v[1][0]+0.2, "(-3, 2)", color='red') # Draw coordinate axes ax.annotate("", xy=(5, 0), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.annotate("", xy=(0, 5), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.text(5.2, 0, "X", fontsize=12) ax.text(0, 5.2, "Y", fontsize=12) ax.set_xlim(-5, 5) ax.set_ylim(-5, 5) ax.set_aspect('equal') ax.grid(True) ax.legend() plt.show()
copy

Por que isso é importante: fluxos de trabalho em ciência de dados frequentemente incluem transformações, por exemplo:

  • Análise de Componentes Principais - rotaciona os dados;
  • Normalização de características - escala os eixos;
  • Redução de dimensionalidade - projeções.

Ao visualizar vetores e suas transformações, é possível observar como as matrizes literalmente movem e remodelam os dados no espaço.

question mark

Qual é a saída desta operação?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain how the solution to the system of equations is calculated?

How does the scaling and rotation transformation affect the original vector?

Can you walk me through the visualization code and what each part does?

Awesome!

Completion rate improved to 1.96

bookImplementação de Transformação de Matrizes em Python

Deslize para mostrar o menu

Resolvendo um Sistema Linear

Definimos um sistema de equações:

2x+y=5xy=12x + y = 5 \\ x - y = 1

Isto é reescrito como:

123456789
import numpy as np A = np.array([[2, 1], # Coefficient matrix [1, -1]]) b = np.array([5, 1]) # Constants (RHS) x_solution = np.linalg.solve(A, b) print(x_solution)
copy

Isso encontra os valores de xx e yy que satisfazem ambas as equações.

Importância: resolver sistemas de equações é fundamental em ciência de dados — desde o ajuste de modelos lineares até a resolução de restrições de otimização.

Aplicando Transformações Lineares

Definimos um vetor:

v = np.array([[2], [3]])

Em seguida, aplicamos duas transformações:

Escalonamento

Esticamos xx por 2 e comprimimos yy por 0,5:

S = np.array([[2, 0],
              [0, 0.5]])

scaled_v = S @ v

Isso realiza:

Sv=[2000.5][23]=[41.5]S \cdot v = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} 4 \\ 1.5 \end{bmatrix}

Rotação

Rotacionamos o vetor 90°90° no sentido anti-horário usando a matriz de rotação:

theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])

rotated_v = R @ v

Isso resulta em:

Rv=[0110][23]=[32]R \cdot v = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} -3 \\ 2 \end{bmatrix}

Visualizando as Transformações

Utilizando matplotlib, plotamos cada vetor a partir da origem, com suas coordenadas rotuladas:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define original vector v = np.array([[2], [3]]) # Scaling S = np.array([[2, 0], [0, 0.5]]) scaled_v = S @ v # Rotation theta = np.pi / 2 R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]]) rotated_v = R @ v # Vizualization origin = np.zeros(2) fig, ax = plt.subplots(figsize=(6, 6)) # Plot original ax.quiver(*origin, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original') # Plot scaled ax.quiver(*origin, scaled_v[0], scaled_v[1], angles='xy', scale_units='xy', scale=1, color='green', label='Scaled') # Plot rotated ax.quiver(*origin, rotated_v[0], rotated_v[1], angles='xy', scale_units='xy', scale=1, color='red', label='Rotated') # Label vector tips ax.text(v[0][0]+0.2, v[1][0]+0.2, "(2, 3)", color='blue') ax.text(scaled_v[0][0]+0.2, scaled_v[1][0]+0.2, "(4, 1.5)", color='green') ax.text(rotated_v[0][0]-0.6, rotated_v[1][0]+0.2, "(-3, 2)", color='red') # Draw coordinate axes ax.annotate("", xy=(5, 0), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.annotate("", xy=(0, 5), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.text(5.2, 0, "X", fontsize=12) ax.text(0, 5.2, "Y", fontsize=12) ax.set_xlim(-5, 5) ax.set_ylim(-5, 5) ax.set_aspect('equal') ax.grid(True) ax.legend() plt.show()
copy

Por que isso é importante: fluxos de trabalho em ciência de dados frequentemente incluem transformações, por exemplo:

  • Análise de Componentes Principais - rotaciona os dados;
  • Normalização de características - escala os eixos;
  • Redução de dimensionalidade - projeções.

Ao visualizar vetores e suas transformações, é possível observar como as matrizes literalmente movem e remodelam os dados no espaço.

question mark

Qual é a saída desta operação?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 6
some-alt