本文内容来自于学习麻省理工学院公开课:单变量微积分-三角函数的积分及三角替换-网易公开课
开发环境准备:CSDN
目录
一、三角学中的基本知识
import numpy as np
import matplotlib.pyplot as plt
def DrawXY(xFrom,xTo,steps,expr,color,label,plt):
yarr = []
xarr = np.linspace(xFrom ,xTo, steps)
for xval in xarr:
yval = expr.subs(x,xval)
yarr.append(yval)
y_nparr = np.array(yarr)
plt.plot(xarr, y_nparr, c=color, label=label)
theta = 45
angle = np.linspace( 0 , 2 * np.pi , 150 )
radius = 1
xarr = radius * np.cos( angle )
yarr = radius * np.sin( angle )
figure, axes = plt.subplots( 1 )
axes.plot( xarr, yarr, label='radius='+format(radius) )
angleInner = np.linspace( theta/180*np.pi , 0 , 150 )
xArcInner = radius /10 * np.cos( angleInner )
yArcInner = radius /10 * np.sin( angleInner )
axes.plot( xArcInner, yArcInner,color='b')
plt.text(0.18, 0.03, 'θ', fontsize=9)
axes.set_aspect( 1 )
x1 = np.cos( theta/180*np.pi )
y1 = np.sin( theta/180*np.pi )
xarr1 = [0,1]
yarr1 = [0,0]
plt.plot(xarr1, yarr1,'r',linestyle='-',marker='')
xarr2 = [0,x1]
yarr2 = [0,y1]
plt.plot(xarr2, yarr2,'orange',linestyle='-',marker='')
plt.plot([x1,x1], [0,y1],'green',linestyle='-',marker='')
plt.plot([0,x1], [0,0],'green',linestyle='-',marker='')
plt.text(x1+0.05, y1+0.05, '(cosθ ,sinθ)', fontsize=9)
plt.text(-0.1, -0.1, 'O', fontsize=9)
plt.legend(loc='upper left')
plt.show()
三角学中所有知识都是基于圆心在 ( 0, 0 ), 半径为1的⚪。
1、三角学公式:
(倍角公式)
(倍角公式)
(1) 倍角公式
x = symbols('x')
expr = cos(2*x)
DrawXY(-2,0,20,expr,color = 'c',label='cos(2x)',plt=plt)
expr = cos(x)**2-sin(x)**2
DrawXY(0,2,20,expr,color = 'r',label='cos(x)**2+sin(x)**2',plt=plt)
expr = sin(2*x)
DrawXY(-2,0,20,expr,color = 'b',label='sin(2x)',plt=plt)
expr = 2*sin(x)*cos(x)
DrawXY(0,2,20,expr,color = 'g',label='2*sin(x)*cos(x)',plt=plt)
plt.legend(loc='upper left')
plt.show()
(半角公式)
(半角公式)
(2) 半角公式
x = symbols('x')
expr = cos(x)**2
DrawXY(-2,0,20,expr,color = 'c',label='cos(x)**2',plt=plt)
expr = (1+cos(2*x))/2
DrawXY(0,2,20,expr,color = 'r',label='(1+cos(2*x))/2',plt=plt)
expr = sin(x)**2
DrawXY(-2,0,20,expr,color = 'b',label='sin(x)**2',plt=plt)
expr = (1-cos(2*x))/2
DrawXY(0,2,20,expr,color = 'g',label='(1+cos(2*x))/2',plt=plt)
plt.legend(loc='upper left')
plt.show()
(3) 求导、求积
二、三角函数的积分
.......( m, n = 0, 1, 2, 3,.... )
1、 简单的情况: m,n 至少有一个是奇数
当m = 1时
设 u = sin(x) , du 同 sin'(x) = cos(x)dx
当m=2, n=3时
设 u = cos(x) , du 同 cos'(x) = -sin(x)
当m = 0, n =3时
设 u = cos(x) , du 同 cos'(x) = -sin(x)
2、 困难的情况: m,n 都是偶数 (用半角公式)
m = 2, n = 0
由
m = 2, n = 2
由
(半角公式)
(半角公式)
另
由 (倍角公式)
三、例子
theta = 45
r = 1
figure, axes = plt.subplots( 1 )
radius = r
angle = np.linspace( theta/180*np.pi , 2 * np.pi , 150 )
xarr = radius * np.cos( angle )
yarr = radius * np.sin( angle )
axes.plot( xarr, yarr, label='radius=r',color = 'b')
angle = np.linspace( 0 , theta/180*np.pi , 150 )
xarr = radius * np.cos( angle )
yarr = radius * np.sin( angle )
axes.plot( xarr, yarr, label='' ,color = 'c')
angleInner = np.linspace( theta/180*np.pi , 0 , 150 )
xArcInner = radius /10 * np.cos( angleInner )
yArcInner = radius /10 * np.sin( angleInner )
axes.plot( xArcInner, yArcInner,color='b')
plt.text(0.18, 0.03, 'θ', fontsize=9)
axes.set_aspect( 1 )
x1 = np.cos( theta/180*np.pi )
y1 = np.sin( theta/180*np.pi )
plt.plot([0,0], [0,y1],'c')
plt.plot([0,0], [y1,1],'b')
plt.text( -0.2, y1, 'y=b', fontsize=9)
xarr1 = [0,1]
yarr1 = [0,0]
plt.plot(xarr1, yarr1,'c',linestyle='-',marker='')
plt.plot([0,x1], [y1,y1],'c')
xarr2 = [0,x1]
yarr2 = [0,y1]
plt.plot(xarr2, yarr2,'orange',label = '')
plt.plot([x1,x1], [0,y1],'green',linestyle='-',marker='')
plt.plot([0,x1], [0,0],'c')
plt.text(x1+0.05, y1+0.05, '(r*cosθ ,r*sinθ)', fontsize=9)
plt.text(-0.1, -0.1, 'O', fontsize=9)
plt.legend(loc='upper left')
plt.show()
1、求上图中浅蓝色线条包裹部分的面积
一般来说是列如: 求体积,这个例子比较麻烦,需要分开两段计算,因为f(x) 在
点前后,有不同的定义。
因为这例子中 f(y) 对 y 轴的包裹面积可以用一个式子表达, 所以考虑用如下算式计算面积:
由前面例子可知:
由
所以:
上面红色三角形的面积正是计算公式这部分
由扇形面积公式: (l为弧长), 弧长公式:
( \theta 为弧度),
上面绿色扇形的面积正是计算公式这部分