APL/J言語

余弦定理3

p.16 池をはさんだ地点B、C間の距離BCを求める。AB=10m、AC=9m、角BAC=63°である。 deg=:(1p1%180)&* deg 180 3.14159 c=:10 [ b=:9 [ A=:63 ]a=:%:(2*b*c*2 o.deg A)-~(c^2)+b^2 9.96402 答え:約10m 例1:三角形ABCにおいて、である。よって、 と表される…

三角関数

余弦定理を用いて解く。 p.15 例題:三角形ABCにおいて、b=7、c=6、A=120°のとき、aを求める。 deg=:(1p1%180)&* b=:7 c=:6 A=:120 b^2 49 c^2 36 (c^2)+b^2 85 2*b*c*2 o.deg A _42 (2*b*c*2 o.deg A)-~(c^2)+b^2 127 ]a=:%:(2*b*c*2 o.deg A)-~(c^2)+b^2 1…

ポーランド記法

前回の余弦定理をAPL/J言語で表記しようとしていて、HP電卓の逆ポーランド記法やLips(Scheme)のポーランド記法だったらどうするのだろうとか、なぜHP電卓やLips(Scheme)では問題ないのにAPL/J言語でつまずいているのかとか、思いついたので考察します。 余弦…

三角関数

p.14 余弦定理 三角形ABCで2辺の長さb、cとその間の角Aがわかっているとき、残りの辺の長さaを求めることを考える。 APL/J言語は数学表記の革命みたいな面があるので、こういった証明問題もAPL/J言語で表記したい誘惑に駆られるのですが、むずかしいですね。…

三角関数つづき

p.12 正弦定理(law of sines) 三角形ABCで、頂点A、B、Cに対する辺の長さをそれぞれ、a、b、cとする。このとき次の定理が成立する。 ここでRは三角形ABCの外接円の半径である。 p.13 例題 三角形ABCで、、のとき (1) を求めよ。 (2) 外接円の半径Rを求めよ。…

三角関数つづき

p.6 角度が90°以上の場合のsin、cos、tanを考える。角度135°、線分の長さのとき、Pの座標は(-1, 1)なので、 となる。 角度135°、線分の長さのとき、Pの座標は(-3, 3)なので、 となり一致する。問:p.8 の場合に、とのときの点Pの座標を求め、三角比を計算せ…

三角関数つづき

p.5 問(1):x軸、y軸があって交点をOとする。x軸から30度の角度で、長さ2の線分OPがある。Pの座標と正弦、余弦、正接を求めよ。 deg=: (1p1%180)&* deg 180 3.14159 deg 30 0.523599 r=:2 ]y=: r*1 o. deg 30 1 ]x=: r*2 o. deg 30 1.73205 1 o. deg 30 NB. …

三角関数つづき

問1:長さ3mのはしごが壁に立てかけてある。はしごと地面のつくる角が56度であるとき、はしごが届いている高さと、はしごの端から壁までの距離を求めよ。y = r * 1 o. theta x = r * 2 o. theta を用いる。 theta =: deg 56 r =: 3.6 ]x=: r * 1 o. theta 2.…

三角関数つづき

テキスト4ページ目の例。ある人が木から10m離れた場所から木の頂点を見上げたところ、水平からの角度が23度であった。人の目の高さを1.5mとすると木の高さは何メートルか? y = x * 3 o. theta を用いる。 deg=:(1p1%180)&* deg 180 3.14159 10.0 * 3 o. deg…

三角関数(つづき)

2ページ目に入りました。 タンジェントをサインとコサインから計算します。 y = r * 1 o. theta x = r * 2 o. theta 3 o. theta = y%x 1行目と2行目のxとyを3行目に代入すると 3 o. theta = (1 o. theta) % (2 o. theta ) となります。 また、三平方の定理(…

三角関数(つづき)

まだ1ページ目です。1ページ目の下の方に角度が30度、45度、60度のときのサイン、コサイン、タンジェントの一覧を完成せよ、という問題があります。 theta =: 30 45 60 1 o. deg theta 0.5 0.707107 0.866025 2 o. deg theta 0.866025 0.707107 0.5 3 o. deg…

三角関数

三角関数がよくわからないので、ネットでテキストを調べてみたら、高知工科大学の基礎数学ワークブックの 「三角関数」がよくわからないときに開く本 というのが見つかりました。PDFでダウンロードできます。 これをAPL/J言語を片手に読んでみたいと思います…

number base conversion (ベース変換)

任意の数をn進数で表記したり、n進数表記の数を10進数の数に変換したりしたい。 具体的には0から9とaからzの36文字を36進数と考えると、 zz 1295 ということです。 36bzz 1295 36b1000 46656 x: 36bthisisapen 2994670252589855 これを逆に変換する関数を作…

定数

自然対数の底eや円周率piを含めた定数の取り扱いについてちょっとおもしろかったのでご紹介。 3e2 300 1.23e4 12300 アルファベットのイー(e)はこのように大きな数を指数表記するのに使われます。eはexponentの略ということです。 同じような考え方で、自然…

123て8進法でいくつ?

123(ひゃくにじゅうさん)は10進法で123です。 123は3が入っているので2進法や3進法ではありませんが、可能性としては4進法以上のn進法での数である可能性があります。 というわけで123に限ったわけではありませんが、数字列をn進法でいくつだろうと思うこと…

素数遊び

11は素数です。101も素数です。ところが1001以上はそすうではありません。 (,. a) ;q:a=:1}.1+10^i.22r1 +----------------------+------------------------------------------------------------------------+ | 11| 11 0 0 0 0 0 0 0| | 101|101 0 0 0 0 0…

