#
# 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()

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: