2001-02-01から1ヶ月間の記事一覧

APL/J言語:@(アトマーク、アトップ接続詞)

接続詞の@(アトマーク、アトップ接続詞)は二つの動詞からひとつの動詞を作りますが、ひとつ目を実行してからふたつ目を実行するのと同じ結果になります。次の例を見て下さい。 TriplePowersOf2=: (3&*)@(2&^) TriplePowersOf2 0 1 2 3 4 3 6 12 24 48 CubeOf…

APL/J言語:&(アンド、ボンド接続詞)

ボンド接続詞(コンジャンクション) ^(キャレット、べき乗)のような二項動詞を使うと一連の単項動詞の機能を提供できます。 ]b=: i.7 0 1 2 3 4 5 6 b^2 NB.二乗 0 1 4 9 16 25 36 b^3 NB.3乗 0 1 8 27 64 125 216 b^0.5 NB.二乗根 0 1 1.41421 1.73205 2 2.2…

APL/J言語:プログラム

演奏会で渡されるプログラムは演奏される曲目の名称や解説です。語源的にはgramとproから成っていて、プログラムとはそこに書かれていることが起きる以前に書かれるもののことです。 その意味で、前章で述べたフォークの+/ % #は実際に文として(+/%#)bという…

APL/J言語:フォーク

前章で述べたように、3つの動詞がひとつながり(sequence)となって前後から独立している場合をフォーク(fork)と呼び、単項動詞の場合と二項動詞の場合、下記のように定義できる。 g g / \ / \ f h f h / \ / \ y y x y x y 図は、視覚的なイメージである。 以…

APL/J言語:句読点(パンクチュエーション)

英語では、文やフレーズをどの順序で解釈するかを示すために句読点が用いられます。 The teacher said he was stupid. The teacher, said he, was stupid. 数学は主にかっこを用いて解釈の順序を示し、実行順序と呼ばれます。かっこだけでなく、関数(演算子)…

APL/J言語:動詞と副詞

Jディクショナリー第3章の翻訳です。 前章での%aでは%(パーセント、わる)がaに作用して結果を出していました。これは英語で動詞が名詞や代名詞に作用するというのと類似しています。これまで数学用語の関数という言い方をしてきましたが、今後は関数というだ…

APL/J言語:トランスポーズ

J言語では配列やテーブルを自由自在に扱えます。テーブルのたてよこを入れ替える動詞に|:(たてぼうコロン、パイプコロン、トランスポーズ)があります。 (] ; |:) i.3 4 +---------+------+ |0 1 2 3|0 4 8| |4 5 6 7|1 5 9| |8 9 10 11|2 6 10| | |3 7 11| +…

APL/J言語:動詞のランク

動詞のランクは動詞が引数にどう作用するかを決定する。ランクkの単項動詞は引数のk-cellに作用する。左側ランクがklで右側ランクがkrの二項動詞は左側引数のkl-cellと右側引数のkr-cellに作用する。動詞のランクは配列を扱う動詞の振る舞いを制御する強力な…

APL/J言語:k-cell

k-cellという言い方がJ言語にあって、ランクkのセルをk-cellと呼ぶ、とJプライマーに書いてある。0-cellはアトム、1-cellはリスト、2-cellはテーブル、というぐあい。名詞のセルのランクが与えられれば、フレームは名詞のシェイプのそれ以外のものを指す、と…

APL/J言語:nub(重複を取り除く)

APL/J言語:nub(重複を取り除く) ほかの言語だとuniqと同じようなJ言語の動詞に~.(チルダドット、ナブ)というのがあります。nubは英和辞典で引くと要旨とか要点とかいう意味のようです。考えてみればuniqを重複を取り除く、という意味に使うのも無理な話でど…

APL/J言語:共役(conjugate)

J言語で+(プラス)を単項動詞として使うと引数の共役(きょうやく、conjugate)を返します。 複素数yは共役を掛けるとyの絶対値の二乗になります。 ]y=:3j4 NB.複素数 3j4 |y NB.絶対値 5 y * +y NB.yとyの共役を掛ける 25 +y 3j_4 3j4 * +3j4 25 3j4 * 3j_4 25…

複素共役

以下はWikipediaからの引用です。=== 複素共役(共役複素数) === が実数 ⇔ が純虚数 ⇔ (対合) 特に 。 特に、複素数 が実数係数の多項式 の根となるならば の共役複素数 も の根となることがわかる(1746年:ジャン・ル・ロン・ダランベール|ダランベール)…

APL/J言語:単項動詞vs.二項動詞

J言語では同じ記号が単項動詞として使われるときと、二項動詞として使われるときと意味が違います。単行動詞とは動詞(関数)の右側だけに引数がある場合で、二項動詞は動詞(関数)の左右に引数がある場合です。 このことをAPL/J言語用語でアンビバレンスと呼ぶ…

APL/J言語:ニーモニック

ニーモニックってなんだか懐かしい響きがあるな。昔機械語やアセンブラのことをニーモニックって言ってなかったっけ? APL/J言語もあのころの理論を引きずっているのかもしれません。 Jディクショナリーでは英語圏の人のようにはいかないよね。 75 NB.大なり…

