Датотека:Nelder-Mead_Simionescu.gif
From Wikipedia, the free encyclopedia
![Датотека:Nelder-Mead Simionescu.gif](http://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Nelder-Mead_Simionescu.gif/600px-Nelder-Mead_Simionescu.gif)
Величина овог приказа: 600 × 600 пиксела. 3 друге резолуције: 240 × 240 пиксела | 480 × 480 пиксела | 1.000 × 1.000 пиксела.
Оригинална датотека (1.000 × 1.000 пиксела, величина датотеке: 1,31 MB, MIME тип: image/gif, петља, 25 кадрова, 13 с)
![]() | Ово је датотека са Викимедијине оставе. Информације са њене странице са описом приказане су испод. Викимедијина остава је складиште слободно лиценциралних мултимедијалних датотека. И Ви можете да помогнете. |
Опис
ОписNelder-Mead Simionescu.gif |
English: Animated Nelder-Mead minimum search of Simionescu's function. |
Датум | |
Извор | Сопствено дело |
Аутор | nicoguaro |
GIF genesis InfoField | ![]() This plot was created with Matplotlib. |
Изворни код InfoField | Python codefrom numpy import cos, arctan2
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
plt.rcParams["font.size"] = 10
plt.rcParams["mathtext.fontset"] = "cm"
# Minimization
def nelder_mead_step(fun, verts, alpha=1, gamma=2, rho=0.5,
sigma=0.5, beta=1.0):
"""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.shape
f = np.apply_along_axis(fun, 1, verts, beta=beta)
# 1. Order
order = np.argsort(f)
verts = verts[order, :]
f = f[order]
# 2. Calculate xo, the centroid"
xo = verts[:-1, :].mean(axis=0)
# 3. Reflection
xr = xo + alpha*(xo - verts[-1, :])
fr = fun(xr, beta)
if f[0]<=fr and fr<f[-2]:
new_verts = np.vstack((verts[:-1, :], xr))
# 4. Expansion
elif fr<f[0]:
xe = xo + gamma*(xr - xo)
fe = fun(xe, beta)
if fe < fr:
new_verts = np.vstack((verts[:-1, :], xe))
else:
new_verts = np.vstack((verts[:-1, :], xe))
# 5. Contraction
else:
xc = xo + rho*(verts[-1, :] - xo)
fc = fun(xc, beta)
if fc < f[-1]:
new_verts = np.vstack((verts[:-1, :], xc))
# 6. Shrink
else:
new_verts = np.zeros_like(verts)
new_verts[0, :] = verts[0, :]
for k in range(1, nverts):
new_verts[k, :] = sigma*(verts[k,:] - verts[0,:])
return new_verts
def fun(x, beta=1.0):
"""Simionescu function using log-barrier method"""
x1, x2 = x
if x1**2 + x2**2 < (1 + 0.2*cos(8*arctan2(x1, x2)))**2:
barrier = -beta*np.log((1 + 0.2*cos(8*arctan2(x1, x2)))**2 - x1**2 - x2**2)
else:
barrier = np.inf
return x1*x2 + barrier
# Animation
def data_gen(num):
plt.gca().cla
x0 = np.array([0.4, -0.6])
x1 = np.array([-0.3, -0.6])
x2 = np.array([0.7, 0.6])
verts = np.vstack((x0, x1, x2))
beta = 1.0
for cont in range(num):
verts = nelder_mead_step(fun, verts, beta=beta)
beta /=2
# Plots
plt.cla()
poly = plt.Polygon(verts, facecolor="none", edgecolor="k",
linewidth=0.5, zorder=4)
plt.gca().add_patch(poly)
x1, x2 = np.mgrid[-1.25:1.25:101j, -1.25:1.25:101j]
z = x1*x2
cons = x1**2 + x2**2 - (1 + 0.2*cos(8*arctan2(x1, x2)))**2
z[cons > 0.02] = np.nan
levels = np.linspace(-1, 1, 30)
plt.contour(x1, x2, z, levels, cmap="seismic", linewidths=1)
plt.contour(x1, x2, cons, [0], colors="black", linewidths=1)
plt.axis("image")
plt.xlabel(r"$x$", fontsize=14)
plt.ylabel(r"$y$", fontsize=14)
fig = plt.figure(figsize=(5, 5))
ani = animation.FuncAnimation(fig, data_gen, range(25))
ani.save("Nelder-Mead_Simionescu.gif", writer='imagemagick', fps=2,
dpi=200)
plt.show()
|
Лиценцирање
Ја, носилац ауторског права над овим делом, објављујем исто под следећом лиценцом:
![w:sr:Creative Commons](https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/CC_some_rights_reserved.svg/90px-CC_some_rights_reserved.svg.png)
![ауторство](https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
![делити под истим условима](https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Cc-sa_white.svg/24px-Cc-sa_white.svg.png)
Ова датотека је доступна под лиценцом Creative Commons Ауторство-Делити под истим условима 4.0 међународна.
- Дозвољено је:
- да делите – да умножавате, расподељујете и преносите дело
- да прерађујете – да прерадите дело
- Под следећим условима:
- ауторство – Морате да дате одговарајуће заслуге, обезбедите везу ка лиценци и назначите да ли су измене направљене. Можете то урадити на било који разуман манир, али не на начин који предлаже да лиценцатор одобрава вас или ваше коришћење.
- делити под истим условима – Ако измените, преобразите или доградите овај материјал, морате поделити своје доприносе под истом или компатибилном лиценцом као оригинал.
Натписи
Укратко шта ова датотека представља/приказује
Ставке приказане у овој датотеци
приказује
Нека вредност без ставке на Википодаци
26. јун 2018
Историја датотеке
Кликните на датум/време да бисте видели тадашњу верзију датотеке.
Датум/време | Минијатура | Димензије | Корисник | Коментар | |
---|---|---|---|---|---|
тренутна | 21:47, 26. јун 2018. | ![]() | 1.000 × 1.000 (1,31 MB) | Nicoguaro | Improve line widths |
19:36, 22. новембар 2016. | ![]() | 750 × 698 (30 kB) | Pasimi | User created page with UploadWizard |
Употреба датотеке
Следећа страница користи ову датотеку:
Глобална употреба датотеке
Други викији који користе ову датотеку:
- Употреба на ba.wikipedia.org
- Употреба на el.wikipedia.org
- Употреба на en.wikipedia.org
- Употреба на fa.wikipedia.org
- Употреба на id.wikipedia.org
- Употреба на mk.wikipedia.org
- Употреба на pt.wikipedia.org
- Употреба на ru.wikipedia.org
- Употреба на uk.wikipedia.org
- Употреба на zh.wikipedia.org