python画笛卡尔心形线_参加数学考试——python画极坐标,笛卡尔心形,玫瑰线,阿基米德螺线,伯努利双旋钮(加深对图像的理解),考研,Python,绘制,图画,心形线,双纽线...

《张宇基础30讲》第一讲的几张极坐标图象,这里用Python来实现一下,加深理解,并学习绘制极坐标图像。

1.笛卡尔心形线

公式:

gif.latex?r%20%3D%20a%281-cos%28%5Ctheta%29%29

import numpy as np

import matplotlib.pyplot as plt

# 心形线

a = 1

theta = np.linspace(0, 2*np.pi, 1000)

r = a*(1 - np.cos(theta))

plt.axes(polar = True)

plt.plot(theta, r)

plt.show()

20200417160924429.png

np.linspace来选取0到2π的1000个点,计算r,polar=True 为极坐标图

扩展调试

我们改变a和cos的正负,怎么样,发现规律了吗?

20200417162516879.png

a负 cos 负

20200417162640533.png

a正 cos 正

我们再来将cos替换为sin

20200417162813656.png

r = a*(1 - np.sin(theta))

2.玫瑰线

gif.latex?r%20%3D%20a%5Csin%20%283%5Ctheta%29

# 玫瑰线

a = 1

theta = np.linspace(0, 2*np.pi, 1000)

r = a* np.sin(3*theta)

plt.axes(polar = True)

plt.plot(theta, r)

plt.show()

20200417163635248.png

扩展调试

尝试吧 3theta 变为10,秒变菊花线,可看出玫瑰线的瓣数与theta参数相同

2020041716380487.png

r = a* np.sin(10*theta)

3.阿基米德螺线

gif.latex?r%20%3D%20a%5Ctheta

# 阿基米德螺线

a = 1

theta = np.linspace(0, 10*np.pi, 1000)

r = a * theta

plt.axes(polar = True)

plt.plot(theta, r)

plt.show()

20200417164105760.png

扩展调试

当我们改变 π 前面的参数,旋转的圈数也在变化

而改变a的正负时,顺逆时针发生变化

20200417164259711.png

r = -a * theta

4.伯努利双纽线

gif.latex?r%5E%7B2%7D%20%3D%202a%5E%7B2%7D%5Ccos%202%5Ctheta

a = 1

theta = np.linspace(0, 2*np.pi, 1000)

r = np.sqrt(2*(a**2)*np.cos(2*theta))

plt.axes(polar = True)

plt.plot(theta, r)

plt.show()

20200417164537943.png

拓展调试

现在我们将 2theta 变成 3theta 看一下

20200417164732938.png

r = np.sqrt(2*(a**2)*np.cos(3*theta))

是不是很熟悉? 跟上面的玫瑰线很相似。

我们将cos改成sin试一下

20200417164913498.png

r = np.sqrt(2*(a**2)*np.sin(3*theta))

这下可是一模一样了,其实我们看两个公式也可以看出来,本质都为  r = n cos 或者 r = n sin

所以本质上伯努利双纽线和玫瑰线是一个东西

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值