Lar159 commited on
Commit
d74132f
·
verified ·
1 Parent(s): e36ab31

Update tools/parabola_plotter_tool.py

Browse files
Files changed (1) hide show
  1. tools/parabola_plotter_tool.py +34 -17
tools/parabola_plotter_tool.py CHANGED
@@ -19,36 +19,53 @@ def plot_parabola_graph(a: float, b: float, c: float) -> str:
19
  return "Erro: O coeficiente 'a' não pode ser zero para uma parábola."
20
 
21
  try:
22
- # Cria uma gama de valores para x
23
- x = np.linspace(-10, 10, 400)
 
 
 
 
 
 
 
 
 
 
24
 
25
- # 2. Calcula 'y' usando a fórmula
26
- y = a * x**2 + b * x + c
27
 
28
- # Monta a string da função para o título
29
- function_string = f"{a}x² + {b}x + {c}".replace("+ -", "- ")
 
 
 
 
30
 
31
- # Configura e cria o gráfico
32
- plt.figure(figsize=(8, 6))
33
- plt.plot(x, y)
34
 
 
35
 
36
- # Para o eixo X, de -10 a 10, de 2 em 2
37
- plt.xticks(np.arange(-10, 11, 2))
38
 
39
- y_min, y_max = plt.ylim()
40
- plt.yticks(np.arange(round(y_min / 10) * 10, y_max + 1, 10))
41
 
42
-
43
- plt.title(f"Gráfico da Parábola")
44
  plt.xlabel("x")
45
  plt.ylabel("y")
46
  plt.grid(True)
47
  plt.axhline(0, color='black', linewidth=0.5)
48
  plt.axvline(0, color='black', linewidth=0.5)
 
 
 
 
 
49
 
50
- # USA time.time_ns() (nanossegundos) para garantir um nome de arquivo único
51
-
 
 
 
52
  file_path = f"parabola_{int(time.time_ns())}.png"
53
  plt.savefig(file_path)
54
  plt.close()
 
19
  return "Erro: O coeficiente 'a' não pode ser zero para uma parábola."
20
 
21
  try:
22
+ # Calcula as raízes
23
+ delta = b**2 - 4*a*c
24
+
25
+ if delta >= 0:
26
+ raiz1 = (-b - np.sqrt(delta)) / (2*a)
27
+ raiz2 = (-b + np.sqrt(delta)) / (2*a)
28
+ # Define o intervalo X para ir um pouco além das raízes
29
+ x_min_plot = min(raiz1, raiz2) - 1.5
30
+ x_max_plot = max(raiz1, raiz2) + 1.5
31
+ else: # Se não houver raízes reais, usa o vértice como centro
32
+ x_min_plot = -5
33
+ x_max_plot = 5
34
 
 
 
35
 
36
+ x_vertice = -b / (2*a)
37
+ y_vertice = a * x_vertice**2 + b * x_vertice + c
38
+
39
+ # Aumenta o intervalo para garantir que o vértice e as raízes estejam visíveis
40
+ x_min_plot = min(x_min_plot, x_vertice - 2)
41
+ x_max_plot = max(x_max_plot, x_vertice + 2)
42
 
 
 
 
43
 
44
+ x = np.linspace(x_min_plot, x_max_plot, 400)
45
 
46
+ y = a * x**2 + b * x + c
47
+
48
 
49
+ plt.figure(figsize=(8, 6))
50
+ plt.plot(x, y)
51
 
52
+ plt.title("Gráfico da Parábola")
 
53
  plt.xlabel("x")
54
  plt.ylabel("y")
55
  plt.grid(True)
56
  plt.axhline(0, color='black', linewidth=0.5)
57
  plt.axvline(0, color='black', linewidth=0.5)
58
+
59
+ # Adiciona marcadores para as raízes, se existirem
60
+ if delta >= 0:
61
+ plt.plot([raiz1, raiz2], [0, 0], 'o', color='red', label='Raízes')
62
+ plt.legend()
63
 
64
+ # Ajusta os limites do eixo Y para focar no vértice
65
+ y_min_plot = min(y_vertice, 0) - abs(y_vertice) * 0.5 - 2
66
+ y_max_plot = max(y_vertice, y.max()) + abs(y_vertice) * 0.5 + 2
67
+ plt.ylim(y_min_plot, y_max_plot)
68
+
69
  file_path = f"parabola_{int(time.time_ns())}.png"
70
  plt.savefig(file_path)
71
  plt.close()