我有一个非线性函数系统的等值线图,我试图在图中获得更多细节。我确信在标记为 1 的 iscontour(环)内还有 3 个等轮廓(岛形状)。这些将是局部最小值。我不太明白如何进一步放大图表,让它们在图表中呈现。
对 python 和 Jupyter Notebook 相当陌生,如果有任何关于我如何做到这一点的见解,我将不胜感激。
delta = 0.025
x = np.arange(-3, 1.0, delta)
y = np.arange(-3, 2.0, delta)
X, Y = np.meshgrid(x, y)
e1 = X*X + 2*Y*Y + np.sin(2*X)
e2 = X*X + np.cos(X+5*Y) - 1.2
Z = e1**2 + e2**2
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, np.array([1, 5, 10, 50, 100]))
ax.clabel(CS, inline=True, fontsize=10)
好吧,如果您知道值 1 的轮廓内存在三个最小值,那么您可以为
levels
参数提供较小的值来查看它们:
import matplotlib.pyplot as plt
import numpy as np
delta = 0.025
x = np.arange(-3, 1.0, delta)
y = np.arange(-3, 2.0, delta)
X, Y = np.meshgrid(x, y)
e1 = X*X + 2*Y*Y + np.sin(2*X)
e2 = X*X + np.cos(X+5*Y) - 1.2
Z = e1**2 + e2**2 # ensure's its positive
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, np.array([0.1, 1, 5, 10, 50, 100]))
ax.clabel(CS, inline=True, fontsize=10)
ax.set_xlim(-3, 1)
ax.set_ylim(-2, 1)
plt.show()
您还可以使用
xlim
和 ylim
来修改轴的居中,就像我上面所做的那样:如果您使框变小,三个最小值将更加明显。