伙计们! 我需要使用两个变量x和y创建新函数,找到全局最小值和局部值(fminbound,介于14和16之间)。还要构建3D图形并在图表上显示全局最小值(用将具有不同颜色的点标记)。 这是我的代码:
import numpy as np
from scipy import interpolate
from matplotlib import pyplot as plt
from scipy import optimize
from mpl_toolkits.mplot3d import Axes3D
def f(x,y):
return np.sin(2*x) + np.log(0.5*y)
x = np.linspace(10, 20, 80)
y = np.linspace(10, 20, 80)
z = f(x,y)
fig = plt.figure()
axes = fig.add_subplot(111, projection='3d')
axes.scatter(x,y,z, c = 'r', marker = 'o')
axes.set_xlabel('x axis')
axes.set_ylabel('y axis')
axes.set_zlabel('z axis')
plt.show()
所以,我以前只用一个这样的变量来做到这一点:
result=optimize.minimize(f, x0=10, method="L-BFGS-B")
xmin_local = optimize.fminbound(f, 14, 16)
plt.plot(x, f(x))
plt.plot(result.x,f(result.x),'ro', markersize=12)
plt.plot(xmin_local,f(xmin_local),'o', markersize=12)
但是现在我有x和y。我正在开始:
print(optimize.minimize(f(x,y), x0=10, method="L-BFGS-B"))
并得到
TypeError: 'numpy.ndarray' object is not callable