Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

数値計算

充填ジュリア集合を描画する

充填ジュリア集合は漸化式 zn+1 = zn2 + cで定義される複素数列で、n→∞の極限において無限大に発散しないという条件を満たす複素数z0の集合を指します。Pythonで複素数を扱うcomplex(real, imag)の実部(real)と虚部(imag)を画像のx,yに対応させ各座標で数列…

マンデルブロ集合を描画する

マンデルブロ集合は複素数列{zn}n∈N∪{0} が、n→∞の極限において無限大に発散しないという条件を満たす複素数の集合を指します。Pythonで複素数を扱うcomplex(real, imag)の実部(real)と虚部(imag)を画像のx,yに対応させ各座標で数列が発散するかどうかチェッ…

モンテカルロ法で円周率を求める

モンテカルロ法はシミュレーションや数値計算を乱数を用いて行う手法の総称です。正方形と内接する四分割円を考え、正方形にランダムに多数の点を描画した際に、内接円の中と外にある点の数から円の面積が求まり、そこから円周率が算出できます。

ランダムウォークによる感染シミュレーション

ランダムウォークは確率的な運動モデルの一種で、次にどちらにどれくらい動くかを確率的に決めるため不規則な挙動を示します。2次元のランダムウォークモデルで感染の広がりのシミュレーションを行います。ある領域に50人の人間がいて1人だけ感染症に掛かっ…

複素関数を視覚化する

z=a+bi を用いた複素関数 f(z)において、実部 a、虚部 b に対して偏角 arg z および 絶対値 |r| が決まります。これら4つのパラメータを図示するために実部 a をx軸、虚部 b をy軸とした2次元グラフに、偏角 arg z を対応する色相でプロットする方法がありま…

倍プッシュのシミュレーション

倍プッシュは負けた2倍の額を賭け続けることで必ず勝つというギャンブルの必勝法ですが、手持ちの資金が無くなったら終わりなので大負けするリスクもあります。Pythonで倍プッシュのシミュレーションを行い所持金が増えるかどうかを調べます。

ランダムウォーク

ランダムウォークは確率的な運動モデルの一種で、次にどちらに動くかを確率的に決めるため不規則な挙動を示します。 ここでは2次元のランダムウォークモデルとして、一ステップ毎に上下左右4方向に一定距離ランダムに移動する場合を考えます。ステップ数を10…

いろいろならせんを描く

(1) アルキメデスのらせん(等間隔)、(2) 放物らせん(外側に行くほど間隔が狭くなる)、(3) 双曲らせん(y=aを漸近線に持つらせん)、(4) リチュース(Θが大きくなるにつれ原点に近づくらせん)、(5) 対数らせん(等角螺旋)の5種類のらせんをPythonの画像処理ライブ…

セル・オートマトンによる感染シミュレーション

セル・オートマトンは格子状のセルと単純な規則による離散的計算モデルで、あるセルの時間tにおける状態、および近傍セルの時間tにおける状態により、あるセルの時間t+1(次世代)における状態が決まります。ルールを確定的ではなく確率的に変えた確率的セルオ…

素数を求める(エラトステネスのふるい)

エラトステネスの篩は指定された整数以下の全ての素数を発見するためのアルゴリズムで①探索リストに2からxまでの整数を昇順で入れる②探索リストの先頭の数を素数リストに移動し、その倍数を探索リストから篩い落とす③上記の篩い落とし操作を探索リストの先頭…

素数を求める(試し割り法)

試し割り法は素数を求める手法で、nが素数であるかどうかを調べる場合nよりも小さい数で割って割り切れるかどうか調べるシンプルなアルゴリズムです。効率化するポイントとして①√nまでの数を調べれば十分②小さい数の方が割れる確率が高いため小さい数から調…

方程式を解く

やること 二次方程式を解く 連立方程式を解く 使った関数 sympy.Symbol : 変数の宣言 sympy.solve : 代数方程式の解を求める 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 二次方程式 を解く コード import sympy #sympyのインポー…

行列の和、差、積を求める

やること 2X2の行列A,Bを作成し、和、差、積を求める。 使った関数 numpy.array : 新しい行列の生成 numpy.dot : 行列の積を求める 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 コード import numpy as np #numpyをn…