使用3D图形的SciPy最小化功能

时间:2019-02-27 23:58:12

标签: python python-3.x jupyter-notebook

伙计们! 我需要使用两个变量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

0 个答案:

没有答案
相关问题