
Análise Gráfica em Python: Cálculo do Ângulo entre Tangentes de Curvas
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Análise Gráfica em Python: Cálculo do Ângulo entre Tangentes de Curvas
Este artigo apresenta uma abordagem detalhada para análise gráfica utilizando Python, focando no cálculo do ângulo entre tangentes de duas curvas derivadas de conjuntos de dados numéricos. Utilizamos bibliotecas populares como numpy
e matplotlib
para manipulação de dados e visualização, explorando conceitos fundamentais de derivadas aproximadas para estimar taxas de variação.
Contexto dos Dados
Temos três conjuntos principais de dados numéricos:
- Coluna 1 (A): valores de referência, numa escala exponencial, começando em 65.536 e chegando a 33.554.432.
- Coluna 2 (B): valores calculados por uma fórmula linear aproximada:
B = k * A + m
, com constantesk = 1.237
em = 150
. - Coluna 3 (C): valores originais "procurados" para comparação.
- Coluna Comparar: valores adicionais para análise complementar.
Cálculo da Derivada Aproximada
A derivada aproximada é calculada para as curvas das Colunas 2 e 3, a fim de determinar as taxas de variação relativas dos dados com base nos incrementos de Coluna 1. A fórmula usada é:
derivada ≈ (y[i+1] - y[i]) / (x[i+1] - x[i])
Cálculo do Ângulo entre Tangentes
Com as derivadas calculadas para ambas as curvas, estimamos o ângulo entre as tangentes no ponto médio dos dados, utilizando a fórmula matemática para o ângulo entre duas retas com declives m1
e m2
:
tan(θ) = |(m1 - m2) / (1 + m1 * m2)|
O ângulo θ
é então convertido de radianos para graus para facilitar a interpretação.
Visualização Gráfica
Para melhor compreensão, geramos um gráfico com os seguintes elementos:
- Curvas das Colunas 2 (calculada) e 3 (original) com marcadores e cores distintas.
- Valores numéricos posicionados estrategicamente para fácil leitura.
- Uma linha verde pontilhada indicando a diferença vertical no ponto médio.
- Um arco representando visualmente o ângulo calculado entre as tangentes.
- Texto indicando o valor do ângulo no gráfico.
Exemplo Completo do Código Python
import numpy as np
import matplotlib.pyplot as plt
import math
from matplotlib.patches import Arc
# Dados fornecidos
coluna1 = np.array([65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432]) # "Inicio"
coluna3 = np.array([131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215, 33554431, 67108863]) # "Procurado"
comparar = np.array([95823, 198669, 357535, 863317, 1811764, 3007503, 5598802, 14428676, 33185509, 54538862])
# Fórmula aproximada para calcular Coluna 2 (B)
k = 1.237
m = 150
coluna2_calculada = k * coluna1 + m
# Exibindo os resultados
for i in range(len(coluna1)):
print(f"Coluna 1 (A): {coluna1[i]:.0f}, Coluna 2 calculada (B): {coluna2_calculada[i]:.0f}, Coluna 3 (C): {coluna3[i]:.0f}, Coluna Comparar: {comparar[i]:.0f}")
def derivada_aproximada(y, x):
return (y[1:] - y[:-1]) / (x[1:] - x[:-1])
derivada_b = derivada_aproximada(coluna2_calculada, coluna1)
derivada_c = derivada_aproximada(coluna3, coluna1)
mid_index = len(coluna1) // 2
x_mid = coluna1[mid_index]
y_mid_b = coluna2_calculada[mid_index]
y_mid_c = coluna3[mid_index]
m1 = derivada_b[mid_index-1]
m2 = derivada_c[mid_index-1]
tan_theta = abs((m1 - m2) / (1 + m1 * m2))
angle_rad = math.atan(tan_theta)
angle_deg = math.degrees(angle_rad)
font_size = 8
line_length = 3e4
plt.figure(figsize=(8, 5))
plt.plot(coluna1, coluna2_calculada, label="Coluna 2 Calculada (B)", marker="o", color='b')
plt.plot(coluna1, coluna3, label="Coluna 3 (C) Original", marker="x", color='r')
for i in range(len(coluna1)):
plt.text(coluna1[i], coluna2_calculada[i] - 100, f'{coluna2_calculada[i]:.0f}', fontsize=font_size, color='blue', ha='center', va='top')
for i in range(len(coluna1)):
plt.text(coluna1[i], coluna3[i] + 100, f'{coluna3[i]:.0f}', fontsize=font_size, color='red', ha='center', va='bottom')
plt.plot([x_mid, x_mid], [y_mid_b, y_mid_c], color='green', linestyle='--')
radius = abs(y_mid_b - y_mid_c) / 2
arc = Arc([x_mid, (y_mid_b + y_mid_c) / 2], width=radius*2, height=radius*2, angle=0, theta1=0, theta2=angle_deg, color='green', lw=2)
plt.gca().add_patch(arc)
angle_text_y = (y_mid_b + y_mid_c) / 2 + (y_mid_b - y_mid_c) / 10
plt.text(x_mid+2, angle_text_y+2, f'Ângulo: {angle_deg:.2f}°', fontsize=font_size, color='green', ha='center')
plt.plot([x_mid - line_length, x_mid + line_length], [y_mid_b, y_mid_c], color='green', linestyle='-', lw=2)
plt.xlim(0, 35000000)
plt.ylim(0, 35000000)
plt.title("Relação entre Colunas 1, 2 e 3 com Ângulo entre Tangentes", fontsize=font_size)
plt.xlabel("Coluna 1 (A)", fontsize=font_size)
plt.ylabel("Valores", fontsize=font_size)
plt.legend(fontsize=font_size)
plt.grid()
plt.show()
print(f"Ângulo entre as tangentes (em graus): {angle_deg:.2f}")
Importância e Aplicações
Este método é útil em análise de dados, engenharia e ciência, onde é necessário entender a variação relativa entre curvas e identificar pontos de interesse, como mudanças de comportamento. O cálculo do ângulo entre tangentes oferece uma visão geométrica importante sobre a relação entre as funções.
Comentários
Comente só assim vamos crescer juntos!