我在矢量微积分上创建一个ipython笔记本。 (至少基础知识)。 在这段代码中我试图获得函数x ^ 2 + XY + Y ^ 2的伪彩色图 并在其上绘制由其梯度给出的矢量场 U = 2X + Y且V = 2Y + X
然而,箭袋图似乎旋转了90度,因此没有指向正确的方向
x = arange(-2.0, 2.0,00.1)
y = arange(-2.0, 2.0,00.1)
X,Y = meshgrid(x, y)
Z = X**2 + X*Y + Y**2
GradX = (2*X+Y)
GradY = (2*Y+X)
figure(figsize=(10, 10))
im = imshow(Z, cmap=cm.RdYlBu, interpolation='none', extent=[-2,2,-2,2])
quiver(X, Y, GradX, GradY, angles='xy', scale_units='xy')
show()
答案 0 :(得分:3)
我怀疑你需要:
im = imshow(Z, cmap=cm.RdYlBu, interpolation='none', extent=[-2,2,-2,2], origin='lower')
也就是说,指定origin='lower'
将y=-2
放在左下角。正如我在评论中提到的那样,我认为它是旋转的图像(实际上是翻转的 - 虽然它在这个图中有相同的差异),而不是箭头图。
分析:在你的方程式中,Z
,GradX
和GradY
中的所有{(1}},{{1}}和{{1}}的大小应该是(+,+)和( - , - )角中最大的。情节,标志“合作”。正如您发布的那样,只有箭头图具有此属性,因此它是旋转的图像。此外,它始终是具有这些问题的图像(由于计算机约定之间的冲突,图像从左上角索引,而数学约定,Y的最小值在轴上最低)。