import sympy as sy
import numpy as np
import matplotlib.pyplot as plt

# Exercício 1. Familiarização com cálculo symbólico com sympy

x,y,m,b = sy.symbols('x, y, m, b')  # define as variáveis simbólicas

y = m * x**2 + b  # define a equação da reta (3 vars, m, x, b)

y2 = y.subs([(m, 0.01), (b, 0.0)])  # substitui m=0.01 e b=0 na equação da reta (y2=x^2, 1 var)


#usar um dicionário para definir o valor de x onde avaliar
yX1 = y2.evalf(subs={x:1}) # avalia a equação da reta em x=1 (y=1^2) 

#Se quisermos avaliar múltiplas vezes,transformar sympy numa função lambda numpy
y_lam = sy.lambdify(x,y2,"numpy") #->y_lam(x)


##Use a função y_lam para fazer um plot de y em valores de x de 0 até 2
x_vals = np.linspace(0,2,100)
y_vals = y_lam(x_vals)

#plot
plt.plot(x_vals, y_vals)
plt.xlabel('x')
plt.ylabel('y')
plt.title('y=x^2')
plt.grid()
plt.show()
