2/2 複素標準正規分布と複素標準ガウス雑音について
複素標準ガウス雑音は、実軸方向と虚軸方向にそれぞれ分散0.5のガウス雑音を足せば作れる。
ここでの標準は、平均0で分散1を意味する。
これを示すために、実軸方向と虚軸方向にそれぞれ分散0.5のガウス雑音を生成し、(正規分布に従う乱数がすなわちガウス雑音であることに留意)その同時確率分布をヒストグラムで近似して、複素標準正規分布の解析的な式と比較する。
分散なので
であることに留意。
式はzを複素数として、
で与えられる。
サンプルコード。
import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import pylab as pl from pandas import * size = 1000000 #乱数生成 x = np.random.normal(0.0,np.sqrt(0.5),size) y = np.random.normal(0.0,np.sqrt(0.5),size) #描画用のメッシュを切っている xmesh = np.arange(-3.5,3.5,0.1) ymesh = np.arange(-3.5,3.5,0.1) BIN = len(xmesh) #ヒストグラム作成。pl.histが二次元配列を返すのはあまり触れられていない。調べればわかるからか?なんにせよ便利だ。 xhist = pl.hist(x,bins = BIN,range=(-3.5,3.5),normed = True) yhist = pl.hist(y,bins = BIN,range=(-3.5,3.5),normed = True) Z = np.zeros((BIN,BIN)) #ノイズの分布をヒストグラムで近似している。真のpython使いなら頑張って一個forループを削る気がする。 for i in range(BIN): for j in range(BIN): Z[i][j] = xhist[0][i] * yhist[0][j] #これで描画用の配列を作るらしい。よくわからん。 #>やすうみさんから指摘:ZがBIN*BINのサイズをもつ配列なので、それと一対一対応で点をプロットするのにBIN*BINサイズの配列を作成している。 X,Y = np.meshgrid(xmesh,ymesh) Z2 = np.zeros((BIN,BIN)) #複素標準正規分布を直接計算。やはり真のpython使いはforループを削るはず。わたしはそんなことするならCで書く。 for i in range(BIN): for j in range (BIN): Z2[i][j] = 1.0/np.pi*np.exp(-xmesh[i]*xmesh[i] - ymesh[j]*ymesh[j]) #グラフ作成 fig = plt.figure() ax = Axes3D(fig) ax.plot_wireframe(X,Y,Z,color ='red') ax.plot_wireframe(X,Y,Z2,color = 'blue') plt.show()
グラフはこうなる。
教訓:目の前に計算機環境があるのにこういったことを調べないのは怠慢である、おかげで効率が落ちたことを自覚し、きちんと調べつくすべきだ、今後は気をつけねばならない。
12/28
実家に帰省。
リビングのテレビがうるさい!文化的資本の低さよ。まあ、まとめブログを読んでいて文化的資本の上下もないのか?
12/3
うまく行かないことばかりなのでへこむことこの上なし。
しかし、僕の人生がうまく行かないことと、人生が楽しそうだったり、気楽に人生を送っている人が居ることは全く別の話なので、イライラしてもしょうがないし、もっと必死に生きろなどという感情を抱くのも筋違いなので、何かうまい思考スキームを生み出さねばならないと思った。
10/27
教養の定義。
人生を間接的に豊かにすると各個人が考えるものの中で比較的多数の合意を得られるもの。あるいは、人間存在に対する含蓄ある示唆を含んでいる、とやはり各個人が考えるものの中で比較的多数の合意を得られるひとかたまりの知識。
10/27
素人は口を挟むなという癖にじゃあ自分はどう思うのかということを明言しない専門家気取りなんてさっさとメシの食い上げになれば良いのだ。問題はそんなに簡単ではなく結論は出せないというのなら簡単ではない問題の専門家だという顔をさっさとやめれば良いのだ。考えています、考え続けるでしょう、それが私の取りうる最大の知的誠実です、という態度をとるならば寝食も忘れて打ち込み続けるくらいの態度を示すべきではないか。
院生のパラドクス。