Diese Datei stammt aus Wikimedia Commons und kann von anderen Projekten verwendet werden. Die Beschreibung von deren Dateibeschreibungsseite wird unten angezeigt.
"""Animation of the Nelder-Mead method for the Rosenbrock function."""from__future__importdivision,print_functionimportnumpyasnpimportmatplotlibasmplmpl.use("Agg")fromscipy.optimizeimportrosenimportmatplotlib.pyplotaspltimportmatplotlib.animationasanimationfrommatplotlibimportrcParams# In Windows the next line should provide the full path to convert.exe# since convert is a Windows command#rcParams['animation.convert_path'] = "C:\Program Files\ImageMagick-6.9.3-Q16\convert.exe"rcParams['font.size']=12defnelder_mead_step(fun,verts,alpha=1,gamma=2,rho=0.5,sigma=0.5):"""Nelder-Mead iteration according to Wikipedia _[1] References ---------- .. [1] Wikipedia contributors. "Nelder–Mead method." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 1 Sep. 2016. Web. 20 Sep. 2016. """nverts,_=verts.shapef=fun(verts.T)# 1. Orderorder=np.argsort(f)verts=verts[order,:]f=f[order]# 2. Calculate xo, the centroid"xo=verts[:-1,:].mean(axis=0)# 3. Reflectionxr=xo+alpha*(xo-verts[-1,:])fr=fun(xr)iff[0]<=frandfr<f[1]:new_verts=np.vstack((verts[:-1,:],xr))# 4. Expansioneliffr<f[0]:xe=xo+gamma*(xr-xo)fe=fun(xe)iffe<fr:new_verts=np.vstack((verts[:-1,:],xe))else:new_verts=np.vstack((verts[:-1,:],xe))# 5. Contractionelse:xc=xo+rho*(verts[-1,:]-xo)fc=fun(xc)iffc<f[-1]:new_verts=np.vstack((verts[:-1,:],xc))# 6. Shrinkelse:new_verts=np.zeros_like(verts)new_verts[0,:]=verts[0,:]forkinrange(1,nverts):new_verts[k,:]=sigma*(verts[k,:]-verts[0,:])returnnew_verts# Contour datanpts=201x,y=np.mgrid[-2:2:npts*1j,-1:3:npts*1j]x.shape=(npts**2)y.shape=(npts**2)z=rosen(np.vstack((x,y)))x.shape=(npts,npts)y.shape=(npts,npts)z.shape=(npts,npts)# Simplices datadefdata_gen(num):x0=np.array([1,0])x1=np.array([2,0])x2=np.array([1,1])verts=np.vstack((x0,x1,x2))forkinrange(num):verts=nelder_mead_step(rosen,verts)# Plotslevels=np.logspace(0.35,3.2,5)plt.cla()plt.contour(x,y,z,levels,colors="k")poly=plt.Polygon(verts,facecolor="none",edgecolor="r",linewidth=1.5)plt.gca().add_patch(poly)plt.xlabel(r"$x_1$",fontsize=14)plt.ylabel(r"$x_2$",fontsize=14)plt.xticks([-2,-1,0,1,2])plt.yticks([-1,0,1,2,3])plt.xlim([-2,2])plt.ylim([-1,3])fig=plt.figure(figsize=(5,5))ani=animation.FuncAnimation(fig,data_gen,range(20),blit=False)ani.save("Nelder-Mead_Rosenbrock.gif",writer='imagemagick',fps=2,dpi=200)
Lizenz
Ich, der Urheber dieses Werkes, veröffentliche es unter der folgenden Lizenz:
verbreitet werden – vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden
neu zusammengestellt werden – abgewandelt und bearbeitet werden
Zu den folgenden Bedingungen:
Namensnennung – Du musst angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden. Diese Angaben dürfen in jeder angemessenen Art und Weise gemacht werden, allerdings nicht so, dass der Eindruck entsteht, der Lizenzgeber unterstütze gerade dich oder deine Nutzung besonders.
https://creativecommons.org/licenses/by/4.0CC BY 4.0 Creative Commons Attribution 4.0 truetrue
Kurzbeschreibungen
Ergänze eine einzeilige Erklärung, was diese Datei darstellt.