J'avais joué autour du code que j'ai trouvé en ligne traitant de l'optimisation en utilisant Python 3. modifié, il a rendu un terrain comme celui-ciComment les entrées de fonction correctement vectorisés le code en Python 2
Maintenant, je m en utilisant Python 2, et le *
n'est pas en cours de traitement. Je crois que le problème est l'itération de Python, mais je n'obtiens aucun résultat en suivant l'astuce de parenthèse proposée dans this post. Voici le code entier:
%matplotlib inline
import matplotlib.pyplot as plt
import pylab as pylab
import autograd.numpy as np
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import LogNorm
from matplotlib import animation
from IPython.display import HTML
from autograd import elementwise_grad, value_and_grad
from scipy.optimize import minimize
from collections import defaultdict
from itertools import izip_longest
from functools import partial
f = lambda x, y: 10*np.cos(1*x) * 15*np.sin(1/2*y) + 150
xmin, xmax, xstep = -4.5, 4.5, .2
ymin, ymax, ystep = -4.5, 4.5, .2
x, y = np.meshgrid(np.arange(xmin, xmax + xstep, xstep), np.arange(ymin, ymax + ystep, ystep))
z = f(x, y)
minima = np.array([np.pi, np.pi])
minima_ = minima.reshape(-1, 1)
fig = plt.figure(figsize=(8, 5))
ax = plt.axes(projection='3d', elev=50, azim=-50)
ax.plot_surface(x, y, z, norm=LogNorm(), rstride=1, cstride=1,
edgecolor='none', alpha=.8, cmap=plt.cm.jet)
ax.plot(*minima_, f(*minima_), 'o', markersize=4, color='w')
ax.set_xlabel('$x$')
ax.set_ylabel('$y$')
ax.set_zlabel('$z$')
ax.set_xlim((xmin, xmax))
ax.set_ylim((ymin, ymax))
plt.show()
et le message d'erreur:
File "<ipython-input-5-3b03e44c1cac>", line 31
ax.plot(*minima_, f(*minima_), 'o', markersize=4, color='w')
SyntaxError: only named arguments may follow *expression
Qu'est-ce que * z *? Assurez-vous que votre code s'exécute dans un environnement propre. – Parfait
@Parfait Une des choses à propos de l'ordinateur portable est qu'il est facile d'oublier les cellules ... J'ai modifié OP maintenant. +1 et vert swoosh pour votre réponse! – Toni