从非线性方程图中查看更多细节

问题描述 投票:0回答:1

我有一个非线性函数系统的等值线图,我试图在图中获得更多细节。我确信在标记为 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)

Current output

python matplotlib contour nonlinear-functions
1个回答
0
投票

好吧,如果您知道值 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
来修改轴的居中,就像我上面所做的那样:如果您使框变小,三个最小值将更加明显。

© www.soinside.com 2019 - 2024. All rights reserved.