强基初中数学&学Python——第九十课 函数与方程之三十四:锐角三角函数的逆函数

  如下图,已知直角三角形ABC的斜边AB2BC1,求∠A的大小。

 

  由锐角三角函数的性质,可知,sin∠A=BC/AB=1/2,问题就是已知锐角三角函数的值,求锐角的大小——锐角三角函数的逆函数

  与四种锐角三角函数相对,有四种逆函数:

反正弦函数arcsinx

反余弦函数arccosx

反正切函数arctanx

反余切函数arccotx

  为了完整,这里补充介绍2个三角函数和它们的逆函数

正割函数sec∠A=AB:AC=1/cos∠A,(斜边比邻边)

反正割函数arcsecx

余割函数csc∠A=AB:BC=1/sin∠A,(斜边比对边)

反余割函数arccscx

  在科学计算器普及之前,一般使用三角函数表来计算三角函数值和它们的逆函数值的。

  保存至今的一张古老的三角函数表,是2世纪的希腊天文学家、地理学家、数学家托勒密(Ptolemy

 

所著的《天文学大成》一书中的一张弦表。这张弦表虽然和我们现在所用的正弦、余弦表有所不同,但它对当时的天文计算有重要作用。

  托勒密在《天文学大成》一书中还介绍了他利用几何方法推导弦表的过程,这需要进行许多严密的推理和仔细的计算。由于当时既没有现成的计算公式,又没有先进的计算工具,所以制作这张弦表要付出艰辛的努力。这张弦表极大地促进了三角学在天文测量等应用方面的发展,人们可以直接利用上述计算结果解决有关问题,这带来很多便利,因此托勒密编制弦表在数学史上是值得纪念的一大贡献。

  随着人们对数学研究的不断深入,正弦、余弦、正切等锐角三角函数进一步发展成三角函数,对数的产生极大地提高了三角函数计算速度,微积分的出现又带来利用级数计算三角函数的方法……后来的三角函数表正是在这些成果的基础上的不断改进。在科学研究、生产实践、军事活动等诸多领域中,这些三角函数表比托勒密编制的弦表发挥了大得多的作用,它们成为许多人手中应用极其广泛的计算工具。

  科学计算器和计算机普及后,把这些三角函数迁移到了科学计算器和计算机中,打印的三角函数表就退出了历史舞台。

  上面的sin∠A=0.5∠A的值,亦即求arcsin0.5的值。有些反三角函数是可以通过几何方法求出它的准确值,这个就是其中之一。请看下面的方法。

  以三角形的直角边为边作长方形C'C,作对角线C'CAB相交与O点(作图代码附录1)。

 

  由于OBAB的一半,同理,可得OC也是C'C的一半,然而C'C=ABBC也是AB的一半,所以可以得到△OBC是等边三角形,∠ABC=60°∠BAC=90°-60°=30°,即arcsin0.5=30°

  由于

(sin∠A)²+(cos∠A)²=1

0.5²+(cos∠A)²=1

cos∠A=sqrt(3)/2

所以

arccos(sqrt(3)/2)=30°

又由于tan∠A=sin∠A/cos∠A=sqrt(3)/3,得

arctan(sqrt(3)/3)=30°

又由于cot∠A=cos∠A/sin∠A=sqrt(3),得

arccot(sqrt(3))=30°

又由于sec∠A=1/cos∠A=2sqrt(3)/3,得

arcsec(2sqrt(3)/3)=30°

又由于csc∠A=1/sin∠A=2,得

arccsc(2)=30°

  例题1不用查表,也不用计算器或电脑,求arccos(sqrt(2)/2)的值。

解:arccos(sqrt(2)/2)=x,由于逆函数的逆函数是函数本身,得

cosx=sqrt(2)/2

(cosx)²=1/2

又由于

(sinx)²+(cosx)²=1

(sinx)²=1/2

sinx=cosx

可见三角形是等腰直角三角形,得

arccos(sqrt(2)/2)=45°

  练习题1不用查表,也不用计算器或电脑,求arctan(sqrt(3))arccot1的值。

  

附录1
import turtle as t
t.setup(500,500)
t.screensize(400,400)  
t.up()
t.pensize(2)
t.pencolor("red")
#
t.setpos(-50, -50)
t.seth(30)
t.down()
t.fd(200)
posB=t.pos()
t.seth(-90)
t.fd(100)
posC=t.pos()
t.seth(180)
t.fd(10)
pos=t.pos()
t.pensize(1)
t.pencolor("black")
t.seth(90)
t.fd(10)
t.seth(0)
t.fd(10)
t.up()
t.setpos(pos)
t.pensize(2)
t.pencolor("red")
t.down()
t.setpos(-50,-50)
t.up()
t.seth(90)
for i in range(0, 100, 5):
    t.down()
    t.fd(2.5)
    t.up()
    t.fd(2.5)
t.setpos(-50, 50)
t.seth(0)
for i in range(0, int(100*3**0.5), 5):
    t.down()
    t.fd(2.5)
    t.up()
    t.fd(2.5)
t.up()
t.setpos(-50, 50)
t.seth(-30)
for i in range(0, 200, 5):
    t.down()
    t.fd(2.5)
    t.up()
    t.fd(2.5)
t.pencolor("black")
t.setpos(-55,-60)
t.write("A",align="right",font=("Arial", 20, "normal"))
t.setpos(posB[0],posB[1]+5)
t.write("B",align="center",font=("Arial", 20, "normal"))
t.setpos(posC[0]+5,posC[1]-10)
t.write("C",font=("Arial", 20, "normal"))
t.setpos(-55,40)
t.write("C'",align="right",font=("Arial", 20, "normal"))
t.setpos(-50+100*3**0.5/2,5)
t.write("O",align="center",font=("Arial", 20, "normal"))
t.ht()