読者です 読者をやめる 読者になる 読者になる

ふたつずつ

なにかわからない数列がある場合、順番に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…

円を描く

cir=:0 & o. a=:1r100 * i:100 plot a; (cir a) ,:(- cir a) 解説:o.(オードット)という関数は、左側引数が1だと三角関数のsin、2だとcosです。 0のとき、1から右側引数の2乗を引いたもののルート(2乗根)を返します。 つまりにおける、xの値に対するyの値を…

グラフを重ねる

load 'plot' plot x; y でグラフが描ける。xは省略可。 考え方のコツとしては;(セミコロン)でボックス化された引数と考える。 yとzのグラフを重ねる場合は、 plot x; y ,: z とする。考え方としては二つ目のボックスの中に、2行データがある感じ。 従って、…

パスカルの三角形

ウィキペディアでパスカルの三角形を引くと、次のように説明されています。 二項展開における係数を三角形状に並べた物である。 この三角形の作り方は単純なルールに基づいている。 まず最上段に1を配置する。 それより下の行はその位置の右上の数と左上の数…

問題

Q.0 1 2 0 1 2 0 1 2という数列を作れ 3 | i.9 0 1 2 0 1 2 0 1 2 関数(動詞)の|(バー、たてぼう)は、左側引数で右側引数を割った余りを算出します。 Q.1 2 3 1 2 3 1 2 3という数列を作れ 1 + 3 | i.9 1 2 3 1 2 3 1 2 3 >: 3 | i.9 1 2 3 1 2 3 1 2 3 イン…

ベクトルから行列を作る

Q.ベクトルa=,.(1 2),とb=,.(3 4)を演算によって、d=2 2$1 3 2 4にできるか? えっと、ベクトルPQとRSの交点の座標、というような場合、分母に tex: (b_1 - a_1)(d_2 - c_2) - (b_2 - a_2)(d_1 - c_1)] というような式がよく出てきます。この式は規則性があ…

多項式によるサインカーブ

