三角関数

三角関数がよくわからないので、ネットでテキストを調べてみたら、高知工科大学の基礎数学ワークブックの
三角関数」がよくわからないときに開く本
というのが見つかりました。PDFでダウンロードできます。
これをAPL/J言語を片手に読んでみたいと思います。
まずは三角比から。直角三角形の絵があります。右下が直角で左下の角が鋭角(90度より小さい角)の直角三角形。
左下の角がθ(theta、シータ)となっています。
斜線が r 、底辺が x 、右側の縦の辺が y です。
このとき、( y / r ) 、( x / r )、( y / x )の値は三角形の大きさに関係なく、角θの大きさだけで決まる。
それぞれθの正弦(sine)、余弦(cosine)、正接(tangent)といい、sin θ、cos θ、tan θと表す。
割り算はAPL/J言語では%で表します。
つまり、sin θ = y%r、cos θ = x%r、tan θ = y%xとなる。
さて、APL/J言語ではo.(オードット)という関数が三角関数をあらわします。
左側引数が1がsin、2がcos、3がtanだったと思います。
1 o. theta = y%r
2 o. theta = x%r
3 o. theta = y%x
この定義により、辺の長さは次のように表せる。
y = r * 1 o. theta
x = r * 2 o. theta
y = x * 3 o. theta


thetaのところには角度が入ります。角度が30度、45度、60度のときには図とピタゴラスの定義から次の結果が想定されます。


1 o. 30度 => 1r2 => 0.5
2 o. 45度 => 1%\sqr{2}
3 o. 60度 => \sqr{3}


こんな感じで進めていく。
どうしようか。


さていくつか問題があって、ひとつは\sqr{2}とか、\sqr{3}の表記の問題。
APL/J言語で式として2^1r2、3^1r2とか、%:2とか%:3とか書くのは問題ないのですが、計算されてしまいます。
もうひとつは、角度を度数で表すのをラジアンにしないと上記の式に代入できないこと。
というわけで、degという換算用の関数を作ってみます。

   deg=:(1p1%180)&*
   deg 180
3.14159
   1 o. deg 30
0.5
   2 o. deg 45
0.707107
   3 o. deg 60
1.73205

ここで

   %:2
1.41421
   % %:2
0.707107
   %:3
1.73205

つづく