定义函数:
f(x1, x2) = |X[0]**3| - |5*X[0]*X[1]| + |2 * X[1]**3|
代码实现:
# 引入matplotlib
import matplotlib.pyplot as plt
# 引入3D绘图库
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 平面:x, y
# 3D : x, y, z
# f(x1, x2) = |X[0]**3| - |5*X[0]*X[1]| + |2 * X[1]**3|
def func(X):
return np.abs(X[0]**3) - np.abs(5*X[0]*X[1]) + np.abs(2 * X[1]**3)
pass
# meshgrid
xs, ys = np.meshgrid(np.linspace(-100, 100, 101), np.linspace(-100, 100, 101))
print(xs)
print(ys)
z = func([xs, ys])
print(z)
result = []
for row1, row2 in zip(xs, ys):
row = []
for x1, x2 in zip(row1, row2):
row.append(func([x1, x2]))
pass
result.append(row)
pass
print(np.array(result))
# 画图
ax = plt.figure().add_subplot(111, projection='3d')
ax.plot_surface(xs, ys, z)
xs = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
ys = xs.T
ax.scatter(xs, ys, func([xs, ys]), s=50, c='r')
plt.show()
显示效果