犀角(Diceros Horn) 2006 02 12

とくながの「書き散らかし」です

ここは研究・調査・開発などの記録がメインのページです。 日常の雑事、読書記録は はてなダイアリー の方に書いています。よろしければそちらもどうぞ。

Sun, 12 Feb 2006

Java3D Behavior をボタンで On/Off するには

Behavior を Thread のように使ってアニメーションをするには

class TimerBehavior extends Behavior{
    WakeupOnElapsedTime won;
    
    public TimerBehavior(long sleep){
        won = new WakeupOnElapsedTime(sleep);
    }

    public void initialize(){
        wakeupOn(won);
    }

    // Thread.run() に相当
    public void processStimulus(java.util.Enumeration criteria){
        // ここで 3D の更新を行う
        wakeupOn(won);
    }
}
のような Behavior を継承したクラスを作成して addChild すればよい。 実行すると、sleep ミリ秒毎に 3D の更新を行ってアニメーションのように見える。 ただしこのままだと、動きっぱなしで制御することができない。

ボタンによって Behavior を On/Off するには postId() メソッドを用いて、 次のようにする。

  • Behavior の WakeupOnCriterion を WakeupOnElapsedTime と WakeupOnBehaviorPost の2種類用意する。
  • さらに現在どちらの WakeupOnCriterion を使っているかを判別するための flag を準備する。ここでは true のとき WakeupOnElapsedTime を呼ぶこと にする。
  • initialize() の中で、 wakeupOn() に WakeupOnBehaviorPost クラスのインスタンスをセットし、 flag を false にする。
  • processStimulus() メソッドで flag の値にしたがって、 次に wakeupOn() する WakeupOnCriterion を変更する。
Behavior の wakeupOn() は外から呼ぶことはできないが、postId() は外から呼ぶことができる。Behavior を On するには、
  • flag を true にする。
  • この Behavior クラスのインスタンスの postId() メソッドを呼ぶ。
とすればよく、Off するには、
  • flag を false にする。
だけでよい。

具体例で言うと、Behavior のほうは

class TimerBehavior extends Behavior{
    private WakeupCriterion awtWakeon,timeWakeon;
    boolean flag;  // true のときは timeWakeon を待つ

    public TimerBehavior(long time){
        timeWakeon = new WakeupOnElapsedTime(time);
	awtWakeon = new WakeupOnBehaviorPost(this,
                                             MouseEvent.MOUSE_CLICKED);
    }

    public void initialize() {
        wakeupOn(awtWakeon);
        flag = false;
    }

    public void processStimulus(java.util.Enumeration criteria) {
        if(flag){
            // ここでアニメーションの処理をする
            wakeupOn(timeWakeon);
	}else{
            wakeupOn(awtWakeon);
	}
    }
}
のようにする。 TimerBehavior のインスタンスを behavior とするとき、 呼び出すメソッドは VirtualUniverse や Applet のなかに
    public void stopBehavior(){
	behavior.flag = false;
    }

    public void startBehavior(){
	behavior.flag = true;
	behavior.postId(MouseEvent.MOUSE_CLICKED);
    }
のように記述する。このメソッドをボタンを押したときの actionPerformed() で呼べばよい。

posted at 22:16 | category: /Java/Java3DTips | 固定リンク(Java3D Behavior をボタンで On/Off するには)

Java3D Material

Material の属性の意味。

  • ambient 周囲の色
  • diffuse 反射の色
  • emissive 放射する色
  • specular 鏡の色

posted at 22:14 | category: /Java/Java3DTips | 固定リンク(Java3D Material)

Java3D Transform3D の set メソッドの具体的仕様

Transform3D ではその状態を、4行4列の行列、3行3列の行列、3次元のベクトル、 4元数で設定することができます。それぞれの間の関係をまず調べてみます。 4行4列の行列が一番情報量が多いので、おそらく4行4列の行列で表現すれば いいはず。set() メソッドがその他の形式から4行4列の行列への写像を与えてい ると考える。

  • スカラーから set(double scale)
    s  -> [s 0 0 0]
          [0 s 0 0]
          [0 0 s 0]
          [0 0 0 1]
    
  • 3次元ベクトルから set(Vector3f trans)
    [x0]  -> [1 0 0 x0]
    [x1]     [0 1 0 x1]
    [x2]     [0 0 1 x2]
             [0 0 0 1 ]
    
  • スカラーと3次元ベクトルから set(double scale, Vector3d v1)
    s,[x0]  -> [s 0 0 x0]
      [x1]     [0 s 0 x1]
      [x2]     [0 0 s x2]
               [0 0 0 1 ]
    
  • 3次元ベクトルとスカラーから set(Vector3d v1,double scale)
    [x0],s  -> [s 0 0 s*x0]
    [x1]       [0 s 0 s*x1]
    [x2]       [0 0 s s*x2]
               [0 0 0 1   ]
    
  • 3行3列の行列から
    [m00 m01 m02] -> [m00 m01 m02 0]
    [m10 m11 m12]    [m10 m11 m12 0]
    [m20 m21 m22]    [m20 m21 m22 0]
                     [0   0   0   1]
    

4元数は Quat4d では、フィールド x、y、z、w で表しているが、これは 数学の書き方をすると、

(x,y,z,w) = w + xi + yj + zk = q
である。4元数 q の随伴表現で、4元数の虚成分 (Sp(1)のリー環)に作用したものと考える。すなわち 4元数 q が3次元ベクトル v = (v1,v2,v3) に対して
 q(v) = q v q-1 
で作用する。この作用は q に対して一意ではないことに注意する。 これが set(Quat4d q) に他ならない。
[x] -> [(x*x-y*y-z*z+w*w)/r 2*(x*y-w*z)/r        2*(x*z+y*w)/r        0]
[y]    [2*(x*y+w*z)/r       (-x*x+y*y-z*z+w*w)/r 2*(y*z-x*w)/r        0]
[z]    [2*(x*z-y*w)/r       2*(y*z+x*w)/r        (-x*x-y*y+z*z+w*w)/r 0]
[w]    [0                   0                    0                    1]
ただし r = x*x + y*y + z*z + w*w となる。

posted at 22:12 | category: /Java/Java3DTips | 固定リンク(Java3D Transform3D の set メソッドの具体的仕様)

Java3D Behaviorについて

Behavior とは抽象クラスで、initialize() と processStimulus() メソッド を実装して用いる。これも Java3D の Node を継承しているので、 木構造に addChild() して使う。

initialize() は初期化をする。 processStimulus() は wakeupOn(WakeupCriterion criteria) によって 設定された起動条件 criteria が満たされたときに呼ばれるメソッド。

普通 initialize() のなかで wakeupOn() を呼び出し、最初の起動条件を 設定する。接待条件を満たすたびに processStimulus() を実行したいときは processStimulus() の中で再度 wakeupOn() を呼び出す。

criteria で記述された条件や processStimulus() で記述された動作によって アニメーションやマウスやキーボードなどのユーザインターフェースを 実現することができる。

実は PickMouseBehavior や Interpolator も Behavior の継承クラス。

Behavior で Animation をするには

WakeupCriterion に指定時間の経過後に起動する WakeupOnElapsedTime もしくは Frame が描き終わったときに起動する WakeupOnElapsedFrame を使うとよい。

posted at 22:09 | category: /Java/Java3DTips | 固定リンク(Java3D Behaviorについて)

jar の使い方

jar でクラスファイルを固めるには

ほぼ tar コマンドと同じように使えばよい。

$ jar cvf jarfile classfiles

jar で固めたファイルをアプレットタグに使うには

<APPLET  CODE="MainApplet" ARCHIVE="hogehoge.jar" WIDTH="800" HEIGHT="500" >
のように ARCHIVE パラメータを設定する。

jar で固めたファイルを実行するには

まず、jar で固めるときに manifest ファイルを指定して どのクラスの main メソッドを実行するかを指定する。 例えば MainClass と言う名前のクラスの main メソッドを実行する場合は manifest ファイルは次のように書く。
Manifest-Version: 1.0
Created-By: 1.3.1 (Sun Microsystems Inc.)
Main-Class: MainClass
これを適当な名前で保存して、jar で固めるときに次のように
$ jar cvfm jarfile manifestfile classfiles
このファイルを指定する。

実行するときには、java コマンドの -jar オプションをつければよい。

$ java -jar jarfile

このときはクラス名をつける必要はない。クラス名は jar ファイルの中の manifest ファイルの情報から自動的に取り出される。

posted at 22:07 | category: /Java/tips | 固定リンク(jar の使い方)

Canvas3D のイメージを取りだす

Canvas3D の画面をキャプチャーして、 BufferedImage に代入するには、Canvas3D クラスの適当なメソッドの中で

        BufferedImage image = new BufferedImage(getSize().width,
                                  getSize().height,
                                  BufferedImage.TYPE_INT_ARGB);
        ImageComponent2D imageComponent =
            new ImageComponent2D(ImageComponent.FORMAT_RGB, image);
        Raster raster= new Raster(new Point3f(-1.0f, -1.0f, -1.0f),
                           Raster.RASTER_COLOR, 0, 0, image.getWidth(),
                           image.getHeight(), imageComponent, null);
        getGraphicsContext3D().readRaster(raster);
        image = raster.getImage().getImage();

のようにする。Raster は javax.media.j3d パッケージの Raster を使う。

        getGraphicsContext3D().readRaster(raster);

と言う文で、GraphicsContext2D の内容を raster が参照している ImageComponent2D に書き出す。メソッド名は read だが、実際には 書き出していることに注意する。

posted at 21:58 | category: /Java/Java3DTips | 固定リンク(Canvas3D のイメージを取りだす)

Canvas3D の On-screen と Off-screen

Canvas3D の API のマニュアルには On-screen Rendering vs Off-screen Rendering と言う記述があるが、ここで何を述べているかを調べよう。

  • Off-screen か On-screen かはコンストラクタで指定する。
  • 調べるには isOffScreen() メソッドを使う。
  • Off-screen Canvas3D は Container に追加することはできない。 add() で追加しようとすると、new していても NullPointerException が投げられる。
  • setOffScreenBuffer() で OffScreen の画像を保存するための Buffer の設定をする。
  • renderOffScreenBuffer() すると、その Canvas3D がつながっている View から見た VirtualUniverse の様子を setOffScreenBuffer で指定した Buffer に保存する。これを実行した後に Buffer の内容を利用する。 Buffer にアクセスするには getOffScreenBuffer() を使う。
  • renderOffScreenBuffer() を実行する前に、OffScreen の Screen3D の Size と PhysicalScreenSize を設定しなければならない。
  • postSwap() メソッドは Canvas3D が更新されるたびに呼ばれる。 したがって、別の画面に Canvas3D の更新結果を反映させたい命令は この中に書く。ただし、かなり遅くなってしまうので、10回に1回 ぐらい更新するのがいいかもしれない。

posted at 21:57 | category: /Java/Java3DTips | 固定リンク(Canvas3D の On-screen と Off-screen)

J3DBuffer の使用例

Java3D 1.3 より GeometryArray で setCoordRef3f(Point3f[] coords) などの Point3f の配列の参照によって座標を設定することが 推奨されなくなった。かわりに J2SDK 1.4 より導入された java.nio パッケージの Buffer クラスを用いた(継承したわけではない) J3DBuffer クラスを用いて座標を設定する setCoordRefBuffer(J3DBuffer coords) メソッドが追加されている。

これを用いてトーラスを作成した例を以下にあげる。 J3DBuffer オブジェクトを作成するときに、 対応する Buffer は ByteOrder を nativeOrder として設定しなければエラーがでる。

class Torus extends Shape3D{
    IndexedGeometryArray geometry;
    int rad = 10;
    int lng = 100;

    Torus(){
        geometry = new IndexedQuadArray
            (rad*lng,
             IndexedQuadArray.COORDINATES|
             IndexedQuadArray.NORMALS|
             IndexedQuadArray.BY_REFERENCE|
             IndexedQuadArray.USE_NIO_BUFFER,
             4*rad*lng);
        double[] coord = new double[3*rad*lng];
        float[] normal = new float[3*rad*lng];
        double core = 0.1;
        for(int i=0;i<lng;i++){
            for(int j=0;j<rad;j++){
                coord[3*(i*rad+j)]   
                    = Math.cos((double)i*2*Math.PI/lng)
                    + core * Math.cos((double)i*2*Math.PI/lng)
                    * Math.cos((double)j*2*Math.PI/rad);
                coord[3*(i*rad+j)+1]   
                    = Math.sin((double)i*2*Math.PI/lng)
                    + core * Math.sin((double)i*2*Math.PI/lng)
                    * Math.cos((double)j*2*Math.PI/rad);
                coord[3*(i*rad+j)+2]   
                    = core * Math.sin((double)j*2*Math.PI/rad);
                normal[3*(i*rad+j)]   
                    = (float)(Math.cos((double)i*2*Math.PI/lng)
                    * Math.cos((double)j*2*Math.PI/rad));
                normal[3*(i*rad+j)+1]   
                    = (float)(Math.sin((double)i*2*Math.PI/lng)
                    * Math.cos((double)j*2*Math.PI/rad));
                normal[3*(i*rad+j)+2]   
                    = (float)(Math.sin((double)j*2*Math.PI/rad));
            }
        }
        ByteOrder order = ByteOrder.nativeOrder();
        DoubleBuffer indexedCoordBuffer 
            = ByteBuffer.allocateDirect(coord.length * 8)
            .order(order).asDoubleBuffer();
        indexedCoordBuffer.put(coord);
        J3DBuffer j3dCoordBuffer = new J3DBuffer(indexedCoordBuffer);
        geometry.setCoordRefBuffer(j3dCoordBuffer);

        FloatBuffer indexedNormalBuffer 
            = ByteBuffer.allocateDirect(normal.length * 4)
            .order(order).asFloatBuffer();
        indexedNormalBuffer.put(normal);
        J3DBuffer j3dNormalBuffer = new J3DBuffer(indexedNormalBuffer);
        geometry.setNormalRefBuffer(j3dNormalBuffer);

        int[] index = new int[4*rad*lng];
        for(int i=0;i<rad;i++){
            for(int j=0;j<lng;j++){
                index[4*(rad*j+i)  ] = rad*j+i;
                index[4*(rad*j+i)+1] = rad*((j+1)%lng)+i;
                index[4*(rad*j+i)+2] = rad*((j+1)%lng)+(i+1)%rad;
                index[4*(rad*j+i)+3] = rad*j+(i+1)%rad;
            }
        }
        geometry.setCoordinateIndices(0,index);
        geometry.setNormalIndices(0,index);
        setGeometry(geometry);

        Appearance app = new Appearance();
        Material mat
            = new Material(new Color3f(0.0f, 0.0f, 0.0f), // ambient
                           new Color3f(0.0f, 0.0f, 0.0f), // emmisive
                           new Color3f(0.65f, 0.65f, 0.65f), // diffuse
                           new Color3f(0.45f, 0.45f, 0.45f), // specular
                           64f);
        app.setMaterial(mat);
        setAppearance(app);
    }
}

DoubleBuffer を作るときは、double = 8 byte なので、 double の配列の大きさの 8 倍の大きさを確保する必要がある。

        DoubleBuffer indexedCoordBuffer 
            = ByteBuffer.allocateDirect(coord.length * 8)
            .order(order).asDoubleBuffer();

posted at 21:54 | category: /Java/Java3DTips | 固定リンク(J3DBuffer の使用例)

Java3D のいくつかの雛型

複数の View を出力するために SimpleUniverse ではなく VirtualUniverse を継承して作ることにしました。 そのための雛型です。

  • MyUniverse.java
    VirtualUniverse を拡張して、 その上に Java 3D の基本的な Tree 構造をのせたもの。
  • NodeLoader.java
    MyUniverse.java とほぼ同じだが、Shape3D や BranchGroup などを直接読み込むことが可能。デバッグ用に。
  • TimerBehavior.java
    アニメーション用の Behavior。アニメーションを On/Off する メソッドも備えている。
  • CapturedCanvas3D.java
    Canvas3D の内容を Jpeg ファイルに書き出すメソッドを追加。

posted at 21:37 | category: /Java/Java3D | 固定リンク(Java3D のいくつかの雛型 )

Alpha の性質

Alpha は 0.0 から 1.0 までの値を徐々に変化させるためのクラスだが、 value() によって得られる値はシステム時間によって変化する。 つまり、変化させるパラメータはシステム時間である。 時刻を与えて値を得るには value(long atTime) を使う。

以下に気がついた注意点を挙げておく。

  • IncreasingAlphaRampDuration の値を IncreasingAlphaDuration の 半分よりも大きくしてしまうと、Alpha の値が不連続になってしまう。
  • LoopCount の値は周期を与えると言うよりも、startTIme から startTime + LoopCount * (IncreasingAlphaDuration + DecreasingAlphaDuration) まで繰り返すと言う意味にとった方がよい。 INCREASING_ENABLE を false にしていても、IncreasingAlphaDuration が 0 でなければその分を有効としてしまう。 また、AlphaAtOneDuration の値が0より大きくても繰り返し時間には 反映されないので注意する。 下手に使うと、不連続な値を与えることがある。
性質を調べるためのプログラムも作成したので下に置いておく。

Alpha(Java Web Start)

posted at 21:28 | category: /Java/Java3DTips | 固定リンク(Alpha の性質 )

ジュリア集合

ジュリア集合を描く(Java Web Start)

マンデルブロー集合とならんで有名なフラクタル図形であるジュリア集合。 描画する複素平面の左上の点とその大きさを指定して マンデルブロー集合を描画する。マウスによって拡大する領域を選択すること も可能。左上の座標が x + yi でパラメータλ= a + bi です。

posted at 21:16 | category: /Program/Math | 固定リンク(ジュリア集合 )

マンデルブロー集合

マンデルブロー集合を描く(Java Web Start)

有名なフラクタル図形であるマンデルブロー集合。 描画する複素平面の左上の点とその大きさを指定して マンデルブロー集合を描画する。マウスによって拡大する領域を選択すること も可能。

Save Image は Java Web Start では動きません。

posted at 21:07 | category: /Program/Math | 固定リンク(マンデルブロー集合 )

パーコレーション

パーコレーションのシミュレーション(Java Web Start)

平面上に絶縁体の結晶が正方形で並んでいるとしよう。 結晶がランダムに伝導体のものに変化していくとしよう。 そのとき、全体の結晶のうちどれくらいの結晶が伝導体になれば 上から下まで電気が流れるであろうか?ただし、上下左右に 接している結晶にのみ電気が流れるとする。

池の中に格子状に置かれた飛び石を飛んで、端から端に渡ることを考える。 格子全体のうちどれだけの割合で飛び石を置けば、渡ることができるように なるだろうか? もちろん一直線に並べれば、辺の長さ分の石を置けば十分だが、 石がランダムに配置されているときは、そんなにうまくはいかない。

上の2つの問題は本質的には同じ問題である。結晶や飛び石は 2次元の格子と考えればよい。通ることのできる格子点をランダムに 配置するとき、上から下まで通れるようになるにはどのくらいの割合の 格子が通れればよいかという問題になる。この問題を サイトパーコレーションという。

2次元格子の通ることのできる辺がランダムに配置されているときの 問題をボンドパーコレーションと言うが、ここでは扱わない。

プログラム概説

格子のサイズを入力してSTARTボタンを押すとシミュレーションが開始します。 ただし、大きなサイズのものだと 実行にかなりの時間がかかるので注意。

上辺からたどり着くことのできる格子点を赤く表し、たどり着けないところを 黒で表している。下までたどり着けた場合は上から下までたどり着けた格子を 青で塗り直して終了する。

格子点の連結した塊をクラスタと言う。パーコレーションがおこった後で クラスタの大きさとそれぞれの大きさのクラスタがいくつあるかを調べて リストとして出力している。

パーコレーションが起こる割合はシミュレーションの結果平均約0.59である。 つまり59%の格子点が通れるようになったときに上から下までの道ができると いうことである。また、クラスタ統計を見るとパーコレーションしたクラスタが 大半を占め、その他のクラスタはサイズがずっと小さくなっている。

posted at 20:49 | category: /Program/Physics | 固定リンク(パーコレーション )

昔の書評を移動

古い書評のページを Blosxom のコンテンツに移しました。 ファイル更新日時まで変えていないのですが、URL にもとの 日付は残しています。

当時の担当していた学生向けに書いていたり、 勘違いがそのままだったりで、恥ずかしい部分もあるのですが、 そのまま載せちゃいます。

posted at 02:52 | category: /About | 固定リンク(昔の書評を移動 )

『計算物理学 基礎編』R.H.ランダウ 朝倉書店

これから計算物理を本格的に取りこもうという大学院生レベルに特にお勧め。 いろいろな科目で断片的に習う知識、例えばハードウェア、誤差論、数値積分、 微分方程式、固有値問題などが有機的に結びついて、研究の手法と方向性を 与えてくれる(はずの)とっても有用な本。 プログラミングにおける陥りやすいミス、誤差を少なくするための手法などを 読むと、私が今まで漠然とコーディングしてきたプログラムを、 見直してみたい気にさせられた。

読者はそれぞれ、それまでの学習の背景に従って、 良くわかる章と、ほとんどわからない章が混在していると思う。 そこで、ほとんどわからない章を熟読してほしい。 どの章も初学者でも馴染みのある例から本質に深く切り込んで行くので、 学びやすくなっている。手法の説明はかなり詳しく、プログラミングの素養があれば すぐにでもコーディングできるだろう。

ただし、実際の物理の問題を多数扱っているわけではなく、プログラム例も少ない。 実例を期待している読者にはお勧めできない。 テキストとして一読しようとする読者か、 既にテーマを持っている人が、良い手法はないかと探そうとする場合は 役に立つだろう。

いずれにせよ、この分野を系統的に学習する成書はまだまだ少ないが、 数少ない中ではよいのではないだろうか。

内容:

  • データ解析(実験データから最適な曲線を決める方法)
  • 非調和振動(非線型な摂動が加わった場合)
  • サブルーチンライブラリ(インターネット上の数値計算ライブラリの紹介)
などなど。

posted at 02:49 | category: /book/2002 | 固定リンク(『計算物理学 基礎編』R.H.ランダウ 朝倉書店)

『「無限」に魅入られた天才数学者たち』アミール・D・アクゼル 早川書房

直前に読んだ「史上最大の発明アルゴリズム」とは対照的に、 カントールのひととなりを主題にして、一般人が漠然と理解している 「無限」の面白さ、難しさ、パラドックスを紹介している。 出てくる例は必要最小限でありながら、 エッセンスを理解しやすいように工夫されている。

もちろん「無限」をめぐる多彩な物語もドラマティックに語られていて、 数学基礎論の話を既によく知っている人でも、面白く読めると思う。

内容はギリシア時代の素朴な意味での「無限」の発見から、 ユダヤ教における無限の解釈、および無限に関する古典的な問題を 紹介した後、 実数の定義、対角線論法、アレフ、連続体仮説、選択公理など 集合論でおなじみの話が続く。不完全性定理とコーエンによる 証明のあたりが、この本のクライマックス。

それとほぼ同時進行で、カントールの伝記にもなっていて、 カントールの足跡をたどりながら、取り組んだ問題の説明をしていくと言う 書き方で、彼の業績がその当時どのように評価され、どのような影響を与えた のかもよくわかる。

宗教的なところや、「無限」にかかわる人物の受難を強調し過ぎている 感はあるが、数学者の活動がいきいきと描写されており、一気に読んでしまっ た。数学を勉強してみようと言う気持ちを高めてくれる本。 大学学部生ぐらいが読むと一番楽しめるかもしれない。

posted at 02:48 | category: /book/2002 | 固定リンク(『「無限」に魅入られた天才数学者たち』アミール・D・アクゼル 早川書房)

『史上最大の発明アルゴリズム』デイヴィッド・バーリンスキ 早川書房

自分の専門に近ければ近いほど、一般書の評価が厳しくなるのは 仕方がないかもしれない。知合いの経済学の先生は、経済小説は 全く面白くないと言っているし。

解説書でも、歴史を解説したものでも、 フィクションでもなく、それらが交錯して進展して行く不思議な書物。 しかし正直言って、何が言いたいのかよくわからない。 カントール、ゲーデル、チューリングらの業績を紹介したいのなら、 寄り道せずに、一歩一歩彼らが通った道筋をたどるべきだろう。 実際、そういう内容を期待して購入した。

しかし実際は、既に知っている人にとってはまどろこしい説明で、 初めて触れる人にはわかりにくい説明でしかない。 文学や歴史などのエピソードを交えながら、 主題があちらこちらに揺れるのは、ストレートに理解したいものに とっては邪魔である。

数学基礎論の細かい議論のところを、あまり適切でない例をあげて それで説明を済ましているところも多く、数学書としてはあまりお薦めできな い。しかし「物語」としてなら楽しめるかもしれない。

posted at 02:47 | category: /book/2002 | 固定リンク(『史上最大の発明アルゴリズム』デイヴィッド・バーリンスキ 早川書房)

『小説ヘッジファンド』幸田真音 講談社文庫

題名の通り、ヘッジファンドの解説書ではなくて小説である。 ヘッジファンドとはいうまでもなく、個人の資金を投機的に 運用する投資信託であるが、そんな教科書的な説明よりも、 小説の中でその現場の様子をいきいきと表現することで、 実体を持つものとして読者に感じさせてくれる。

読み進めているうちに、自分がディーラーになったような興奮 が感じられる。作者の実際の経験からきているものだろう。 取り引き前の準備、実際の取り引き中のスピード感、 市場が思い通り動いたときの喜びと、 裏切られたときの落胆。これらが実に生々しく描写されている。

登場人物も少なく、性格設定も単純化されすぎているきらいはあるが、 それが小説の世界への没入を促進しているのかもしれない。 主人公が新入り者というのも、誰もが一度は感じたことのある 新しい世界への不安や、反発の気持ちを主人公との間で 共有しやすい。主人公に限らず、特にエンディングなどちょっと青臭いというか、 理想主義的なところもあるが、それも作者の現実の市場に対する メッセージなのかもしれない。

とにかく一気に読める。また一気に読んで欲しい。 上質の、楽しめる、経済小説。

posted at 02:46 | category: /book/2002 | 固定リンク(『小説ヘッジファンド』幸田真音 講談社文庫)

『プログラムはなぜ動くのか』矢沢久雄 著 日経BP

昔はコンピュータを使おうとすると、CPU やメモリ、I/O などを 意識しなければならなかったが、最近はそこまで意識しなくても 使えるようになっている。これはもちろん喜ばしいことだが、 反面、(とくに学生諸君は)ある特定のソフトウェアの使い方を 覚えただけで、コンピュータに詳しいような顔をしていて、 基本となっている技術をほとんど知らないのには驚かされる。

この本はそのような人にもわかりやすいように、 ハードウェアからソフトウェアまで一から詳しく書いてある。 設定画面ででてくる呪文のような言葉の意味もきっとこの本を 読み終わったときにはわかるようになっているだろう。

言葉の意味以外にも、基本的な動作のしくみ(題名通り!)は、 非常にわかりやすく説明されている。 メモリの使い方、データの圧縮、OSの説明などは、 今までなんとなくわかっていた人も、この本の丁寧で 簡潔な説明によりさらにその理解が深まるだろう。 また、2進数についての説明も詳しい。 学生諸君はこの本を読んで、コンピュータの中ではすべて2進数で 処理されているのだと言うことを、もっと常に意識してほしいと思う。

「ハードウェアのことなんか知らなくてもよい」 「ワード、エクセル、パワーポイントが使えれば充分」 と言う意見もあるだろうが、私はそうは思わない。 単なる消費者ではなくて、コンピュータを使って仕事をすることを 目指すならば、これくらいは常識の範囲にしておいてもらいたい。

『楽をするだけではダメです。なぜ楽ができるかを知ってから、楽をして下さい。』 という本文中の言葉を最後に引用しておきたい。

posted at 02:44 | category: /book/2002 | 固定リンク(『プログラムはなぜ動くのか』矢沢久雄 著 日経BP)

『計算物理の世界』大西楢平 他 著 共立出版

著者らは実際の計算物理の専門家で、実際のシミュレーション結果や 大きな進展のきっかけとなった理論を多数挙げてあるので、専門外の人でも 計算物理の雰囲気はつかめるのではないだろうか。

それぞれの章は「もっと○○を」と言うかたちの副題が付いており、 例を挙げながらどのような点がネックになっているかが分かりやすく説明されている。 確かにその分野の物理の素養がないと理解しにくいかもしれない。 物理の理論屋さんや実験屋さんが計算機でシミュレーションしてみようと思って 読む場合がいちばん得るところが大きいのかもしれない。

しかし異分野の人間でも、最先端ではどこが問題になっているか、どのような理論で困難が 克服されたかを知るのは大事なことではないかと思う。特に最近は、コンピュータに 計算させれば何でもできると無邪気に考えている人が多いような気がするので、なおさらである。

すこし専門的な感想を言うと、計算物理が最も活躍する分野と思われる分子動力学のところ にもうすこし詳しく説明してほしかった。自分の勉強不足を棚に上げていることは承知の上だが、 導入部分の後に、いきなりシミュレーション結果の紹介になっていたので、シミュレーションの 手法の紹介などを入れてほしかったような気がする。もちろん紙数の関係上しかたない部分もあるだろう。

実際にやってみる場合を考えて、数学ノートや参考文献が充実しているのはうれしい。

posted at 02:44 | category: /book/2002 | 固定リンク(『計算物理の世界』大西楢平 他 著 共立出版)

『アドバンスド JAVA ネットワーキング』パラシャント・スリドハルン 著 プレンティスホール

実はこの本は第2版が出ている。初版は Java 1.1 時代に書かれた本なので、 ActionListener などはないし、その他古い書き方をしている部分も多くある。 したがってサンプルプログラムはそのままでは意図どおりには動かないことも多い。

また、題名に「アドバンスド」とあるように、内容はある程度 Java のプログラミングになれた人を対象としており、説明もいくぶん抽象的である。

しかしそれでもこの本に価値を感じる。基本的なAPIを学習し、処理の仕組みの 解説を読んだところで、実際にそれを活用するプログラムを作成するまでには 大きな隔たりがある。この本はその隔たりを埋めるのにとても有用だ。 ソケットを用いたサーバとクライアントの作成方法、IDLやRMIを使った プログラムにおける、ファクトリやコールバックの活用法など、 参考になる部分はかなり多い。

プログラミング言語の解説書は、そのAPIの解説に当てられているものが多く、 その厚さのわりには情報が少ないように感じられるものばかりだ。 それに対してこの本は、APIから一歩すすんで、 どのようにプログラムを構築していくかと言う 話を具体例をもとに展開している。基礎を押さえた段階からさらに進みたい人に はよい本だろう。

繰り返すが、この本は第2版が出ている。買うならそちらを。

posted at 02:43 | category: /book/2002 | 固定リンク(『アドバンスド JAVA ネットワーキング』パラシャント・スリドハルン 著 プレンティスホール)

『なっとくする数理ファイナンス』森真 著 講談社

ファイナンスが専門でない数学者が書いた金融工学の本。 ブラック・ショールズの方程式を目的としている。

数学の本は往々にして、論理的整合性を重視するあまり、 無味乾燥なものとなりがちだが、この本はむしろ著者が 理解していく道筋を記録したように書かれていて、とても読みやすい。 微分積分と、確率の知識があれば読み進めることができるのではないだろうか。

つまずきやすいところ、誤解しやすいところは、数式による説明の後に、 わかりやすい言い替えがあるのがいい。 さらに、例が非常によいものが選んであって、自明な例、離散的な例から 連続的な例が自然に理解できるようになっており、概念の理解がスムーズにできるだろう。

金融工学の本は多数読んだが、ファイナンスの専門家にとっての良書はあったが、 初心者向けの本は、あまりいいものがなかったように思う。 下手な例え話をして、結果としてうそを書いている本や ただ、dB = √dt だけ覚えておけばよい、のような安易な本もあった。 この本はそれらとは一線を画している。数学の立場から、最短コースで、 かつ省略することなく、初心者が数理ファイナンスを理解するのにきっと 役立つだろう。

posted at 02:42 | category: /book/2002 | 固定リンク(『なっとくする数理ファイナンス』森真 著 講談社)

『XMLとJavaによるWebアプリケーション開発』丸山宏、田村健人、浦本直彦 著 ピアソン・エデュケーション

XMLとはどういうものかを知っていて、 Javaによるプログラミング経験がある人にとって有用な本。 1999年の本であるが、すでに古い内容も見受けられる。 しかし、具体的なXML文をどのように処理するかを実際のプログラムで 詳しく解説しているところは評価できる。

プログラムの本には2種類あって、 どのようにして行うかの手順を具体的に示す本と、 仕様を順に説明していく本がある。 英語で言うと前者がリーダー、後者がグラマーの ようなものだろうか。この本は明らかに前者のタイプである。 前者のタイプの本は、節操がなく単にできればよいと言う考えで 書かれている本も多いが、この本はXMLとJavaの思想に忠実に、 方法論を展開している。

DOMのツリー操作、LMXの実装、Servletの例、JDBCとの連携など 話題も豊富で、読者は XML + Java の可能性の高さを認識するだろう。 今となっては開発環境などの話が少し古いのが難点だが、その点に注意すれば おすすめ。

posted at 02:41 | category: /book/2002 | 固定リンク(『XMLとJavaによるWebアプリケーション開発』丸山宏、田村健人、浦本直彦 著 ピアソン・エデュケーション)

『「頭のいい人」のしくみ』和田秀樹 著 東京書籍

著者の和田氏は著名な精神科医で受験テクニックの本なども書いているので、 書作を読んだことをある人も多いのではないだろうか。

この本の中で著者の言う「頭のいい人」はわざわざカッコ書きをしていることから も分かるように、一般に使われている意味とは少し異なるかもしれない。 知識をたくさん持っていて計算が速いといった人を頭のいい人と思われているかも しれない。もちろん豊富な知識も必要だが、知識を使って状況に応じた的確な推論が できる人のことをここでは「頭のいい人」としている。

このような能力がなぜ必要とされているか、具体的にどのような能力なのかに ついて、この本で詳しく解説している。精神医学の立場から、心理学的分析や 人格障害を例に挙げての説明は分かりやすい点も多い。しかし頭のいい人になる ためのノウハウは抽象的で、いわば他の勉強法の本でも言われている一般的なこ とに終止しているのは残念だ。もちろん、題名にも『しくみ』とあるように、 分析を主とした本であろうから当然と言えば当然かもしれない。

この本の中でいくつかの主張は、世間で一般にネガティブに考えられていることを、 その呪縛から解き放つと言う点で参考になる部分も多い。 例えば、トップにならなくても下の2割にならなければ生き伸びていくことができる という主張や、要領がよいと言うことも社会が必要とする立派な能力であるという 主張などである。トップクラスにならないとダメだとか、コツコツ地道にやらない とダメだとか思い込んで、自分の能力をうまく引き出せないでいる人にはこういう 考え方もあると言う広い視点にたてば、解決の糸口にできるかもしれない。

posted at 02:40 | category: /book/2002 | 固定リンク(『「頭のいい人」のしくみ』和田秀樹 著 東京書籍)

『こまはなぜ倒れないか』安井久一 著 共立出版株式会社

剛体系のシミュレーションをしようと思っていろいろ文献を探していたときに 教えてもらった本。物理学演習 One Point シリーズの中の一冊だが、 単なる演習書ではなく、剛体系の運動方程式の説明から、人工衛星や コマの運動などを詳しく説明してある。

もちろん演習書と言う形なので、例題や練習問題も多くのっているが、 この本の良いところは、理解する上でふさわしい問題を選んでいるところと、 それらの解答が非常に詳しいところである。最初は公式の説明を補足する、 または公式を当てはめる問題。次にその結果を用いて面白い現象例を例題形式で 紹介する、最後に大きなテーマに対して今まで紹介して来た手法でどのように 答えを導くかと言う問題。

理工系の大学生でも質点系の力学は勉強したけど、剛体の力学はあまり やらないみたいである。私自身も、質点系の力学は詳しく勉強した記憶があるが、 学部の講義では剛体系は慣性モーメントぐらいで終わって、むしろ解析力学の 方向にすすんだ記憶がある。しかし剛体の力学は質点系の力学とは違う面白さが ある。この本はその面白さを十二分に伝えてくれる。

一例を挙げよう。「竹トンボは軸の長さによって、うまく回転するときと、 回転しないときがある。うまく回転するための軸の長さの条件を求めよ。」 この問題もこの本に載っている。

posted at 02:40 | category: /book/2002 | 固定リンク(『こまはなぜ倒れないか』安井久一 著 共立出版株式会社)

『マッチ箱の脳』森川幸人 著 新紀元社

著者の森川氏はCG、ゲームなどのアーティスト、デザイナー。 いわゆる「文科系」の出身で、読者もそのような人を想定して書かれている。

扱っている内容は、遺伝的アルゴリズム、ニューラルネットワーク、 エキスパートシステムなど。専門書ではないが、「人工知能って何?」 と言う問いには最低限答えているし、数学が苦手な人でも読めると思う。

このような入門的な本では、以下にうまく「例え話」をするかで 理解のしやすさが大きく異なるように思われるが、この本は (題名にあるように)マッチ箱やコンピュータゲームなどを例に 話を進めているのでとても分かりやすい。

もちろん理科系の視点で見ると、もっと一般化して議論した方が分かりやすいのに とか、あまりにも初等的な例なので、読者が歪んで理解する可能性があるんじゃ ないかとか、余計な心配もしてしまう。それを差し引いてもお話としては よく書けている。

更に評価できる点は、きちんと人工知能の限界や問題点を紹介しているところ。 現在人工知能のブームは下火になったような感のあるが、何故そうなったのか についての記述もあるのはよい。

レベル的には中高生向けだろうが、悲しいかな大学生でも理解できる人間の割合は 中高生で理解できる人間の割合と変わらないかもしれない。

この本では参考文献の代わりにいくつかのURLを紹介しているが、 面白いのが多いので、ここで引用させてもらおう。

posted at 02:39 | category: /book/2002 | 固定リンク(『マッチ箱の脳』森川幸人 著 新紀元社)

『確率で言えば』ジョン・A・パウロス 著 青土社

確率の講義のネタ本になるかと思って読んだ本。 確率に関するところは最初の2章がおもで、 確率の本と言うよりも、数学を題材としたエッセイと思う方がよい。

数式はほとんど出て来ないが、むしろ論理的思考を強制される場面が多い。 世の中でよく誤解されていることに対して、パラドックスや、 反例などで読者を驚かせる。様々なエピソードを紹介している。

あまりにも話がいろいろな方向に展開しているので、ちょっとした頭の体操を 求めている人にはよいが、この本から何かを学んでやろうと言う人には不向き かもしれない。

確率を勉強したあとに一読するときっと楽しめるだろう。

posted at 02:38 | category: /book/2002 | 固定リンク(『確率で言えば』ジョン・A・パウロス 著 青土社)

『人工知能が人間を理解するとき』長尾 真 著 三田出版会

インタビューをまとめたもの。聞き手は村上陽一郎。 長尾先生は私と同じ高校(膳所高校)の出身で、 私が大学院を出たときの大学の総長で、何かと縁がある (もちろんむこうが私のことを知っているとは思えないが)。

人工知能の研究の黎明期の話から始まっている。 もちろん今のように高性能のコンピュータはないし、 記憶媒体も紙テープの時代だったが、 それでも新しいことを研究しているときの興奮や チャレンジ精神が感じられる。長尾先生は 人のやらないことをやって、他の人がやるようになったら 分野を変えるという、常に新しいことに挑戦する人で、 機械翻訳から画像認識など様々なことのパイオニアである。 人工知能の研究は単なる技術だけではなく、文化的、哲学的な基盤も 影響しているということが話の節々から感じられる。

対談の中では、辞書を作るのに4年かかったとか、 認識率を100%にするのは非常に難しいなどという話がさらりと 出てくるところも興味深い。

対談だからすぐ読めるし、最後の方には科学技術全体に関する議論もあるので、 一度は読んでもらいたい。

posted at 02:36 | category: /book/2001 | 固定リンク(『人工知能が人間を理解するとき』長尾 真 著 三田出版会)

『人工知能と人間』長尾 真 著 岩波新書

セミナーのテキストを探しながらいくつかの本を読んでみたのだが、 この本は最新の内容に詳しいというわけではないが、人工知能の 考え方、応用例などをわかりやすく解説していて、入門書としてよい。

人工知能とは、人間の思考や認識をコンピュータにさせるための技術と 考えることができるが、それは人間の思考とは何か、認識とは何かという 哲学的な問いにつながっていく。この本は、そういう意味で人工知能を通して、 人間の知的行動をもう一度問いなおすという方向で書かれている。

人工知能の応用の身近な例では日本語漢字変換における学習機能で段々と変換効率が よくなっていくことや、チェスや将棋などでコンピュータが相手をしてくれる 対戦ソフトなどがある。それらのプログラムを作るにあたっては、 人間がどのように漢字を使っているか、または将棋のある場面でどのように 状況判断しているかなどをコンピュータに教えなくてはならない。

この本では、コンピュータにそのようなことを教えるにはどうすべきなのかを、 文字認識、画像認識、機械翻訳などを例に様々な側面から解説している。 と言ってもコンピュータの解説と言うよりも、むしろ数学基礎論、論理学、言語学、 哲学的な側面から解説しているので、プログラムやコンピュータを知らない 人でも十分に理解できる。

posted at 02:35 | category: /book/2001 | 固定リンク(『人工知能と人間』長尾 真 著 岩波新書)

『暗号解読』サイモン・シン 著 新潮社

歴史上の暗号のエピソードから最新の暗号理論まで。 話題は幅広いが、ドラマチックで一気に読ませる。 単アルファベット換字式暗号では読者といっしょに暗号を 解く過程を再現し、ビール暗号では実際にその暗号 を載せて読者の好奇心を刺戟する。エニグマの解読の エピソードは下手な小説よりもずっと面白く、 エニグマのメカの解説などを間にはさんで、読者にその昔 科学ものや推理小説に夢中だった少年時代を思い出させてくれる。

そこまででも充分に面白いのだが、この本の真髄はやはり 最後の三章だろう。いわゆる公開鍵暗号方式ができるまでの軌跡と PGPに関する一種の闘い、そして量子コンピュータについて。 ここでは数学者が大活躍する。数学者は抽象的で役に立たないことばかり しているわけではないのだ。 素因数分解の一方向性を利用して公開鍵を作ると言うのは今やよく 知られた話だと思うが、RSAと同等のものがそれより前にイギリスで 作られていたと言う話はあまり知られていないのではないだろうか。 私自身、小耳にはさんだ程度しか知らなかったが、 この本ではその辺のエピソードまで紹介している。 最初のメアリーと エリザベスとの話や、エニグマ解読のチューリングの話と共に、 イギリスと言う国のお国柄が出ているようで興味深い。

posted at 02:35 | category: /book/2001 | 固定リンク(『暗号解読』サイモン・シン 著 新潮社)

『混雑と待ち』高橋幸雄、森村英典 著 朝倉書店

普通のオペレーションズリサーチの教科書で待ち行列を扱うときには、 そのモデルを確率過程と見なして各種の計算をすると言う形が多い。 実際私が講義として担当するときもそのような形で行ってきた。 しかしこの本は豊富な具体例から待ち行列や交通渋滞(交通工学)などの話を 展開しており、いろいろな面で示唆に富んでいる。

抽象化またはモデル化をしてしまうと、そのことによって問題の見通しがよくなって、 いろいろな量の計算ができるようになるのであるが、いかんせん抽象化の際に 切り捨ててしまうものがあるのは否めない。 その切り捨てたものの中にじつは面白いものが多数含まれていたりするのである。 特にバスがダンゴ運転してしまう現象、横断舗道における歩行者のすれ違いの現象 などは非常に興味深い。恥ずかしながら 私はこれらの説明をこの本ではじめて知った。

スタンダードなオペレーションズリサーチの勉強を一通りした人にお勧め。

posted at 02:34 | category: /book/2001 | 固定リンク(『混雑と待ち』高橋幸雄、森村英典 著 朝倉書店)

『買収者(アグワイアラー)』牛島信 著 幻冬社

法律を舞台にした小説と言うと、法廷ものでの被告側と原告側との戦いであるとか、 弁護士を主人公とした勧善懲悪ものが多かったと思うが、この小説はこれらのような 民法や刑法を扱うものではなく、商法を扱うものとして珍しい部類に入るだろう。

株式の公開買付で会社を買収して、その会社の社長に対して主人公が復讐しようと いうのがおおまかなストーリーである。その中では、株主代表訴訟、第三者割当 などを駆使して戦いを挑んでいる。私を含めて、商法や会社の経営に馴染のない人間 にとっては遠い世界の出来事のようであるが、いつのまにか引きこまれて行く。 法律と言うのは、正義が勝つようにするための社会のしくみとも言えるが、 商法に関しては、企業の間のゲームに関するルールであるという感想を持った。 そのルールに従って、色々な手段を駆使し、いかにして敵に勝つか。 その生き生きとした描写がこの小説を面白くしてるのだろう。

著者は検事経験のある国際弁護士。たぶん法律に関する記述は信用しても よいだろう。商法を勉強した人には、実際の経営や企業買収の話が出てくる 小説として、十分に楽しめると思う。小説と言っても、事実は小説より奇なり、 であるからそのうちニュースでこの小説の内容よりももっと凄い話が報道 されるかもしれないが。

posted at 02:33 | category: /book/2001 | 固定リンク(『買収者(アグワイアラー)』牛島信 著 幻冬社)

『マネーゲームの予言者たち』トマス・バス 著 徳間書店

金融相場にデリバティブが登場するとともに、物理学者や数学者が 金融市場に参入をはじめた。そのなかの複雑系とよばれる分野の研究者が 市場の予測をもくろんで、プログラムを開発していく様子のドキュメント。

ドキュメントであるがそれを忘れてSF小説を読んでいるような面白さがある。 本文中に金融工学の基礎的な話(オプション、リスクヘッジ、効率的市場、 ランダムウォーク)があらわれ、読んでいるうちにその意味がだんだん実感を 持ってわかるようになるだろう。効率的市場仮説によれば、市場を出し抜くことは できないとされている。裁定機会が生じればすぐに消えてなくなるはずと言うのが、 効率的市場の説明である。しかし裁定機会を消し去る者はいるはずであり、 実際のトレーダーたちも必ずしも効率的市場仮説を信じているわけではない。 しかしながら市場を出し抜くにはどうすればよいかわからない。 主人公達は出し抜くような(裁定機会を探すような)プログラムを 開発しようとして金融市場に挑戦していく。へたな小説よりもよっぽど スリリングである。

また、経営にはほぼ無援の研究者たちが、 資金を調達し事業をおこして、発展させていく様子も面白い。 銀行や証券会社の担当者とやりあったり、部下と論争したりする場面は なまなましくて迫力がある。金融市場におけるドキュメントとともに、 会社を興して発展させていくベンチャーの物語としても十分楽しめるだろう。

posted at 02:33 | category: /book/2001 | 固定リンク(『マネーゲームの予言者たち』トマス・バス 著 徳間書店)

『金融工学』野口悠紀雄、藤井眞理子 著 ダイヤモンド社

おなじみ野口先生の本。新書版の 『金融工学、こんなに面白い』 の内容を詳しくしたような本。新書版を読んだときにこちらの一部にも目を 通していたのだが、全部読む時間がなくて、やっとこのお盆休みに読めた。

私自身金融工学の専門じゃなく、「はじめに」に書いてある「他分野の専門家でこの分野への転換を考えている方々」なので、内容が標準的がどうかは分からないが、 主にポートフォリオとオプションについての基本的な話から最新の話まで 広く紹介してある。と言っても単なるお話しではなく、本格的な理論を基礎から 噛み砕くように説明してある。特に第4章の資産価格モデルと第11章の オプション価格理論Iは難しいところをうまく説明してある。必読であろう。

数式も登場するが、遠慮して書いているのか、ちょっとまどろっこしい説明に なっているところが多い。まあ経済学部の学部生向けなら仕方のないところか。 もっと数式ばりばりの記述を期待したのだが。中途半端に数式を出すより、 全部手のうちを見せて欲しかった。 これはスタイルの違いだからどうしようもないけど。 例えばオプションの価格の決定にリスク中立確率を用いなければ ならないことを強調しているのはいいが、その理由の説明はちょっと分かり にくいような気がしたのだが。グラフが多いのは好感が持てる。

野口先生は『超勉強法』などでも有名。これで分かりにくい教科書を 書いていたら洒落にならないが、さすがに良くまとまっていて、通読にも 後から定義や公式を確認するにも使いやすい。 ただ数式や理論の説明はあっさりと書いてあって、よくよく考えるとちょっと変な (というか悩んだ末に、別の解釈にたどり着く)ところも (第7章の「市場は効率的か?」など)あるので注意。まあ、どんなテキストでも そういうところがあるのが普通だから別にこの本が悪いわけではない。 私の読みが甘いだけに過ぎないのかもしれないし。 レベルとしては学部後期から大学院初年級ぐらいかな?

posted at 02:32 | category: /book/2001 | 固定リンク(『金融工学』野口悠紀雄、藤井眞理子 著 ダイヤモンド社)

『ファイナンスのための確率過程』森村英典、木島正明 著 日科技連

実は以前に読んでいたのだが、この度再読したので もう少し詳しい書評を書くことにした。読み直すと以前は理解できずに いたところも、理解できたりして新たな発見が多かった。 専門書で読むたび毎に新たな発見がある本というのはそれほど多くない。

確率過程の話をファイナンスへの応用を中心にしながら展開している本。 大学院の講義のテキストを元に書かれただけあって、 必要なことをコンパクトにまとめてある。 特にBlack-Scholesの公式を確率微分方程式のところで登場させるのではなく、 2項モデルの極限として中心極限定理を使って導いているのは、 初学者にも入りやすいし、上級者にも別の視点を与える意味で 面白い。

また、裁定機会がないことからいわゆる測度変換をしてリスク中立確率を 求めるところも、2項モデルなどの(離散的な)確率過程で十分議論してから 連続的な確率過程や確率微分方程式への議論へ発展させているところが 教育的で、読む方にも分かりやすい。

数学的に高度な証明は省略しているが、内容は豊富で、問、付録とも充実している。 例としてノックアウトオプションやルックバックオプションなども紹介してある。

学習者にも研究者にもお勧め。ただし学部生にはちょっと難しいかも知れない。 確率過程のことを中心に議論してあるので、数値計算をしたい人にも十分参考に なると思われる。

posted at 02:31 | category: /book/2001 | 固定リンク(『ファイナンスのための確率過程』森村英典、木島正明 著 日科技連)

『つながりの科学』小田垣孝 著裳華房

いわゆるパーコレーションについて学部初年度の学生にもわかりやすく 説明している。パーコレーションとはもともとは「浸透」の英訳であるが、 この本の題名にもあるように「つながり」具合を見るものである。 本にはビンゴゲーム、水道管、うわさの伝達などの例が取り上げられている。 例えば水道管の例なら、碁盤状に水道管が張りめぐらせられているとき、 途中どれだけの割合で水が流れればある地点から別の地点にまで水が流れるか、 などの問題を扱うのがパーコレーションである。理論上の研究も進んではいるが、 まだ完全な解は求まっていない問題も多く、面白い分野である。

この本は抽象例と具体例のバランスもよく、数値も初等的な入門書としては 必要にして十分な量だと思われる。専門家ならではの広い視野で 多数の応用例を紹介しているのはうれしい。銀河の渦状星雲にも パーコレーションが関係していることはこの本ではじめて知った。 ネットワークの強さや火災が燃え広がらないための国土計画の話まで 関係してくる。

薄いブックレットだが、これでパーコレーションに興味を持ってくれる人が 増えれば嬉しい。よければ一緒に勉強しませんか?

posted at 02:31 | category: /book/2001 | 固定リンク(『つながりの科学』小田垣孝 著裳華房)

『天才数学者たちが挑んだ最大の難問』アミール・D・アクゼル 著早川書房

数学者のはしくれとしては、フェルマーの最終定理と言うのは特別な存在である。 誰でも一度は(無邪気にも)挑戦しようと思っただろうし、単純そうに見える この問題を解こうとして多くの新しい概念が生まれ、いろいろな分野と関わりを 持つことに驚きと感銘を覚えたはずである。 長い間未解決だったこの問題は20世紀末にワイルズ氏によって証明が与えられた。 この本はフェルマーの最終定理に関わる歴史的な流れと、それに挑戦した 数学者達のドキュメントである。

数学の説明は中途半端で、これを読んでイデアルや楕円曲線が何を意味するかは わからないと思うし、途中に出てくる数学の説明も前後とどのように関連してい るのかもはっきりしない。

しかし、これは数学の啓蒙書ではなく歴史書?と思えばいいのだろう。 ギリシャ時代の話から、フェルマーの問題の起源、クンマー、ガロア、デデキント などによる発展など普通の数学史の話としても面白い (数論にかたよっているきらいはあるが)。 著者と(当然われわれとも)同時代の数学者に関する記述は生き生きとしていて、 読みながらもわくわくしてしまう。日本人にとって嬉しいのはこの問題に対する 谷山、志村両氏(「氏」というよりも「大先生」なのだが)の貢献について きちんと書かれていることである。そのおかげ(?)で、 ヴェイユが悪者みたいに書かれてしまっているけど。

エピソードが中心だけど、数学に興味のある人以外もこれで 数学者の活動がどういうものかを知ってもらえると嬉しい。 もちろんここに登場する数学者は「超」一流で、普通の 数学の先生とはちがうんだけどね。

posted at 02:30 | category: /book/2001 | 固定リンク(『天才数学者たちが挑んだ最大の難問』アミール・D・アクゼル 著早川書房)

『日本国債(上、下)』幸田真音 著講談社

題名から判断すると、国債のしくみを説明した教科書的な本と思うかも知れないが、 日本国債をテーマにした経済小説である。

経済学の授業で国債がどのようなものなのかは勉強していても、 実際にどのように発行されるのか、取引されるのかは実感がわきにくい。 この本の著者は国債のトレーダーの経験もあり、取引の描写は リアルで生き生きとしている。どのようなシステムで取引が行われているのか、 トレーダーと呼ばれる人は一体何をする人なのか、取引中のマーケットの動きなど 、経験者ならではの詳細な記述は、読むものにその現場にいるかのような 興奮を味わわせてくれる。

小説と言う形式を借り、ある経済犯罪のなぞ解きのようなストーリー展開を しながら、現在の国債の持つ問題点をうきぼりにしている。おそらく著者が トレーダー時代に空想していたことをもとにしているのだと思われるが、 ここまでふくらませて壮大なストーリーにする才能にはただ感服する。 どのような話なのかを書くとネタばれになるので詳しくは述べないが、 経済小説を毛嫌いしている人にこそ読んで欲しい。特に経済の専門家の人は 経済小説をばかにしているきらいがあるが、一度読んで感想を聞かせてほしい。

posted at 02:29 | category: /book/2001 | 固定リンク(『日本国債(上、下)』幸田真音 著講談社)

『相場の心理学』ラース・トゥヴェーデ 著ダイヤモンド社

第I部と第II部は証券市場の一般論といわゆるテクニカル分析の話。 テクニカル分析は限界があると言う結論から数学者(経済学者も?)は、 どうせわからないなら乱数だと考えて、ランダムウォークで証券市場を モデル化しようとする。さてこの本ではどう続くのか... ページをめくると第III部にいきなりフロイトだのユングだの心理学の話だ。

私も大学のとき心理学の授業をとったり本を読んだりしたので、 心理学がどういう学問かぐらいはわかっているつもりだ。 しかしどうやって株の話とつながるのだろう??

と言う疑問を感じながら読んでいたが、その疑問は読み進めるうちに氷解する。 市場参加者がどのような心理で取引をするのか、またチャートからそれを どのように読み取ることができるか。これらのことを多くの例を紹介しながら 説明しているのだ。信じるかどうかは別にして、面白いことは事実だ。引きずり 込まれるようにして読み進んでいった。結局のところ相場で勝つには、 冷静に客観的に判断しないといけない、と言うだけなのかもしれないが。

posted at 02:28 | category: /book/2001 | 固定リンク(『相場の心理学』ラース・トゥヴェーデ 著ダイヤモンド社)

『「わからない」という方法』橋本 治 著(集英社新書 0085C)

私が高校生の頃、著者の『桃尻語訳枕草子』を読んだことがあるが、 その裏話を知りたいと言う動機もあって読むことにした。
題名からして人を食ったような感じだが、人々が気づかないでいること、もしく はすぐに忘れてしまうこと、つまり「わからない」という状態から「わかる」 と言う状態に変化する過程の方法論を述べたものである。普通の人(作家)は 自分がわからない状態いるということなど隠してしまうものだが、この著者の 橋本治氏のすごいところは、そんなところも全てさらけ出してしまっているとこ ろだろう。すごい泥臭いやり方で『桃尻語訳枕草子』を書いていたんだというこ とがわかった。

学生諸君と話していると、わからないでいることに開きなおって、知識を丸飲み しようとばかりしているように思われる。短期的にパッと覚えて、試験のときに パッと吐きだして、後はすっかり忘れてしまう。だから丸飲みしやすいような教 科や授業が人気があるのだろう。

勉強していて一番面白いのは「全部覚えた!」という達成感ではなく、 わからない状態が段々変化してわかるという状態になるその過程である。 それを一度体験すると、面白くて、興奮し、また次を求めてしまう麻薬的なもの ですらある。その手法として著者のいう「わからない」という方法が あるのではないかと思う。一度この手法を身につけてしまうと、新しく学ばなけれ ばならないことがあっても、「わかる」ようになるのである。 研究者や作家はその興奮を求めることを職業としてしまった人である。

短期記憶に頼るような勉強はやめて、学生時代に一度は著者のいう「天をいく方 法」や「地を這う方法」を体験してほしい気がする。

posted at 02:27 | category: /book/2001 | 固定リンク(『「わからない」という方法』橋本 治 著(集英社新書 0085C))

「それがぼくには楽しかったから」リーナス・トーバルズ+ディビッド・ダイヤモンド 著 (小学館プロダクション)

著者のリーナスは Linux の開発者。彼がどうしてこの Unix ライクな(いや、 「ライクな」は外すべきかも知れない)OSを開発するにいたったのか、またそれ をめぐる騒動を彼自身の言葉で書き表している。久しぶりに夜を徹して時間を忘 れて読んだ本。とにかく面白い。UNIX の技術的な話、オープンソースの思想、 産業界に注目されるようになってからの Linux の立場などトピックも多く飽き させない。

しかし何よりもこの本を面白くしているのは、リーナス本人の人柄であろう。 少年時代の回想部分や、彼をビルゲイツと対比して論じたい人々に対する皮肉な ど、思わずにやりとしてしまう。

楽しいことは、別にお金もうけにならなくたって夢中になるし、 わくわくするし、興奮するものなのだ。そういうものは程度の差こそあれ誰にでも あるのだろうが、それが Linux と言う、今全世界のコンピュータおたく たちを夢中にさせているものである彼は最高に幸せものであろう。

posted at 02:26 | category: /book/2001 | 固定リンク(「それがぼくには楽しかったから」リーナス・トーバルズ+ディビッド・ダイヤモンド 著 (小学館プロダクション))

「金融工学、こんなに面白い」野口悠紀雄 著 (文藝春秋)

同じ著者のダイヤモンド社から出ている「金融工学」のダイジェスト版のような 感じ。エピソードよりも理論中心なので、私のような立場ではわかりやすい。 特によい点は、第6章のオプションの説明のところで、オプションの価格を計算 するために測度変換が必要なことを強調している点と、ブラック=ショールズ理 論を使わずに初等的な計算だけでオプション価格を計算する方法を紹介している 点である。オプションの価格を求めるには(測度変換せずに)現実の株価の確率分 布を使って期待値を求めればよい、などと言う誤った記述 をしている本が多い中、新書判なのにもかかわらずここまで正確に書いている本 を他に知らない。 初等的計算でオプション価格を求める方法は、はずかしながらこの本ではじめて教わっ た。
ブラック=ショールズを勉強する前にぜひとも読んでおくべき本。

posted at 02:26 | category: /book/2001 | 固定リンク(「金融工学、こんなに面白い」野口悠紀雄 著 (文藝春秋))

「数値確率解析入門」保江邦夫 著 (朝倉書店)

確率過程をコンピュータ上で生成するために、著者の言う『有限確率解析』 について解説した本。最近は金融工学の関係で、この手の本も多く、実際類書を 手に取ることも多いが、この本の特色は応用を金融工学に限らず、自然科学や工 学における応用を紹介している点だろう。逆に経済の応用は少し触れているだけ なので、別の本で補うことが必要。しかし他の本は理論的なことばかりなので、 コンピュータ上で計算するときにはこの本に戻るとよい。個人的には量子物理学 における応用は面白いと感じた。最初の1章はいらないのでは?と言う気もする。 むしろ最後に本の中でとりあげた例を表計算ソフトで計算する方法をとりあげて くれれば面白いのでは?(それだけで別の本になってしまうか??)

posted at 02:25 | category: /book/2001 | 固定リンク(「数値確率解析入門」保江邦夫 著 (朝倉書店))

Blosxom に writeback をいれる

writeback を入れてみました。

2006年2月現在、無効にしてあります。

posted at 02:23 | category: /About | 固定リンク(Blosxom に writeback をいれる)