本文内容来自于学习麻省理工学院公开课:单变量微积分-第四次考试复习-网易公开课
Bullseye:第四单元 用python学习微积分(二十九)参数曲线(二)和极坐标和极坐标下的面积
为何彗星拥有如此独特的轨道,是一个拉长的椭圆形?_太阳系_离心力_运行
目录
(2)中心,射线与图形的边缘组成一个个的类扇形图形,有些图形比扇形少一块,有些则多一块,剩下的和扇形重合。
(3)我们知道当这个间隔角度趋近于0时,所切分的图形面积趋近扇形的面积,并可以通过扇形面积公式计算其面积。 编辑
一、极坐标下的面积(polar coordinate)
1、基本公式
import numpy as np
from sympy import *
import matplotlib.pyplot as plt
figure, ax= plt.subplots( 1 )
ax.set_aspect( 1 )
def DrawXY(tFrom,tTo,steps,exprX,exprY, color,label,plt, arrow =False):
xarr = []
yarr = []
tarr = np.linspace(tFrom ,tTo, steps)
for tval in tarr:
xval = exprX.subs(t,tval)
xarr.append(xval)
yval = exprY.subs(t,tval)
yarr.append(yval)
y_nparr = np.array(yarr)
x_nparr = np.array(xarr)
length = len (xarr)
plt.plot(x_nparr, y_nparr, c=color, label=label)
if(arrow and steps > 2):
plt.arrow(float(x_nparr[0]),float( y_nparr[0]),float( x_nparr[2]-x_nparr[0]),float( y_nparr[2]-y_nparr[0]), width=.02, color = color)
a = 1
t = symbols('t')
exprX = a*cos(t)
exprY = a*sin(t)
DrawXY( 0,2*np.pi,50,exprX,exprY,color='c', label='circle radius=1',plt = plt, arrow = True)
exprX = a*cos(t)
exprY = a*sin(t)
DrawXY( 0,np.pi/4,50,exprX,exprY,color='r', label='pie in the circle theta = pi/4',plt = plt)
plt.plot([0,a*cos(0)],[0, a*sin(0)], c='r')
plt.plot([0,a*cos(np.pi/4)],[0, a*sin(np.pi/4)], c='r')
print('area of circle = r**2*pi is ' , a**2*pi)
print('area of pie which theta is pi/4 = r**2*pi* ((pi/4) / (2*pi)) is ' , a**2*pi* ((pi/4) / (2*pi)))
plt.legend(loc='upper left')
plt.show()
添加图片注释,不超过 140 字(可选)
⚪的半径 = a;
面积(A) =
扇形面积 =
复杂图形的面积
(1)从图形中心画等角度间隔射线。
(2)中心,射线与图形的边缘组成一个个的类扇形图形,有些图形比扇形少一块,有些则多一块,剩下的和扇形重合。
(3)我们知道当这个间隔角度趋近于0时,所切分的图形面积趋近扇形的面积,并可以通过扇形面积公式计算其面积。 ![dA = \frac{r^2 d\theta }{2}](https://i-blog.csdnimg.cn/blog_migrate/fce1719230cf3489973bc538ed77c967.gif)
(4)总面积
....... (
)
2、例1 ![r = 2acos(\theta)](https://i-blog.csdnimg.cn/blog_migrate/e833eb9998caf316179ba2577789658a.gif)
由上章例5可知上式 同
figure, ax= plt.subplots( 1 )
ax.set_aspect( 1 )
a = 2
t = symbols('t')
r = 2*a*cos(t)
exprX = r*cos(t)
exprY = r*sin(t)
DrawXY( -np.pi/2,np.pi/2,50,exprX,exprY,color='c', label='r = 2*a*cos(t)',plt = plt,arrow=True)
plt.text(x=2*a,#文本x轴坐标
y=0, #文本y轴坐标
s='(2a,0)', #文本内容
rotation=0,#文字旋转
ha='left',#x=2.2是文字的左端位置,可选'center', 'right', 'left'
va='baseline',#y=8是文字的低端位置,可选'center', 'top', 'bottom', 'baseline', 'center_baseline'
fontdict=dict(fontsize=12, color='black',
family='monospace',#字体,可选'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'
weight='bold',#磅值,可选'light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black'
)#字体属性设置
)
plt.legend(loc='upper left')
plt.show()
添加图片注释,不超过 140 字(可选)
,
由,
由
注意:当 取值在
时,
取值为负与角度相反,取值还是在上图那个⚪上
把上面代码下面这一行改改,可以看到结果画出了同样的⚪。
DrawXY( np.pi/2,3*np.pi/2,50,exprX,exprY,color='c', label='r = 2*a*cos(t)',plt = plt,arrow=True)
3、例2 画图
figure, ax= plt.subplots( 1 )
ax.set_aspect( 1 )
t = symbols('t')
r = sin(2*t)
exprX = r*cos(t)
exprY = r*sin(t)
DrawXY( 0,np.pi/2,100,exprX,exprY,color='c', label='4-leaf rose 0-pi/2',plt = plt,arrow = true)
DrawXY( np.pi/2,np.pi,100,exprX,exprY,color='g', label='pi/2-pi',plt = plt,arrow =true)
DrawXY( np.pi,3*np.pi/2,100,exprX,exprY,color='black', label='pi-3/2pi',plt = plt,arrow = true)
DrawXY( 3*np.pi/2,2*np.pi,100,exprX,exprY,color='r', label='3/2pi-2pi',plt = plt,arrow = true)
plt.legend(loc='upper left')
plt.show()
添加图片注释,不超过 140 字(可选)
...
4、例3 ![r = \frac{1}{1+2cos(\theta)}](https://i-blog.csdnimg.cn/blog_migrate/7f17c6d8a18983d4113dd25b75279224.gif)
(1)画图
figure, ax= plt.subplots( 1 )
ax.set_aspect( 1 )
t = symbols('t')
r = 1/(1+2*cos(t))
exprX = r*cos(t)
exprY = r*sin(t)
tval = -pi/2 - 0.5
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
tval = -pi/2
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
tval = 0
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
tval = pi/2
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
tval = pi/2 + 0.5
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
DrawXY( -np.pi/2,np.pi/2,100,exprX,exprY,color='c', label='r = 1/(1+2*cos(t))',plt = plt,arrow = true)
plt.scatter([0], [0], color="red", label='sun')
plt.legend(loc='upper left')
plt.show()
(2)把
切换回直角坐标系
(这个是双曲线 'hyperbola' 的形式, 老师说这个其实是彗星的轨道)
def DrawXY1(xFrom,xTo,steps,expr,color,label,plt, arrow =False):
yarr = []
xarr = np.linspace(xFrom ,xTo, steps)
for xval in xarr:
#print(expr.subs(x,xval), xval)
yval = expr.subs(x,xval)
yarr.append(yval)
y_nparr = np.array(yarr)
x_nparr = np.array(xarr)
length = len (xarr)
plt.plot(x_nparr, y_nparr, c=color, label=label)
if(arrow and steps > 2):
plt.arrow(float(x_nparr[0]),float( y_nparr[0]),float( x_nparr[2]-x_nparr[0]),float( y_nparr[2]-y_nparr[0]), width=.02, color = color)
figure, ax= plt.subplots( 1 )
ax.set_aspect( 1 )
x = symbols('x')
expr = (1-4*x+3*x**2)**0.5
DrawXY1(-1,0.3333,100,expr,color='b',label='+/-(1-4*x+3*x**2)**0.5',plt=plt,arrow=true)
expr = -(1-4*x+3*x**2)**0.5
DrawXY1(-1,0.3333,100,expr,color='b',label='',plt=plt,arrow=true)
expr = (1-4*x+3*x**2)**0.5
DrawXY1(1,2.3,100,expr,color='b',label='',plt=plt,arrow=true)
expr = -(1-4*x+3*x**2)**0.5
DrawXY1(1,2.3,100,expr,color='b',label='',plt=plt,arrow=true)
plt.scatter([0], [0], color="red", label='sun')
plt.legend(loc='upper left')
plt.show()
双曲线:
老师语 , r = 0 是双曲线 (彗星的轨道) 的焦点, 它其实就是太阳的位置!当你想要让重力中心在图形中心的话,这是正确的表达方式。
老师语 ,这个轨道会变成行星或小行星的轨道,形状则是椭圆。r = 0 的情况是一致的,是这个轨道的焦点。
(向心力是太阳的引力,离心力是由彗星绕太阳公转形成的切向速度产生的,当彗星的离心力大于向心力时,在经过近日点之后它的轨道就会变成抛物线或双曲线.....)
figure, ax= plt.subplots( 1 )
ax.set_aspect( 1 )
t = symbols('t')
r = 1/(1+0.5*cos(t))
exprX = r*cos(t)
exprY = r*sin(t)
tval = -pi/2 - 0.5
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
tval = -pi/2
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
tval = 0
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
tval = pi/2
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
tval = pi/2 + 0.5
print ('theta=',tval, 'r = ', r.subs(t,tval), ', x = ',r.subs(t,tval)*cos(tval),', y=', r.subs(t,tval)*sin(tval))
DrawXY( 0,2*np.pi,100,exprX,exprY,color='c', label='r = 1/(1+2*cos(t))',plt = plt,arrow = true)
plt.scatter([0], [0], color="red", label='sun')
plt.legend(loc='upper left')
plt.show()
5、开普勒第二定律
:行星和太阳相连的直线扫过的面积的变换率是恒定的,它取决于中心的质量,也就是取决于太阳。当彗星绕着太阳转的时候,它的速度是不断在变化的,变化的规律即是这个式子。
由上面基本公式推导得到的扇形面积公式:
有
由上式得到 ( 角动量守恒 )
6、例4 复习习题
设:
由公式: