#
# PYTHON • MyCompiler
#
# Campos Vetoriais
# https://[Log in to view URL]
# Campos Vetoriais
#
# 2026 Setembro Qui, 10
# by
# j
#
import numpy as np
import matplotlib.pyplot as plt
#
# define gráfico
#
opt = 2
#
# Grade de pontos
#
# O espaçamento ligeiramente maior
# para o quiver ficar limpo
#
xmin = -3
xmax = +3
ymin = -3
ymax = +3
space = 12
x = np.linspace(xmin, xmax, space)
y = np.linspace(ymin, ymax, space)
X, Y = np.meshgrid(x, y)
#
# Definição do campo vetorial
#
# Denominador com proteção contra
# divisão por zero
#
eps = 1e-5
denominador = X**2 + Y**2 + eps
U = -Y / denominador
V = X / denominador
#
# Nornalização
#
# Calcula a intensidade de cada vetor
#
intensidade = np.sqrt(U**2 + V**2)
intensidade = 1
U_norm = U / intensidade
V_norm = V / intensidade
#
# Parametrização do Gráfico
#
plt.figure(figsize=(7, 7))
# plt.style.use('dark_background')
#
# Gráfico com os vetores normalizados
#
# Usamos U_norm e V_norm para a direção,
# e colorimos pela intensidade real
#
if (opt == 1):
grafico = plt.streamplot(X, Y, U_norm, V_norm, color=np.sqrt(U**2 + V**2), cmap='autumn', linewidth=1.5)
else:
grafico = plt.quiver(X, Y, U_norm, V_norm, intensidade, cmap='autumn', pivot='mid', scale=30)
# Adiciona uma barra de cores para indicar a força real do campo
# plt.colorbar(grafico, label='Intensidade do Campo')
#
# Configurações adicionais
#
plt.title(r'Campo Vetorial $F(x,y) = \left(\frac{-y}{x^2+y^2}, \frac{x}{x^2+y^2}\right)$')
plt.xlabel('X')
plt.ylabel('Y')
plt.grid(True, linestyle='--')
plt.axhline(0, color='black', linewidth=0.5)
plt.axvline(0, color='black', linewidth=0.5)
plt.show()
To embed this project on your website, copy the following code and paste it into your website's HTML: