使用matplotlib绘制隐函数图像

使用matplotlib绘制隐函数图像

方案一:使用matplotlib.pyplot.contour()函数

例如,要绘制以下四个圆:

x 2 + y 2 = 0.5 x 2 + y 2 = 1.0 x 2 + y 2 = 1.2 x 2 + y 2 = 1.5 \begin{aligned} x^2+y^2&=0.5\\x^2+y^2&=1.0\\x^2+y^2&=1.2\\x^2+y^2&=1.5\\ \end{aligned} x2+y2x2+y2x2+y2x2+y2=0.5=1.0=1.2=1.5

代码如下:

xlist = np.linspace(-2.0, 1.0, 100) # Create 1-D arrays for x,y dimensions
ylist = np.linspace(-1.0, 2.0, 100)
X,Y = np.meshgrid(xlist, ylist) # 计算圆所在区域的网格
Z = np.sqrt(X**2 + Y**2) # 计算结果
plt.contour(X, Y, Z, [0.5, 1.0, 1.2, 1.5], colors = ’k’, linestyles = ’solid’)# [0.5, 1.0, 1.2, 1.5] 指明方程右面的值
plt.axes().set_aspect(’equal’) # 使x,y轴的单位长度一致
plt.axis([-1.0, 1.0, -0.5, 0.5]) # 坐标轴显示范围
plt.show()

从代码可以清晰地看到,这个方法的缺点在于,需要事先知道函数的定义域才能生成二维网格。
所以在难以知道定义域的情况下,推荐使用方案二。

方案二:使用sympy库

参考官方网站
仍然是绘制上面公式表达的四个圆。Eq(arg1,arg2)函数中,arg1是不带引号的方程左边表达式,arg2是方程右侧表达式。调用plot_implicit函数绘图:

from sympy import plot_implicit, Eq, symbols
x, y = symbols('x y')
plot_implicit(Eq(x**2 + y**2, 0.5), adaptive=False, points=400)
plot_implicit(Eq(x**2 + y**2, 1.0), adaptive=False, points=400)
plot_implicit(Eq(x**2       , 1.2 - y**2), adaptive=False, points=400)#Eq(x**2, 1.2-y**2)等价于Eq(x**2+y**2, 1.2)
plot_implicit(Eq(x**2 + y**2, 1.5), adaptive=False, points=400)
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值