考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)

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

1.笛卡尔心形线

公式:r = a(1-cos(\theta))

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()

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第1张图片

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

扩展调试

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

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第2张图片 a负 cos 负

 

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第3张图片 a正 cos 正

我们再来将cos替换为sin

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第4张图片 r = a*(1 - np.sin(theta))

 

 2.玫瑰线

r = a\sin (3\theta)

# 玫瑰线
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()

 考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第5张图片

扩展调试

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

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第6张图片 r = a* np.sin(10*theta)

  

3.阿基米德螺线

r = a\theta

# 阿基米德螺线
a = 1
theta = np.linspace(0, 10*np.pi, 1000)
r = a * theta
plt.axes(polar = True)
plt.plot(theta, r)
plt.show()

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第7张图片

扩展调试

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

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

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第8张图片 r = -a * theta

 

4.伯努利双纽线

r^{2} = 2a^{2}\cos 2\theta

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()

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第9张图片

拓展调试

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

 

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第10张图片 r = np.sqrt(2*(a**2)*np.cos(3*theta))

 

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

我们将cos改成sin试一下

考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)_第11张图片 r = np.sqrt(2*(a**2)*np.sin(3*theta))

 

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

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

 

你可能感兴趣的:(Python杂七杂八,考研,python,数学建模)