ベーシックとしての用途

b.(ビードット)のベーシックとしての用途は、u b. yとした場合、yが_1ならばuのオブバースの表示(線形表示になります)、yが0ならば0 0 0というようなuのランクを示します。yが1ならばアイデンティティ関数の表示を行います。 ^ b. _1 ^. ^ b. 0 0 0 0 ^ b. 1…

ブール型

ブール型としては、単項動詞として使った場合、左側の引数がゼロの場合と同等。つまり、 m b. y ↔ 0 m b.y となる。二項動詞の場合: 二項動詞fを、d=:0 1について、d f/ d(または f/~ d)とすると、すべての場合についてを示す2x2のテーブルが作成される。or…

APL/J言語:b.(ビードット、ブール型、ベーシック)

b.(ビードット)はブール型の用途と、ベーシックの用途の二通りがあります。

APL/J言語:b.(ビードット、ベーシック)

Jボキャブラリーのb.(ビードット、ベーシック)のところを読みます。(翻訳) u b. yはyが_1(マイナスいち)ならば、uのオブバースの線形表現、yが0ならば動詞uのランク,yが1ならばuの固有関数の線形表現。 (翻訳終り)例によってわかりません。例をみます。 ^ b.…

APL/J言語:オブバース(obverse)その2

Jボキャブラリーの:.(コロンドット、オブバース)のところを読みます。(翻訳) u :. vの結果がuでありかつオブバースをとるとvである、というように使う。接続詞&.(アンドドット、アンパーサンドドット)および^:(キャレットコロン、繰返し)においてはインバー…

APL/J言語:オブバース(obverse)その1

オブバースというのがあってたぶん逆関数のことで、たとえば自乗の逆関数はルート(自乗根)、掛け算の逆関数は割り算とか思うのですが、Jディクショナリーはもう少しややこしい言い方をしている。わたしの言う意味の逆関数はインバースであり、オブバースはそ…

APL/J言語:J言語の特徴

Jディクショナリー(Roger K. W. Hui, Kenneth E. Iverson) のイントロにJ言語の特徴として7項目挙げてあります。わたしはまだ勉強始めたばかりですが、この7項目に非常に納得が行ったので、書き留めておきます。 1.原始関数(primitives)は1文字か2文字から…

APL/J言語:&(アンパーサンド、アンド記号)

&(アンパーサンド、アンド記号)が動詞と動詞にある場合の用法について。J言語のボキャブラリーのコンポーズというところを読み進みます。 u&v yはu v yと同値。したがって、+:&- 7は_14になる。さらに、u&vはu@vと同じである。 これはわかりやすい。つぎ。 x…

フィボナッチ数列

Wikipediaによるとフィボナッチ数列は と定義されています。これは再帰(リカーシブ)による定義で、rubyだとそのまま、 def fib(n) if n と表記できますが、あまりJ言語向きの課題ではないのではないでしょうか。そんな気がします。 しかし、Eazy Jの第7章は…

APL/J言語:ベース変換

Easy Jの第6章は「可能性を調べる」という表題で、まず課題が述べられます。 「仮に、ふた通りの選択がありうる状況とする。それぞれについて、なにかが受け入れられるか拒絶されなければならない。たとえばオニオンをいれる(またはオニオン抜き)、チーズ、…

APL/J言語:ボックス

Easy Jは少し変な本ですが、いろいろ面白いです。 今回は第5章の「ボックスとレコード」についてです。 fname=.'Harry' sname=.'Potter' fpubl=.1998 shelfcode=.'childrens' (テーブルについて、ボックスにして並べると横にならぶ。 m=.i.3 4 ( domain erro…

APL/J言語:最小自乗法

Easy Jの第4章を読み中。 x,:y 2.1 2.4 3.6 3.7 4.3 5.1 5.5 5.8 5.9 6.6 7.4 8.2 4.1 6 5.5 8.2 7.5 12.6 8.1 10.8 7.2 13.1 11.3 15.6 というようなデータがあって、逆行列の%.(パーセントドット)を使って、 y%.x 1.78636 が最少自乗法による傾き曲線です…

APL/J言語:逆行列

質問:逆行列ってなんですか? Wikipediaに下記のような記述があります。 次正方行列に対して、 (は次単位行列)となる次正方行列)が存在するとき、は次正則行列、あるいは単に正則であるという。またこのとき、を 、の逆行列と呼びと書く。 うーん。なんだ…

APL/J言語:四則演算

J言語の四則演算の記号(+-*%)は割り算が%であること以外は意外にまともです。1を3で割ると0.333333になるあたりはかえってプログラム言語がこんないいかげんでいいの? と心配になるくらい普通。 3 + 4 7 7 - 4 3 3 * 4 12 12 % 4 3 1 % 3 0.333333 次から普…

APL/J言語:初めは足し算

初めは足し算だけがあったのだろうと思う。引き算は足し算の逆だし、掛け算は足し算の繰り返し。割り算は掛け算の逆。 3 + 4 7 7 - 4 3 3 + 3 + 3 + 3 12 3 * 4 12 12 % 4 3 負の数という概念があります。売り値より仕入れ値が高いので赤字とか、儲けがマイ…