«前の日(10-28) 最新 次の日(10-30)» 追記

ema log


2006年10月29日 紹興酒 この日を編集

_ [最近] あんき → 説明会補助 → 打ち上げ

あんきは書くと長そうだし?眠いので省略。また、遊びに行きます。今日は、文章の校正が面倒なので、普段以上に垂れ流し。ヅラ と あんき と MKT に期待。

写真は,土曜日の佐世保バーガーです。

そんなこんなで、三時間睡眠で、説明会補助にもぞもぞと出発する。今日、反応が鈍かったとしたらそのせいです。風邪引いたままですし。鼻がやばい。そんなこんなで、学校説明会の補助は適当に流しつつ、時折、説明しつつ。各所の研究室を覗き回ってました。

しかし、何かにつけて、最近、様々な要因から物事への適当度が上昇している気がします。そろそろ、危険な領域かもしれません。これは、大いに反省すべきか。単に余裕がないだけともいいますが、おそらく、単なる自滅なのでどうしようもありません。

終了後、撤収して、中間発表(5年)の打ち上げへ。行き先は奈良の中華料理屋 飛天。おこげコース料理でしたが、全員の予想を超えて量が多く、おなかがぱんぱんでございます。味もなかなか。いまたにさん GJ! でした。

サントリーの紹興酒が思いの外呑みやすくて良い感じ。お茶っぽいかなぁと最初思ったのですけど、独特の良さがあります。呑みやすさが危険じゃないかと思うぐらい呑みやすい紹興酒でした。やっぱり、お店の値段は定価の二倍以上ですねw。

睡眠不足のために、二次会は行かずに帰る。帰り、また鶴橋を綺麗に乗り過ごす。さらに、寝汗がすごくてごめんなさい、という感じに、寝汗をかいてました。鼻の状態も悪化した感じがあります。気休めに、市販の風邪薬のんで寝ます。


2007年10月29日 整骨院 この日を編集

_ [最近] 整骨院

寝違えて、首の右が一日中痛かったのだけれど、たまたま予約をしていた整骨院で治療してもらったら収まってくるから不思議。

なんなんだろう、あの整骨とハリの治癒力の源は。

お灸はあつくて苦手です。

_ [最近] 最近見つけたサイト

BABEL 〜世界の言葉〜

http://www.tekiro.main.jp/?eid=347045

検索していて行き着いた。単語を取り上げて、各国語の表現を列挙しているところ。

これで、見やすければなぁ。

「紙芝居ボード」200円で作れる組合せ自由自在のホワイトボード

http://gadget.cre8system.jp/life_hacks/200_1.html

「100円ショップで売っているハードタイプのカードケース」でホワイトボード作り。これはまじめに使える。

実際に作ってみないと。

魔道

http://www.medianetjapan.com/town/entertainment/cba2/

ファンタジー系 Web 漫画。パンドラともども一気に読んじゃった。20話ぐらいからが面白い。

毎週土曜日更新で、継続できるのは本当にすごいと思う。

スクロールせずに読めるようになっていたり、DL 版があったり、読み手への気配りもきいてるなぁ。


2008年10月29日 この日を編集

_ [Gauche]SICP 1.29の説明

シンプソンの公式」によって,x^3 を 0〜1 の区間で数値積分するプログラムを作れというもの.一章の練習問題ってのが恐ろしい.実装は単純だし,行数は短いのだけど,Cだと大騒ぎか.「シンプソンの公式」がなにかはWikipediaを読んでもらうとして,

0 が 0 の時のエラー処理はどうなんだ?とかはさておき.

という数式をプログラム化すればいい.まずは,「Σ」に相当する関数 sum.

(define (sum term a next b)
  (if (> a b)
      0
      (+ (term a)
         (sum term (next a) next b))))

これは,本文中から得られる.term, next に関数を渡せるのが Scheme の良いところ.

(cube 0) + (cube 0.2) + (cube 0.4) + (cube 0.6) + (cube 0.8) + (cube 1.0) + 0

みたいに,演算される様を想像できればOK.というか,Σを思い出せればOK.

後は,Wikipedia の数式の定義通りに実装している.y, h の定義は,Wikipedia の本文にある(Wikipediaではy_kではなくx_i).なお let は,その関数スコープでのみ参照できる変数を作る(実は,この演習問題時点では let が使えないらしいのですがw)

なお,非Gaucheユーザは1/3 は 1÷3 ではなく,1/3 という有理数リテラルであることに注意.

() のネスト具合がわかりにくいのは,インデントで判断するしかない.正直,まともなエディタの補助がないとかけない.

(define (cube x) (* x x x))

(define (simpson term a b n)
  (let ((h (/ (- b a) n)))
    (define (y k) (term (+ a (* k h))))
    (define (inc2 n) (+ n 2))
    (* h 1/3 (+ (y 0)
                (* 4 (sum y 1 inc2 (- n 1)))
                (* 2 (sum y 2 inc2 (- n 1)))
                (y n)))))

一番下の部分が,数式ほぼそのまま.Schemeすげえ!と思う瞬間.Simpson 自体が再帰ではないあたりが面白いというか,スマートというか.ただ,()の数もすごいw

C はおろか,Ruby ではここまでスマートにかけない.結局関数がファーストクラスオブジェクトじゃないからなぁ.同じコンセプトを実装できはするんだけど.

Ruby でまねてみると(next は succ に置き換えている.というのも,識別子のため,使用できなかった).n=10ではなぜか精度が出ず,n=1000で,再帰が深すぎると怒られた.読み取りやすくはあるかな.proc の呼び出しが [] なのがきもいなー.Gaucheの有理数を尊重してRational使うと

def sum(term, a, succ, b)
  if (a > b)
    0
  else
    term[a] + sum(term, succ[a], succ, b)
  end
end

cube = proc { |x| x*x*x }

def simpson(term, a, b, n)
  h = Rational((b - a), n)
  y = proc { |k| a + k * h }
  inc2 = proc { |n| n + 2 }
  h/3 * (y[0] +
         4 * sum(y, 1, inc2, n-1) +
         2 * sum(y, 2, inc2, n-1) +
         y[n])
end

puts simpson(cube, 0, 1, 100)

JavaScriptで似せると,以下の通り.return を素で忘れます.有理数がないので,普通に小数点演算.ちなみに,JavaScriptでは,1/2 は 0.5 になる.

function sum(term, a, next, b) {
  if (a > b) {
    return 0;
  } else {
    return term(a) + sum(term, next(a), next, b);
  }
}

var cube = function (x) { return x*x*x; };

function simpson(term, a, b, n) {
  var h = (b - a) / n;
  var y = function(k) { return a + k * h; };
  var inc2 = function(n) { return n + 2; };

  return h / 3 * (y(0) +
                  4 * sum(y, 1, inc2, n-1) +
                  2 * sum(y, 2, inc2, n-1) +
                  y(n));
}

alert(simpson(cube, 0, 1, 100));

sum は,Ruby だと後置ifの例外処理と通常処理

def sum(term, a, next, b)
  return 0 if (a > b)
  return term[a] + sum(term, next[a], next, b)
end

JavaScriptだと 三項演算子使った方が,好きかなぁとか思ったり.

function sum(term, a, next, b) {
  return (a > b) ? 0
                 : term(a) + sum(term, next(a), next, b);
}

やっぱり,シンプルにかけるかどうかは考え方次第だなー.

以上,気分転換.現実逃避.