Kenneth Iversonを読んでいたら、次のような例題がありました。 (MATH for the LAYMAN http://www.jsoftware.com/jwiki/Books#MathfortheLayman) fc=: 1 0 _1r2 0 1r24 0 _1r720 0 1r40320 & p. fs=: 0 1 0 _1r6 0 1r120 0 _1r5040 & p. x=: 1r3*i:10 plot x…

係数(coefficient)

Q.coefficient(係数)とは何ですか? の場合の5を係数(coefficient)と呼びます。 J言語による実験。 5*4^3 320 x=:4 5*x^3 320 0 0 0 5 p. x 320 1 2 3 p. x 57 1 + (2*x) + (3*x^2) 57 Q.の他の要素の名称を教えてください。 xは変数(variable)または引数(ar…

くもん式

以前にも書いたかも知れないアイデアですが、小学生の塾でくもんしきというのがあります。 これを高等数学でもやれないか。 要するに、3 + 4= 7のような単純計算の繰り返しがあるのだったら、を解けというのの繰り返しがあってもいいのではないか。 計算はめ…

ゼロ乗はなぜ1か

APLやJ言語を作った亡きKenneth Iversonを読んでいたら、次のような表がありました。(MATH for the LAYMAN) 2 3^table i:5r1 +-+---------------------------------------+ |^| _5 _4 _3 _2 _1 0 1 2 3 4 5| +-+---------------------------------------+ |2…

ベクトルPQとRSの交点

なるほど高校数学 ベクトルの物語 というブルーバックスの比較的最初の方(53ページ)に次のような問題がありました。 問題:2点P、Qを通る直線と、別の2点R、Sを通る直線との交点を求めよ。 解答はつぎのような結果です。 がPの座標で b, c, d がそれぞれ Q, …

Network Analysis

ネットワークの流量とスループットの関係はAloha法では、下記の式になる。 tex: S = Ge^{-G}] これをJで表すと下記のようになる。 (* ^@-) 0 1 2 3 0 0.367879 0.270671 0.149361 ネットワークの流量Gが1のとき最大で37%のスループットである。 というような…

2の64乗で地球の重さになるか

地球の質量は 5.974 ×1024 kgである おコメの重さは米粒1000粒で23g 2 ^. x: (5.973 * (10 ^ 24) * 1000) % (23 % 1000) 97.7127 97.7乗しないと地球の重さにならない 64乗で地球の重さの何分の一か? ( (2 ^ 64) * (23 % 1000)) % (5.973 * (10 ^ 24) * 100…

新聞紙で月に行く

新聞を何回折りたたんだら月に行く厚さになるか という問で、42回で38万キロメートルになる と書いてあります まず検算ですが、その前に新聞の厚さとか、月までの距離が38万キロメートルでいいかとか、ミリと万キロの単位のこととかを考えます サイトを検索…

倍になる成長率(利率)

7%の成長率(利率)で10年で倍になると言います。 これを検算。 1.07 ^ 10 1.96715 ちょっと足りないですね。 そう言えば、7.2%という数字も聞いたことがある。 1.072 ^ 10 2.00423 こんどは大きすぎる。 ということは、10乗したら2.0かっきりになる数字を求め…

黄金比

ウィキペディアによると黄金比は、下記の式で算出される。 tex:\Large x = \frac{1 + \sqrt 5}{2}] またはの正の解とのこと。 これをJ言語でやってみる %: 5 2.23607 (%: 5) 2.23607 (1 + (%: 5)) % 2 1.61803 x =: (1 + (%: 5)) % 2 x 1.61803 (x ^ 2) = (x…

数列

ただ1が10個並んだ数列を考えます 10 $ 1 1 1 1 1 1 1 1 1 1 1 これに+/\(プラススラッシュ逆スラッシュ)を作用させると、あたまから順に足したものの数列が得られます。 +/\ 10 $ 1 1 2 3 4 5 6 7 8 9 10 これにさらに+/\(プラススラッシュ逆スラッシュ)を…

単位行列

単位行列、たとえば3行x3列の単位行列を作るときにどうしますか? 3 3$1 0 0 0 1 0 0 0 1 0 0 0 1 と書くのを読んだことがあります。 これは$(ドルマーク、シェイプ)の左で指定したシェイプに右側の数列が入れられていって、不足分は繰り返されるというルー…

数え上げ(続き)

9つのものを袋に分ける分け方は何通りあるか?という問題について、「数え上げ理論」本に書いてあったアルゴリズムで、友人がJAVAで書いてくれました。答えは手で数えたものと合っています。とりあえずこのままJ言語に翻訳してみようと思う(予定)。 int p(in…

数え上げ

「数え上げ理論」というブルーバックスの真ん中あたりを開いたら、9つのものを袋に分ける分け方は何通りあるか?という問題が載っていました。 本を真ん中から読むというのはよくやります。 推理小説の最初と最後だけ読むというのもたまにやります。 9つのも…

行列積

とある本で行列の積の定義があって、例としてつぎのような行列A、Bの積を行っていました。 B 0 3 1 4 2 5 A 6 8 7 9 B mp A 21 27 34 44 47 61 さて、通常J言語で3x2(3行2列)の行列を作ろうと思うと、次のようにします。 i.3 2 0 1 2 3 4 5 これが例のBと微…

ベクトルと角度

ベクトルa = (a1, a2)とベクトルb = (b1, b2)の成す角度θを求めよ。 ベクトルの内積(dot product)はa1*b1 + a2*b2である。 これをa dp b = a1*b1+a2*b2と書くものとする。 ベクトル自身の内積はベクトルの長さの二乗になる。 a dp a = a1*a1 + a2*a2 b dp b …

固有値例題

固有値を解くのが楽しいので、ネットで「固有値 例題」でヒットしたサイトの例題を解いてみます。 http://next1.msi.sk.shibaura-it.ac.jp/MULTIMEDIA/linearalg02/node14.htm ]a=:3 3$3 0 0 0 2 _5 0 1 _2 3 0 0 0 2 _5 0 1 _2 3 Naigen a _3 1 _3 1 p. 3 N…

ル・ヴェリエ、ファデーエフ法

中野先生の固有値の論文を順々に読んでいったら、ル・ヴェリエ、ファデーエフ法というのが出てきました。 これがとても優秀のようです。 とりあえず転載。 NB. Leverrier-Faddeev Algorithm char=: 3 : 0 X=.I=.=@i.n=.#y[p=.1 for_k. >:i.n do. X=.y +/ . *…

固有値問題(3)

固有値問題の実例をやってみます。 ]a=:4 4$1 3 5 7 1r3 1 1 5 1r5 1 1 3 1r7 1r5 1r3 1 1 3 5 7 1r3 1 1 5 1r5 1 1 3 1r7 1r5 1r3 1 この4x4の行列はExcelで学ぶAHP入門という本の最初の例で、スポーツクラブを選択する際に、費用、施設・環境、交通の便、…

固有値問題(2)

つまらないことでひっかかっていましたが、ようやく動くようになりました。 すごい! あとで実例はお見せしますが、下記のプログラムで多次元の固有値問題を解いてしまいます。 ひっかかっていたのはプログラム中にタブがあるとエラーになってしまうことに気…

固有値問題(1)

数学や統計の本を読んでいると固有値というのが出てきますが、APL/J言語でどうやって解くのだろうと思っていました。英語ではなぜかドイツ語みたいな単語でeigenvalueと呼ぶらしいのですが、英語でも日本語でも調べていてしっくりこないでいたところ、ネット…

分数を小数に戻す

J言語では有理数をあつかえてとても気持ちがいいのですが、このときx:(エックスコロン、extended precision)という動詞を使います。 2 % 3 0.666667 x: 2 % 3 2r3 ここで2r3とかが分数(fraction)です。分数のままで普通の計算ができます。自動的に約分されて…

ブール代数

(=/; +./; *./; ~:/; -.@=/; =&.-./)~ 0 1 +---+---+---+---+---+---+ |1 0|0 1|0 0|0 1|0 1|0 1| |0 1|1 1|0 1|1 0|1 0|1 0| +---+---+---+---+---+---+ =(イコール)は同じかどうかのテストですのでブール代数としてもそのまま使える。 +.(プラスドット)はO…

離散数学

J言語のテキストを読んでいたら、有限数学(finite mathematics)という言葉がありました。連続体ではなく、数え上げる数学というような意味で使われていたのを調べたところ、現在ではこの言い方よりも離散数学(discrete mathematics)というらしい。本屋に行く…

アッカーマン関数

アッカーマン関数(Ackermann's function)とは、非負整数 m と n に対し、 によって定義される関数のことである。 参考: tex:Ack(m, n)=\{\begin{array}n+1,&if\quad m=0\\Ack(m-1,1),&if\quad n=0\\Ack(m-1,Ack(m,n-1)),& otherwise\\\end{array}] というの…

三角形を描く

J言語にはグラフィックユーティリティが付いてきて、自由自在にフラクタルなどが描けるようです。それはそれですごいことなのだと思うのですが、とりあえず単純な不定形の三角形を描きたい、と思いました。 デモやLabsを見ると、フラクタルだけでなく、グラ…

コードゴルフ(素数を数えて落ち着くんだ)

あるところ(http://d.hatena.ne.jp/atomoharu/20090420/1240227378)でCode Golfをやっていて、面白い課題がありました。 2から任意の数までの中でランダムに5個素数を表示し合計も出す。 5個の中に重複した素数があってもよい。今回は100まで。プログラム中…

ForkとHookのまとめ

J言語やらない人にはなんだかわからないと思うけど、まとめです。 特に記憶しないと使えないということはないのですが、毎回試行錯誤してるのでメモしておきます。 (f g) y => y f (g y) cf.(+ tax) 50 x (f g) y => x f (g y) (f @: g) y => f (g y) x (f @…

コミュート(交換)

二項動詞のあとに~(チルダ)をつけると、右側引数と左側引数を交換できます。xとyを引数として、fを関数とすると、x f~ yはy f xと同じ意味である、というような説明になります。 }(右ブレイス、右波かっこ、アイテムアメンド)という動詞があって、配列の要素…

関数の作成

J言語の本を読んでいたら、次のような課題がありました。 f(n) = 5 n - 1 をJ言語で表現せよ。 1〜10 の数列について、実行し、一覧表にせよ。 回答は次のようなものでした。 N =: ] F =: (5: * N) - 1: i =: >: i.10 i ,: F i 1 2 3 4 5 6 7 8 9 10 4 9 14 …

ライフゲーム

APLで書かれたライフゲームをJ言語に翻訳しようとしています。 もとのプログラムはこれ。 life ← {↑1 ω∨.^3 4=+/,潤イ1 0 1∘.Θ潤イ1 0 1∘.Φ⊂ω} なにがなんだかわかりませんね。 しばらく放っておいたのですが、動画で検索したら、解説付きのところがあったので…

靴下問題

数学、パズルで、靴下問題と呼ばれる問題があって、黒と茶色の靴下が引き出しに入っているのを暗闇で取り出すのに最低何枚で同じ色がそろうか、というのがあります。答えは3枚です。3色ならば4枚、4色なら5枚ですね。これはこれでおもしろい。 さて、わたし…

2の100乗

昨日の2の64乗の記事に関連して、100乗までの一覧表を作りたいと思いました。 すぐできてしまったので、ご紹介。思いついてから1分。 hundred =:x: ,.>:i.100 hundred ; 2 ^ hundred +---+-------------------------------+ | 1 | 2 | | 2 | 4 | | 3 | 8 | |…

2^64はどれほど大きな数か?

APL/J言語の記事を読んでいて、「2^64はどれほど大きな数か?」というのがありました。 2^64 1.84467e19 2^64x 18446744073709551616 というような拡張数字(xつき整数)の話なのですが、なんで64乗なのかと考えると、チェス番が8x8で64マスなんですね。たしか…

重複のある順列

雑誌ニュートンに確率の特集がありました。その中に、「サイコロを3回振って、9になる確率と10になる確率のどちらが高いか?」というのがありました。むかしからギャンブラーを悩ませていた問題で、9になる場合の組合せ6通り(126 135 144 225 234 333)、10に…