Линии уровня функции
Не могу построить линии уровня функции.
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
x = np.linspace(1.1, 2.1, 100)
y = np.linspace(-1, 1, 100)
z = (x-1) * y * np.log(x**2 + y**2 - 2*x + 1)
ax.plot3D(x, y, z, 'red')
ax.contour(x, y, z)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Не очень понимаю в терминах, но, наверное, нужно использовать meshgrid:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
x = np.linspace(1.1, 2.1, 100)
y = np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x, y)
Z = (X-1) * Y * np.log(X**2 + Y**2 - 2*X + 1)
ax.plot_surface(X, Y, Z, cmap="plasma", linewidth=0, antialiased=True, alpha=0.75)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
P.S. А может вам нужен contour3D, как предполагает strawdog, уважаемый:
ax.contour3D(X, Y, Z, 50, cmap="plasma")
P.P.S. Можно и совместить оба графика, что вы, кажется, изначально и пытались сделать:


