2008-06-01から1ヶ月間の記事一覧

Pythonをはじめてみる(9)

継承 固有値問題を解くために行列を定義したいが、その前にベクトルを定義したい。 ベクトルを表現するのにリストを使うと簡単だが、そうすると加算・乗算が、 a = [1, 2] print a + a # [1, 2, 1, 2] print a * 3 # [1, 2, 1, 2, 1, 2]となってしまう。これ…

事故発生の間隔(2)

1年365日に事故が7件起きるとして、事故が起きた日の最小間隔の分布を正確に知りたい。まず、考えやすいように、10日で3件起きる場合を考えよう。 第1の事故(時系列で「第1」と言っているわけではない)は最初の日に起きたと考えてよい。だから、全ての場合…

Visual Studioのステップ実行が遅い

C++

Visual Studio.net2003(VS)でステップ実行が、ある時期から恐ろしいほど遅くなった理由が、今日わかった。 ブレイクポイントを外すとき、いつも解除じゃなくて無効にしていた。そうすると、●が○になるので、あとで同じところにブレイクポイントをつけやす…

Pythonをはじめてみる(8)

ついでだから、Pythonでも書いてみよう。 import randomnRep = 100000 nDays = 365 nAcc = 7def calcMinInterval(): a = [ random.randint(0, nDays - 1) for i in range(nAcc) ] a.sort() min = nDays + a[0] - a[nAcc-1] for i in range(1, nAcc): interva…

事故発生の間隔(1)

ある工場では1年間に7件事故が発生する。あるとき事故が発生し、その7日後にまた事故が発生したとする。この間隔は非常に短く、非常事態と言えるだろうか。 工場は365日稼動している。また、周期境界、すなわち、1日目に発生していれば、366日目にも発生して…

薄暮陸上競技会

今年もウエーブスタジアム刈谷で行われる。 7/5、8/3、9/7。 一般は、100、1500、5000m。 目標タイムで組分けする。 今年は去年ほど走ってないので記録が期待できないけど、いちおう予定に。 ネットをさぐっても全然出てこないし、図書館とかにもチラシない…

Pythonをはじめてみる(7)

モジュール Galクラスができたので、それをgal.pyと名前をつけてファイルにする。 それを次のように利用する。 from gal import Gala = Gal(-4, -2, 3, 3) print a # (-4-2√3)/3 b = Gal(3, -1, 3, 3) print b # (3-√3)/3 c = a / b print c # (-9-5√3)/3 d …

Pythonをはじめてみる(6)

演算子のオーバーロード 例えば、「+」をオーバーロードするには、__add__メソッドを定義すればよかった。 class Gal: def __add__(self, a): ...a = Gal(-4, -2, 3, 4) b = Gal(3, -1, 3, 3) c = a + bそれでは、こんなことをするにはどうすればよいだろう…

Pythonをはじめてみる(5)

print こんなようなことをしたい。 a = Gal(3, 2, 3, 2) print aこれは、__str__という名前のメソッドを定義すればよい。http://www.python.jp/doc/release/ref/customization.html class Gal: def __init__(self, a, b = 0, c = 0, d = 1): self.a = a self…

Pythonをはじめてみる(4)

何がやりたいかというと、 の形の数を表すクラスを作りたい。 これを作るのに必要な要素を書いていく。 クラス名は「Gal」とする(Galoisの略)。 デフォルト引数 データメンバはa,b,c,dの4つとして、 Gal(1, 2, 3, 4)で、(1+2√3)/4を表す。その他に、 Gal(1…

Pythonをはじめてみる(3)

クラス 2次元のベクトルクラスを作ってみる。 class Vec: def __init__(self, x, y): self.x = x self.y = y def write(self): print "%d %d" % (self.x, self.y) def __add__(self, a): b = Vec(self.x + a.x, self.y + a.y) return b v = Vec(1, 2) v.writ…

Pythonをはじめてみる(2)

多倍長整数 PythonはPerlのbigintよりかなり速いらしい。Perlもモジュールをインストールすれば速いらしいが、めんどうなのでやらない。 320000を計算してみる。 # Perl use bigint;my $t0 = time; my $N = 20000; my $a = 1; for(my $i = 0; $i $a *= 3; } …

Pythonをはじめてみる(1)

今考えている問題は、どうもPerlには荷が重いようだ。 そこで、Perlのようにお気楽に書けて、クラスも作れるPythonをはじめてみる。Perlもクラスっぽいものが作れるようだが、C++ライクじゃないからよく分からないし、こういう数学の問題には演算子のオーバ…

六面体の頂点をたどる(10)

前回の分解を、もうちょっとちゃんと考えて、改良してみる。 a > 0として、 と分解できるとすると、 ここで、 と置くと、a3,b3は正だから、両方とも1〜a-1。 b3をその範囲で決めて、b1とb2も決まったとすると、 a1の2次方程式と見て、判別式は、 a = a3 + cb…

六面体の頂点をたどる(9)

次に、√2などの無理数の固有値に対する固有ベクトルを求める。 そのために、例えば、42+17√3を[42,17,3]と配列のリファレンスで表す。そうやってPerlで組んでみたが、動かなくなってしまった。 これは、約分ができないために、どんどん数が大きくなってしま…