Buenas tardes.
Un par de comentarios más del Obligatorio 1 opción 2:
Un par de comentarios más del Obligatorio 1 opción 2:
- Donde dice lambda tienen que renombrarlo como lambda_ para que no les de mensaje de error (el problema es que Python ya tiene reservada la palabra lambda y no se puede usar para definir nuevos parámetros).
- grad_numerico al igual que gradL dependen de dos parámetros (x, lambda_) (me faltó agregar el lambda_ en la definición de grad_numerico).
- Tanto grad_numerico como gradL devuelven una dupla (** ,-g(x)), solo ** es un array con n coordenadas (que son diferentes para grad_numerico y gradL, aunque deberían estar muy próximas, la segunda coordenada es un escalar y es el mismo para ambos). Faltó definir un escalar random lambdar = rnd.rand() y para chequear que el gradiente de L y la aproximación numérica están próximos, las evaluamos en un par random (xr,lambdar) y comprobamos que la norma de la diferencia es pequeña. Pero como la segundas coordenadas son iguales basta con comparar las primeras n coordenadas gradL(xr,lambdar)[0] y grad_numerico(xr,lambdar)[0]
Ya hice todas las modificaciones pertinentes en la notebook de Colab correspondiente: "Obligatorio 1 - 2024 - Opcion 2"
Recuerden que para hallar los valores y vectores propios pueden chequear el manual: Linear Algebra (numpy.linalg)Saludos,
Claudio.