为了账号安全,请及时绑定邮箱和手机立即绑定

使用 matplotlib 绘制轮廓时出错

使用 matplotlib 绘制轮廓时出错

墨色风雨 2021-09-28 21:03:11
我正在尝试绘制这样的函数。但是,下面的代码会导致错误。我认为原因是在 中返回了一个标量值norm (),但是如何解决呢?图像的标签从左边开始代表定义公式、搜索空间、最优解import numpy as npimport matplotlib.pyplot as pltx = np.arange(-5, 5, 0.05) y = np.arange(-5, 5, 0.05) X ,Y= np.meshgrid(x, y)print(X)c1 = -2 * np.ones((2,200,200))c2 = 4 * np.ones((2,200,200))print(np.linalg.norm(np.array([X,Y]) - c1))Z = (1 - 1 / (1 * np.linalg.norm(np.array([X,Y]) - c1) + 1)) + (1 - 1 / (2 * np.linalg.norm(np.array([X,Y]) - c2) + 1))plt.pcolormesh(X, Y, Z,cmap='hsv') plt.show()
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

问题是您的 currentZ与您的X和 的维度不同Y。这可以通过打印 X、Y 和 Z 的形状来验证。原因是您没有在方程式中提供axiswhile 计算norm,因此您得到了一个标量值。您可以参考官方文档以获取有关axis参数如何工作的更多信息。在您的情况下,由于您没有为 指定任何值axis,因此它返回的是矩阵范数而不是向量范数


以下是您提供的解决方案,axis=0用于正确计算您X和Y


Z = (1 - 1 / (1 * np.linalg.norm(np.array([X,Y]) - c1, axis=0) + 1)) + (1 - 1 / (2 *np.linalg.norm(np.array([X,Y]) - c2,  axis=0) + 1))

plt.pcolormesh(X, Y, Z,cmap='hsv') 

//img1.sycdn.imooc.com//615312f00001ccb904100268.jpg

查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信