第四单元 用python学习微积分(二十五)三角函数,反向变量替换,配方,三角函数变换表

第四单元 用python学习微积分(二十五)三角函数,反向变量替换,配方,三角函数变换表,第1张

本文内容来自于学习麻省理工学院公开课:单变量微积分-反向变量替换,配方-网易公开课

一、公式梳理

1、 (secant)

2、 (cosecant)

3、 (tangent)

4、 (cotangent)

5、

6、

7、

8、

设 u = cos(x), u' =du = -sin(x)dx

9、

由公式 6, 7

二、例题

1、

用定积分做个简单的验算,取值 ,结果是符合的

import numpy as np 
from sympy import *
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)    
    
def DrawTrapezoidal(xFrom,xTo,steps,expr,color,plt, label=''):
    width = (xTo - xFrom)/steps
    xarrRect = []
    yarrRect = []
    area = 0
    xprev = xFrom
    yvalAll =  0
    for step in range(steps):
        yval1 =expr.subs(x,xprev) 
        yval2 = expr.subs(x,xprev + width)
        xarrRect.append(xprev)
        xarrRect.append(xprev)
        xarrRect.append(xprev + width)
        xarrRect.append(xprev + width)
        xarrRect.append(xprev)
        yarrRect.append(0)
        yarrRect.append(yval1)
        yarrRect.append(yval2)
        yarrRect.append(0)
        yarrRect.append(0)
        area += width * (yval1+yval2)/2
        plt.plot(xarrRect, yarrRect, c=color)    
        xprev= xprev + width
    print('============================')    
    if len(label)!=0:
        print(label)    
    print('============================')
    print('width = ', width)
    print('area = ',area)
    
x = symbols('x')
expr = sec(x)**4
DrawXY (0,np.pi/3,1000, expr, 'c', label='sec(x)',plt=plt)
print(integrate(expr,(x,0,np.pi/3)))
print(tan(np.pi/3)+tan(np.pi/3)**3/3 - tan(0)+tan(0)**3/3)
plt.legend(loc='upper left')
plt.show() 

添加图片注释,不超过 140 字(可选)

2、

由于tan取值范围从负无穷一直到正无穷, 所以可以进行三角替换

另由

还原三角替换

添加图片注释,不超过 140 字(可选)

在上图中直角三角形中, 设 的对边长为x, 则根据前面假设tan(\theta) = x , 有 临边长为1,另斜边长则为

或由

用定积分验算下, 用梯形法得到的结果和计算出的结果近似。

x = symbols('x')
expr = 1/ (x**2*(1+x**2)**0.5)
DrawXY (2,5,100, expr, 'c', label='',plt=plt)
DrawTrapezoidal(2,5,100,expr,'c',plt, label='1/ (x**2*(1+x**2)**0.5)')
#print(integrate(expr,(x,2,5)))
print('result with arc tangent=', float(-csc(atan(5)) + csc(atan(2))))
print('result = ', -((1+5**2)**0.5)/5 + ((1+2**2)**0.5)/2 )

3、如上题去除表达式 " tan(arccsc(x)) " 中三角函数

 

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)

plt.text(cos(theta)-0.18, -0.08, 'adj', fontsize=9)
plt.text(cos(theta)+0.22, sin(theta)-0.48, 'opp', fontsize=9)
plt.text(cos(theta)-0.3, sin(theta)-0.48, 'hyp', 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() 

 

设斜边(hyp)为x,则对边(opp)为1, 临边(adj)为

三、三角替换的小结

1、表

如果积分包含 -- 要做的替换 -- 得到

or

2、例题

设 ,

由公式9:

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/723169.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存