маркировка локальных минимумов / максимумов графа с помощью matplotlib - PullRequest
0 голосов
/ 06 ноября 2018

Я делаю здесь некоторую математическую оптимизацию, и я хотел бы знать, как я могу пометить определенную точку или список точек на построенном графике (локальные минимумы и максимумы в моей ситуации), используя 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")

и это выходной код: enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...