2006-10-01から1ヶ月間の記事一覧

JScript高速化(4)

new 前回、コンストラクタのコストが高いことが分かったので、 これをどうにかしよう。 まず、最小のユーザ定義オブジェクトの生成を見てみよう。 function poly() { ; }この生成を10万回実行する。 // 642ms for(var i = 0; i new poly(); // 33ms for(var …

JScript高速化(3)

具体的な問題に入っていこう。 copy var p = new poly([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]); for(var i = 0; i var r = p.copy();を速くすることを考えよう。 ここで、polyの係数はfractionでなく値とする。 copyは、 function poly() { var args = poly.argu…

JScript高速化(2)

もっとまじめに考えよう。 プロパティへの代入ってどうなんだろう。 こんなコードを考えてみよう。 var n = 100000;// 509ms var a = [ ]; for(var i = 0; i for(var j = 0; j a[j] = j; } // 203ms var a = [ ]; for(var i = 0; i for(var j = 0; j ; }つま…

東京

知立 5:55 〜 6:34 豊橋 名鉄本線 豊橋 6:51 〜 8:10 島田 島田 8:16 〜 10:07 熱海 熱海 10:14 〜 11:01 平塚 平塚 11:05 〜 11:56 品川 品川 11:57 〜 12:00 田町 京浜東北線 田町 14:28 〜 14:31 品川 山手線 品川 14:41 〜 16:07 熱海 熱海 16:16 〜 17:…

JScript高速化(1)

多項式クラスを速くしたいが、 そのために基礎的な実験をしておこう。 push Arrayのpushを派手に使っている。 使い勝手や見栄えがいいのでついつい使っているが、 これはたぶん遅い。 Arrayオブジェクトを作って0〜9を代入することを考える。 これを10万回実…

大きな文字列が猛烈に遅い(3)

大きな文字列の結合が遅いことを以前示したが、 その際、結果の文字列の長さが効くのか、 連結前の文字列の長さが効くのかを調べるのを忘れていた。 次のようなコードで試してみた。 for(var i = 1000; i var i1, i2; for(var i1 = i >> 1; i1 > 100; i1 >>=…

正規分布の近似(14)

結局、分数クラスを作った。 思っていたほどは苦労しなかったが、 やはりデバッグがいやな作業だった。 p10,0 = 1/362880x^9 p10,1 = 1/36288-1/4032x+1/1008x^2-1/432x^3+1/288x^4-1/288x^5+1/432x^6-1/1008x^7+1/4032x^8-1/40320x^9 p10,2 = -329/5184+115…

お引っ越し

1ヶ月前だったか、少し席が移動になった。 そのため、というわけではないが、机が1つ増えた。 キャビネももらえた。 キャビネはともかく、あまり広いスペースはいらないのだが、 本を置ける場所はほしかった。 ここは、これが当たり前で、人口密度が非常に低…

正規分布の近似(14)

例えば、0.2142857142857という小数を考える。 この逆数を取ると、4.6666666666667、 小数部分を取ると、0.6666666666667、 この逆数を取ると、1.5、 小数部分を取ると、0.5、 この逆数を取ると、2、 小数部分を取ると、0 この手順を逆に辿っていくと分数に…

正規分布の近似(13)

そういえば忘れていたが、 求めた多項式を具体的に表示していなかった。 p10,0 = 0.0000027557319223985892x^9 p10,1 = 0.00002755731922398474-0.0002480158730158727x+0.0009920634920634933x^2-0.002314814814814814x^3+0.0034722222222222194x^4-0.00347…

やはり

「金の切れ目が縁の切れ目」 らしい。

正規分布の近似(12)

多項式のライブラリを書けばあとは簡単。 var n = 10; var p = [ ]; p[1] = [ ]; p[1][0] = new poly(1); for(var i = 2; i p[i] = [ ]; for(var j = 0; j if(j == 0) p[i][j] = p[i-1][0].integral( 0, new poly(0, 1)); else if(j == i - 1) p[i][j] = p[i…

正規分布の近似(11)

積分を含んだ多項式の漸化式を計算するためのプログラムを書く準備をする。 プログラムはお手軽にJavaScriptで書く。 要するにここでは、多項式のユーザ定義オブジェクトのコードを書く。 プロパティ 多項式の係数を配列として持つ。 function poly() { this…

正規分布の近似(10)

ここではp10(x)を求めることを目指す。 まず、p2を求めよう。 p(x-t)が非零になるのは、0

正規分布の近似(9)

さいころを10回振って足し合わせると正規分布に近くなる、 と前に書いたが、 ここでは一様分布を10個足し合わせると正規分布に近くなることを見た。 ところで、一様分布を足すというのはどういうことだろう。 ここでは一様分布p(x)は、0〜1の値を一様に出す…

正規分布の近似(8)

正規分布に従う乱数としては、 Box-Muller transformというものが知られており、 これは、2つの0から1の一様乱数をr1, r2とすると、 で2つ与えられる。 これをいつものように1億回繰り返したのと、 前回のとかかった時間を比べると、 前回:20.8s 今回:22.1…

正規分布の近似(7)

ピーク値を正規分布と同じにしたが、 それも特に根拠がないので、 適当に振ってみた。 aを振って、bを を満たすように変えて、 いつものように分布を得た。 a = 13のとき、かなりよくなった。3σでも97.5%というのは、 かなりいい近似ではないだろうか。

静岡・東京(2)

静岡 7:57 〜 8:59 三島 三島 9:18 〜 9:32 熱海 熱海 9:40 〜 11:18 品川 品川 11:19 〜 11:25 浜松町 山手線 浜松町 15:00 〜 15:05 品川 山手線 品川 15:11 〜 16:52 熱海 6分遅れ 熱海 16:55 〜 19:21 浜松 浜松 19:34 〜 20:39 刈谷 行きは本当は沼津で…

静岡・東京(1)

刈谷 21:14 〜 21:46 豊橋 5分遅れ 豊橋 21:51 〜 22:23 浜松 浜松 22:32 〜 23:39 静岡 浜松からは古い車両だった。

岐阜

刈谷 10:41 〜 11:29 大垣 大垣 11:35 〜 11:48 関ケ原 関ケ原 11:52 〜 14:42 大垣 徒歩 大垣 14:55 〜 15:43 刈谷 5分遅れ もっと風が強くて涼しいのかと思っていたが、 意外と暑く、強い風も一瞬だった。 帰りは、6両編成が強風によるダイヤの乱れのため4…

正規分布の近似(6)

これを数値的に解くということだったが、 今朝向こうの駅を降りて走っていたら気がついた。 x = g(s)と変換すると、 なんだ、逆関数を陽に求める必要はなかったのか。 頭悪いな。 これを実際に計算すると、 これと、 から、 数値的に求めたときとまったく同…

正規分布の近似(5)

という一様乱数からの変換を考える。 としたほうが考えやすいだろう。 この逆関数を考えると、 これを求めるには三次方程式を解けばいいが、 解の公式で解いてもどの解を選べばいいか分からないだろうし、 解けても積分ができないだろう。 直接はこの逆関数…

正規分布の近似(4)

前回なぜよい近似にならなかったかというと、 ピークの値が、 というわけで、分散1/Nの正規分布でのピークの値 と全然合わないので、話にならなかった。 というわけで、そこもあわせたかったのだが、どうもうまくいかない。 そもそもtanなんか使っているから…