我正在用python编写一个程序,该程序创建一个网状网格并计算Rosenbrock函数的Z。然后绘制等高线,对于我尝试的每组网格,我都会得到几个不同的等高线。有没有办法猜测正确的Meshgrid值以绘制出良好的轮廓?
所需的结果在图像中:http://www.brnt.eu/phd/rosenbrock.png
我为X和Y尝试了不同的开始,结束和步长值,但无法获得所需的输出
import numpy as np
import matplotlib.pyplot as plt
#step 1: defining the function rosenbrock
def rosenbrock(X):
x1 = X[0]
x2 = X[1]
a = 1. - x1
b = x2 - x1*x1
return a*a + b*b*100.
s = 0.001
X = np.arange(-3, 3, s) #arange(start,finish,increment), stores resulting
vector in X
Y = np.arange(-3, 3, s)
X, Y = np.meshgrid(X, Y) #create the mesh grid
Z = (1.-X)**2 + 100.*(Y-X*X)**2 # rosenbrock function
CS = plt.contour(X,Y,Z) #plot contour