TumblrはじめにR言語で三角関数の定義や公式を可視化しようシリーズです。この記事では、江戸時代の書物に登場する8つの三角関数(八線)を扱います。)について確認します。利用するパッケージを読み込みます。利用パッケージlibrary(tidyverse)この記事では、基本的にパッケージ名::関数名()の記法を使うので、パッケージを読み込む必要はありません。作図コードがごちゃごちゃしないようにパッケージ名を省略しているためggplot2を読み込む必要があります。ネイティブパイプ演算子|>を使っています。magrittrパッケージのパイプ演算子%>%に置き換えても処理できますが、その場合はmagrittrも読み込む必要があります。八線の定義まずは、八線と狭義の三角関数(サイン・コサイン・タンジェント)の関係を数式で確認します。\theta$八線は、基本的な三角関数として知られているサイン(正弦)・コサイン(余弦)・タンジェント(正接)と、それぞれの逆数(余割・正割・余接)、1とサイン・コサインそれぞれの差(余矢・正矢)の8つの関数です。次は、八線を計算して、八線表を作成します。角度を指定して、八線表を作成します。90^{\circ}$を指定して、alpha列とします。\frac{\pi}{180}$に変換して、theta列とします。角度ごとにそれぞれの関数を計算します。(基本的に、列名に日本語を使うのは避けましょう。)続いて、八線表をグラフ化します。・コード(クリックで展開)作図用に、縦型の八線表を作成します。\pi$の範囲で作成して、それぞれの関数を計算しています。pivot_longer()で縦型のデータフレームに変換します。八線のグラフを作成します。expression(f(theta)))八線のグラフどの関数も周期的に推移しています。「八線」と「原点と単位円上の点を斜辺とする直角三角形」の関係をグラフで確認します。グラフの作成まずは、角度を固定したグラフを作成します。角度を指定して、ラジアンに変換します。90^{\circ}$を指定して、alphaとします。\pi}{360}$に変換して、thetaとします。・コード(クリックで展開)(第1象限における)単位円を描画するためのデータフレームを作成します。x^2}$で計算できます。単位正方形を描画するためのデータフレームを作成します。0単位正方形の頂点の座標を格納します。八線をそれぞれ線分として描画するためのデータフレームを作成します。0.574各関数の値を格納しやすいように、tribble()を使ってデータフレームを作成します。「八線の定義」で確認した関数の値は線分の長さであり、座標の値とは異なります。線分ごとに関数名ラベルを描画するためのデータフレームを作成します。coversin~theta==0.43各線分の中点にラベルを配置することにします。数式を表示するにはexpression()の記法を使います。変数となる角度を示すためのデータフレームを作成します。rows単位円と同様に、$0^{\circ}$から$\alpha$までの扇状の値を作成します。変数ラベル(角度ラベル)を描画するためのデータフレームを作成します。0.0451角度の中点に配置することにします。八線のグラフを作成します。var_label))単位円(扇形の線)をgeom_path()、線分をgeom_segment()、ラベル(文字列)をgeom_text()またはgeom_label()で描画します。ラベルとして数式を描画する場合は、parse引数をTRUEにします。八線の可視化(それぞれの関係を導出してみたかったけどまたの機会に。次は、角度と八線の関係をアニメーションで確認します。・コード(クリックで展開)フレームごとに八線をそれぞれ線分として描画するためのデータフレームを作成します。rowsフレーム数frame_numを指定して、フレームごとに角度を変化させて、それぞれ関数を計算します。90^{\circ}$の範囲を等間隔にフレーム数個に分割して、alpha列とします。expand_grid()で全ての組み合わせを作成することで、alpha列の値ごとにラベル(値の受け皿となる行)を複製します。フレーム切替用のラベル列を作成します。因子のレベルがフレームの順番に対応します。フレームごとに関数名ラベルを描画するためのデータフレームを作成します。<dbl>フレーム(角度)ごと、同様に処理します。フレームごとに角度を示すためのデータフレームを作成します。rowsフレーム番号列frameと角度列alphaの全ての組み合わせをexpand_grid()で作成します。alphaが各フレームの角度以下の行のみ取り出して、同様に処理します。先に作成したフレーム切り替え用のラベル列と一致するようにラベルを作成します。フレームごとに角度ラベルを描画するためのデータフレームを作成します。rowsフレームごとに、同様に処理します。八線のアニメーションを作成します。800)transition_manual()にフレームの順序を表す列を指定します。この例では、因子型のラベルのレベルの順に描画されます。animate()のnframes引数にフレーム数、fps引数に1秒当たりのフレーム数を指定します。fps引数の値が大きいほどフレームが早く切り替わります。値が大きいと意図通りに動作しません。角度と八線の関係のアニメーション各線分の長さの変化が、「八線の計算」のグラフに対応します。単位円全体における推移のグラフです。(改定第3版)』(Newton別冊)ニュートンプレス,2022年.おわりに年末年始に新しいことをしたいなと気まぐれに手に取ったのが三角関数のムック本だったので、これを機会にちょっと勉強してみようかと始めました。へぇーで読み飛ばしていい昔話だと思うんですが、図を再現してみたくなってしまいました。調べてみたら他にも色々あるみたいですね。知ってしまったからには他のもまとめてみたいですが、またの機会にします。それと、単位円バージョンもする必要がありますね。こっちは早くやりたいのですが、正解の例や図を見付けないと再現できないので、ぼちぼち調べます。ちなみに私は、三角関数は早々に投げてしまってまともに勉強していないので、三角比と三角関数の違いも分からないレベルです。半年くらいかけてじっくり取り組みたいなと思っています、今のところは、三角関数カテゴリも作ったし。この記事がその始めの一歩です。2022年12月30日は、Juice=Juiceの現リーダーの植村あかりさんの24歳のお誕生日です。おめでとうございます!あーりーらしい新たなJuiceになってきて頼もしい限りです。00:04何かおかしな内容があれば、ご指摘いただけるととても嬉しいです。【R】円周の作図5.3:正射影ベクトルの導出【『スタンフォード線形代数入門』のノート】スポンサーリンクはてなブログをはじめよう!anemptyarchiveさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。