わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

定数倍を忘れずに!

 学部1年生向け科目のうち,前期の情報リテラシー科目で学んだことと,後期のプログラミング入門科目で学ぶべきこととの間で,つながりを持たせることはできないかと,考えてみました.
 ちょうどいいのが見つかりました.計算やプログラミングにおいて,「定数倍」を行うことの必要性です.
 情報リテラシー科目の「計算」というのは,データ転送速度で出てきます.その定義(単位時間あたりにどれだけのデータ量を転送するか)と,bpsという単位を学んだあと,計算する際に,「バイトをビットに変換すること」が必要になったりします.これを忘れることで,起こりがちなのが,「3分でダウンロードできる!」という時間の見積もりです---ビットに変換することを忘れていたため,実際には24分かかることになります.
 担当科目のプログラミング入門における定数倍は,三角関数の呼び出しのところです.三角比だと,sin/cos/tanのあとには度数法に基づき「30°」のように書き,例えばsin 30°=0.5です.しかしプログラミングでは,引数は弧度法(ラジアン)で与えます.C言語を例にとると,#include を書いておき,double pi = 3.14159265としておいてから,sin(30 * pi / 180)という式が,sin 30°と同じとなります.
 「* pi / 180」は,間違えやすいところですが,プログラミング授業は記憶力を問うテストではないので,Web上の情報に当たりましょう.弧度法の意味と度数法に対するメリット | 高校数学の美しい物語では「度に\displaystyle\frac{\pi}{180}をかけるとラジアンに直せます。」とあり,「* pi / 180」と対応します.ただし,かけ算とわり算の順序を交換してsin(30 / 180 * pi)という式にすると,C言語では,30/180が「整数÷整数」で,結果も整数,具体的には0ですので,sin(0 * pi)の結果も0となってしまいます.
 弧度法を適切に理解して,正五角形を描くと,次のようになります.

 ラジアンで表すのを忘れていて,sinなどを呼び出して座標を求めると,次のようになってしまいます.


 関連:

一点,注意してほしいことがあります.『ビットとバイトを混同しないこと』です」

あるネットワークを使用して,3.6MBのファイルをダウンロードするのに1.8秒かかったとき,ネットワークの回線速度は何Mbpsか.

「という問題に対して,3.6÷1.8=2だから,答えは『2Mbps』,とすると間違いです.求めた値は『2MB/s(メガバイト毎秒)』であって,Mbps,メガビット毎秒では,ないのです.
 『転送速度 = データ量 ÷ 時間』の式に当てはめる前に,データ量は『ビット』にしておくことを,お勧めします.3.6MBをビットにすると,8倍して,28.8Mbitです.秒の1.8で割ると,割り切れて16と求められ,『16Mbps』が正解となります」

 値の最初の「200.000,20.000」は,画像中央の座標を(200,200)としたとき,そこから上に180だけ移動した座標と見ることができます.「371.190,144.377」は自明ではありませんが,中央を原点とする極座標で考えると,見えてきます.

 ワンモア:

  • Wolfram|Alphaでは,sin(30)sin(30 degree)も,結果は0.5です.しかし「sin(30)-sin(30 degree)」は0ではありませんし,sin(1)とsin(1 degree)では結果が異なります.