Я делаю здесь некоторую математическую оптимизацию, и я хотел бы знать, как я могу пометить определенную точку или список точек на построенном графике (локальные минимумы и максимумы в моей ситуации), используя matplotlib.
вот код:
# Import libraries
% matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
# (x, y) coordinates
x = np.linspace(-5, 3, 50)
y = (x**3 + 3*x**2 - 6*x - 8)/4
# Tangent line
def f(a):
return (a**3 + 3*a**2 - 6*a - 8)/4
def df(a):
return 3/2 * ((1/2)*a**2 + a - 1)
def tangent(x, a):
return f(a) + df(a) * (x - a)
# plotting the cubic function
# plotting a vertical line passing through the local maxima
# plotting a vertical line passing through the local minima
plt.plot(x, y)
plt.axvline(x = - np.sqrt(3) - 1, color = 'r', linestyle = '--')
plt.axvline(x = np.sqrt(3) - 1, color = 'r', linestyle = '--')
plt.plot(x[0:30], tangent(x[0:30], - np.sqrt(3) - 1), 'r')
plt.plot(x[20:50], tangent(x[20:50], np.sqrt(3) - 1), 'r')
plt.title("Local minima and maxima of a cubic function")
plt.xlabel("x")
plt.ylabel("y")
и это выходной код:

Как вы можете видеть, есть две касательные линии и две вертикальные линии, проходящие через локальные минимумы и локальные максимумы кубической функции, когда я просто хочу две точки, указывающие локальные минимумы и максимумы построенного графика.