如下图,已知直角三角形ABC的斜边AB是2,BC是1,求∠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'C与AB相交与O点(作图代码附录1)。
由于OB是AB的一半,同理,可得OC也是C'C的一半,然而C'C=AB,BC也是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()