The Michalewicz function is an interesting math function that is sometimes used to test the effectiveness of numerical optimization algorithms.
The function can accept two or more input values. The function is tricky to minimize because there are several local minimum values and several flat areas which make the one global minimum value hard to find for optimization algorithms.
I graphed the Michalewicz function in with two variables, x and y; therefore the dimension of the function is 2, but the graph appears in 3D.
I used the matplotlib library. The code is:
# michalewicz_graph.py
from matplotlib import cm # color map
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
X = np.linspace(0, 3.2, 50)
Y = np.linspace(0, 3.2, 50)
X, Y = np.meshgrid(X, Y)
# Michalewicz function
Z = -1 * ( (np.sin(X) * np.sin((1 * X**2) / np.pi)**20) + \
(np.sin(Y) * np.sin((2 * Y**2) / np.pi)**20) )
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, \
rstride=1, cstride=1, cmap=cm.jet, \
edgecolor='darkred', linewidth=0.1)
ax.set_xlabel('x', fontsize=10)
ax.set_ylabel('y', fontsize=10)
ax.set_zlabel('f(x,y)', fontsize=10)
ax.tick_params(axis='both', which='major',
labelsize=6)
plt.show()
The program sets up X and Y values from 0 to 3.2 (just a bit more than pi) in 50 evenly-spaced intervals. Different ranges of X and Y give a very different overall graph.
The Michalewicz function has a free parameter m that controls the steepness of they valleys. Larger values of m make the function more difficult to optimize. The most common value for m is 10, which is what I used in the demo code.
For two variables, x and y, the global minimum value is approximately z = -1.8013 when x = 2.20319 and y = 1.57049.
Good fun.

The matplotlib library approximates a smooth surface by using many small straight lines to make facets. I’m not particularly a fan of animated movies, but I really like the artistic style that was used in “Sleeping Beauty” (1959). Unlike all previous animation, which used a very smooth curved style, SB used an angular style with some straight lines that I find very beautiful.

.NET Test Automation Recipes
Software Testing
SciPy Programming Succinctly
Keras Succinctly
R Programming
2026 Visual Studio Live
2025 Summer MLADS Conference
2026 DevIntersection Conference
2025 Machine Learning Week
2025 Ai4 Conference
2026 G2E Conference
2026 iSC West Conference
You must be logged in to post a comment.