Issue
import numpy as np
import matplotlib.pyplot as plt
x = [1 ,2, 3, 4, 5, 6, 7, 8, 9]
y = [ 3,5, 1, 9, 3, 2, 10, 7, 8]
plt.plot(x, y)
#for global minima
minpos = y.index(min(y))
plt.plot(x[minpos],min(y), 'go', label="Minima")
plt.show()
I have two arrays x and y. Here I've plotted them using Matplotlib and found the global minima using this simple logic. Here is the output that I'm getting:
After that I've smoothen the graph BSpline
from scipy.interpolate import make_interp_spline, BSpline
# 300 represents number of points to make between T.min and T.max
xnew = np.linspace(min(x), max(x), 100)
spl = make_interp_spline(x, y, k=2) # type: BSpline
power_smooth = spl(xnew)
plt.plot(x[minpos],min(y), 'go', label="Minima")
plt.plot(xnew, power_smooth)
plt.show()
Now my position of the global minima has changed and that simple logic will not work here. I want to know how I can find the global minima from a graph in this case
Solution
Use numpy.argmin
on power_smooth
:
minpos = np.argmin(power_smooth)
min_x = xnew[minpos]
min_y = power_smooth[minpos]
plt.plot(min_x, min_y, 'go', label="Minima")
Output:
Answered By - mozway
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.