eachbox

Math for the Layman by Kenneth Iverson を読んでいて、11章のGuessing gamesというところの1題目にeachboxというのが出てきます。 a=: 3 4 i. a 0 1 2 3 4 5 6 7 8 9 10 11 i.3 0 1 2 i.4 0 1 2 3 eachbox=: &.> i. eachbox a +-----+-------+ |0 1 2|0 1 …

減衰

Kenneth IversonのMath for the Laymanを読んでいたらdecay(減衰)の話が出てきてかわいいグラフが描けたのでご紹介。 load 'plot' decay=: ^ @ - @ (]%[) plot (sin * 6 & decay) 1r10 * i.300

isprime?

153とか157とか素数かどうかと考えたとき、それをチェックするプログラムをAPL/J言語で作りたいと思いました。153は3で割れるので素数ではありませんが、157は多分素数です。 q:153 3 3 17 q:157 157 APL/J言語には素因数分解する関数q:(キューコロン)があり…

重なりなしの二つずつ

数列から数字を二つずつ取り出して処理する方法を前回書きました。前回のは移動しながら取っていくもので、いわゆる移動平均などに使えるものです。 いっぽう、重なりなしでいくつかずつ処理したい場合はどうするか。 左側引数をマイナスにすると、重なりな…

ふたつずつ

なにかわからない数列がある場合、順番に2個ずつとって、その差とか出して分析すると思います。そのふたつずつとってという部分をAPL/J言語では次のように書きます。 a=:+/\ +/\ i.15 a 0 1 4 10 20 35 56 84 120 165 220 286 364 455 560 NB. This is an ex…

行列とボックス

質問: りんごは90円、みかんが50円、バナナが60円として、それぞれ3個、4個、20個あるとします。 これを表現せよ。 考察: りんごを1、みかんを2、バナナを3として、次のようなマトリックスにする。 apple=: 1 90 3 orange=:2 50 4 banana=:3 60 20 apple, o…

ダイアゴナル

ダイアゴナルというのは斜め、という意味らしいですが、APL/J言語に/.(スラッシュドット、ダイアゴナル)という副詞があります。直前の動詞に作用して、動詞をマトリックスの斜めに作用させます。 Math for the Layman by Kenneth Iversonに次のような例が載…

紙のサイズ

A4って何センチかける何センチだっけ? と思い出すのに計算でやってみよう、と思いました。 紙の寸法、というキーワードで調べたところ、全紙(A0判)の面積をとし、用紙を横半分に順次裁断していっても縦横比が常に一定になるように寸法が決められた、とのこ…

分数と小数

J言語では分数を扱えて便利ですが、分数は分数の不便さがあって、直感的には大きさがわかりません。 二分の三と三分の四はどちらが大きいかというと二分の三は1.5で三分の四は1.333なので二分の三の方が大きい。 J言語で分数をソートできるか実験してみまし…

サインカーブのテイラー展開

J言語でサインコサインはo.(オードット)という関数を使って、左側引数に1だとサイン、2だとコサインが計算できます。 先日書いた「多項式によるサインカーブ」http://d.hatena.ne.jp/niming538/20100106の係数をテイラー展開で算出できるのではないかと思い…

固有値

食玩問題の記事を読んでいたら次のような箇所がありました。 ただし Aの固有値を調べてみると5,4,3,2,1であることが簡単にわかる。 (参考)mimeTeXによる表記: tex: \left(\begin{matrix}{GC+23}P_5(n)\\P_4(n)\\P_3(n)\\P_2(n)\\P_1(n)\end{matrix}\right) …

実数の分数表記

すべての実数は次のように表すことができる tex:\Large N=a0+\frac{1}{a1+\frac{1}{a2+\frac{1}{a3+\frac{1}{a4+\dots}}}}] と物の本に書いてあります。 これがJ言語では、 pr=:[+1:%] と定義できるようです。(Kenneth Iverson) 以下実験です。 pr=:[+1:%] p…

2008乗

どこかの中学校の入試問題ということで、もとの問題はわかりませんが、わたしのところに回ってきたときは次のようになっていました。問:1から2008の整数をそれぞれ2008乗した答えをそれぞれ5で割ったあまりの合計を求めよパソコンで2008乗を計算しようとす…

冪級数(べききゅうすう)

ネットに落ちていたKenneth Iversonの"Math for the Layman"を読んでいたら、20章ある内の第5章がPower Seriesでした。Power Seriesってなにかな、と思って調べ中です。 Iversonのテキストでは、 A polynomial whose coefficients may be expressed as a fun…