Formulário de contato

Nome

E-mail *

Mensagem *

Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!
Imagem

Análise Gráfica em Python: Cálculo do Ângulo entre Tangentes de Curvas


@CanalQb no YouTube


@CanalQb

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 constantes k = 1.237 e m = 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.

Referências

Comentários