我正在使用动力系统进行模拟。基本上对于2D平面中的每个初始条件(x,y),我计算一定数量,即实数。我的目标是取一堆点并计算每个点的所述数量,然后制作颜色图。
此特定模拟涉及势能函数,x和y为输入。我修复了能量并绘制了函数的轮廓(使用matplotlib中的plt.contour)。我想在这个轮廓内创建一个颜色图。
到目前为止,我只对矩形域进行了模拟,并使用了np.meshgrid,但这次我不知道该怎么做。有人可以提供一些建议吗?到目前为止,我有这个:
import numpy as np
import matplotlib.pyplot as plt
def V(x,y):
return 0.5*(x**2+y**2)+(x**2)*y-(1.0/3.0)*(y**3)
def my_function(x,y,h):
# insert function here
# returns a real number > 0
#The following segment plots a contour of V at value h:
def plot_contour(h):
x=np.linspace(-1.0,1.0,200)
y=np.linspace(-1.0,1.0,200)
X,Y=np.meshgrid(x,y)
Z=np.zeros((200,200))
for i in range(200):
for j in range(200):
Z[i,j]=V(X[i,j],Y[i,j])
plt.contour(X,Y,Z,[h])
plt.show()
#The following segment creates a color plot on a rectangular domain
def color_plot(h):
x=np.linspace(-1.0,1.0,200)
y=np.linspace(-1.0,1.0,200)
X,Y=np.meshgrid(x,y)
Z=np.zeros((200,200))
for i in range(200):
for j in range(200):
Z[i,j]=my_function(X[i,j],Y[i,j],h)
plt.pcolormesh(X,Y,Z)
plt.show()
我想执行以下操作:选择h
的值,在V
计算h
的轮廓,对my_function(x,y,h)
的值进行颜色绘制其中(x,y)
是内部点的轮廓。因此,颜色图仅限于轮廓线内的点。基本上就像这样