Построить график функции

Нужно построить график функциивведите сюда описание изображения при введите сюда описание изображения, введите сюда описание изображения. Пытаюсь вот так построить.

import matplotlib.pyplot as plt
import numpy as np
from math import log
from mpl_toolkits import mplot3d
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
# x = np.arange(1.1, 2.1, 0.1)
# y = np.arange(-1, 1, 0.1)
x = np.linspace(1.1, 2.1, 100)
y = np.linspace(-1, 1, 100)
# z = np.array([(i-1) * j * log(i**2 + j**2 - 2*i + 1) for i in x for j in y])
z = (x-1) * y * log(x**2 + y**2 - 2*x + 1)
ax.plot3D(x, y, z, 'red')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show())

Но выдает ошибку TypeError: only size-1 arrays can be converted to Python scalars. Не могу понять, что делать


Ответы (1 шт):

Автор решения: Алексей Р

Используйте np.log()

import matplotlib.pyplot as plt
import numpy as np
from math import log
from mpl_toolkits import mplot3d

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.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()

введите сюда описание изображения

→ Ссылка