scientific-programming-exer.../exam/ex02/main.py

21 lines
546 B
Python

from scipy.optimize import basinhopping
import numpy as np
import matplotlib.pyplot as plt
f = lambda x: np.exp(-x**2) * np.sin(12 * x) / (5 * x)
x0 = 0.2
minimum = basinhopping(f, x0).x
maximum = basinhopping(lambda x: -f(x), x0).x
X = np.arange(-10, 10, 0.01)
p1, = plt.plot(X, f(X), "r-", label="f(x)")
p2, = plt.plot([minimum], [f(minimum)], "bo", label="Minimum")
p2, = plt.plot([-minimum], [f(minimum)], "bo", label="Minimum")
p3, = plt.plot([maximum], [f(maximum)], "go", label="Maximum")
plt.legend(handles=[p1, p2, p3])
plt.show()