Поверхность в Matplotlib плоская

В Matplotlib поверхность является плоскостью, а должна быть объемной в пространстве. Видно, что она построена правильно, но как бы спроецирована в плоскость. Поверхность задаётся функцией от двух переменных, в математике ошибок не вижу:

theta0_vals = np.linspace(-10, 10, 100)
theta1_vals = np.linspace(-1, 4, 100)

assemble_temp = np.array([[0], [0]])

J_vals = zeros((len(theta0_vals), len(theta1_vals)))
for k in range(len(theta0_vals)):
    for l in range(len(theta1_vals)):
        assemble_temp = np.array([[theta0_vals[k]], [theta1_vals[l]]])
        J_vals[k][l] = (sum(((x_ones).dot(assemble_temp) - y) ** 2)) / (2 * len(x))

fig=figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(theta0_vals, theta1_vals, J_vals)
show()

Обновлено: Нужно было юзать meshgrid.

theta0_vals = np.linspace(-10, 10, 100)
theta1_vals = np.linspace(-1, 4, 100)

th1, th2 = np.meshgrid(theta0_vals, theta0_vals)
assemble_temp = np.array([[0], [0]])

J_vals = zeros((len(theta0_vals), len(theta1_vals)))
for k in range(len(theta0_vals)):
    for l in range(len(theta1_vals)):
        assemble_temp = np.array([[theta0_vals[k]], [theta1_vals[l]]]) 
        J_vals[k][l] = (sum(((x_ones).dot(assemble_temp) - y) ** 2)) / (2 * len(x))
   
    

fig=figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(th1, th2, J_vals)
show()

Основной видВид сверху

Фигура с использованием meshgrid


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