プログラミング

このカテゴリーの目次を作成しました: Programming記事の一覧

逐次計算(移動平均・移動分散)

移動平均 移動分散 関連記事 移動平均移動平均\begin{aligned} \bar{x}_{m} = \frac{1}{n} \sum_{i=m-n+1}^{m} x_{i} \end{aligned}を逐次計算する.\begin{aligned} \bar{x}_{m} &= (n\bar{x}_{m-1} - x_{m-n} + x_{m}) / n \\ &= \bar{x}_{m-1} + \frac{1}…

逐次計算(平均・分散)

過去の計算結果と新たに取得したデータを使って,平均や分散をアップデートしていく方法.Welfordのアルゴリズムというらしい.つまり,$n$ステップ目で欲しい量を$y_{n}$,新たに得られる量を$x_{n}$とするとき,\begin{aligned} y_{n} = f(y_{n-1}, x_{n})…

Pythonでベイズ因子分析

書籍「ベイズ信号処理(関原 謙介)」の「第10章 数値実験」の計算例をPythonで実行しました.問題設定やアルゴリズムについては書籍を参照してください.ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―作者:関原 謙介共立出版Amazon出版社のページ…

Pythonでスパースベイズ

書籍「ベイズ信号処理(関原 謙介)」の「第10章 数値実験」の計算例をPythonで実行しました.問題設定やアルゴリズムについては書籍を参照してください.ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―作者:関原 謙介共立出版Amazon出版社のページ…

PythonでEMアルゴリズム(線形正規モデル・L2正則化)

書籍「ベイズ信号処理(関原 謙介)」の「第10章 数値実験」の計算例をPythonで実行しました.問題設定やアルゴリズムについては書籍を参照してください.ベイズ信号処理 ―信号・ノイズ・推定をベイズ的に考える―作者:関原 謙介共立出版Amazon出版社のページ…

Pythonで回転行列

回転行列をnumpyで実装します.回転行列については以下の記事を参照してください. ➡回転行列(2次元) - Notes_JP 2次元Python (numpy) import numpy as np def rot(vec, theta): vec = vec.reshape(-1, 1) cos, sin = np.cos(theta), np.sin(theta) R = np…

Pythonの切り捨て除算演算と剰余演算

POINT x//yはfloor(x/y)と思えばOK. x%yはmod yで,yと同符号になる. ドキュメント 負の数に対する演算 参考文献/記事 ドキュメント6. 式 (expression) — Python 3.12.1 ドキュメント //(切り捨て除算: floor division):floor関数と同じ. 整数の切り捨て…

FFTと手計算の結果を比較する方法(離散フーリエ変換vs.連続フーリエ変換)

POINT FFTと手計算したフーリエ変換を比較する方法について. $T_{\mathrm{s}}$をサンプリング周期とするとき,手計算と比較すべきは「FFTの結果×$T_{\mathrm{s}}$」と「IFFTの結果 / $T_{\mathrm{s}}$」である. numpy.fftを使って,ガウス関数のFFTと手計…

主成分分析(PCA)

【関連記事】 主成分回帰(PCR)・部分最小二乗法(PLS) - Notes_JP 主成分分析(PCA)とは あらすじ 考え方(分散の最大化) 考え方(対角化) 元データの分解 データ行列を使った表現 特異値分解との関係 参考文献 主成分分析(PCA)とはあらすじ1回の測…

主成分回帰(PCR)と部分最小二乗法(PLS)の導出について

POINT PCAとPLSの導出に関する計算メモ. 【関連記事】 主成分分析(PCA) - Notes_JP 次の書籍の計算メモです.スモールデータ解析と機械学習作者:藤原 幸一オーム社Amazon 用語 PCR - 主成分回帰 PLS - 部分最小二乗法 PLS1 - 目的変数が1つの場合 Python…

正弦波のFFT (numpy.fft)

POINT sinのFFT (DFT) と DTFT,連続フーリエ変換の結果を比較する. numpy.fftの使い方を整理する. numpy.fftを正弦波で試したのでメモ. Discrete Fourier Transform (numpy.fft) — NumPy v2.0 Manual sinの(連続)フーリエ変換 sinのFFT (numpy.fft) ラ…

偏角でソート

与えられた点の集合を,偏角(あるいは原点と各点を通る直線の傾き)によってソートすることを考えます.まず,傾き(y / x)や偏角(atan2)を計算した上でソートすることが考えられます.しかし,この方法では,誤差によって正しくソートできない可能性が…

PythonでUnscented Kalman Filter (UKF)

以下の書籍の例をPythonで試しました.カルマンフィルタの基礎作者:足立修一,丸田一郎東京電機大学出版局Amazon【関連記事】 Pythonで拡張カルマンフィルタ - Notes_JP Unscented Kalman Filter (UKF) numpyによる実装 物体の落下運動(拡張カルマンフィルタ…

Pythonで拡張カルマンフィルタ

以下の書籍の例をPythonで試しました. また,拡張カルマンフィルタを使うと,(当然)線形カルマンフィルタの例も計算できることを確かめます.カルマンフィルタの基礎作者:足立修一,丸田一郎東京電機大学出版局Amazon【関連記事】 PythonでUnscented Kalma…

事象が起こるまでの試行回数

POINT 確率$0 確率$p$の$n$種類の当たりくじを全て当てるまでの試行回数の期待値は$\displaystyle \frac{1}{p}\sum_{k=1}^{n}\frac{1}{k}$. 様々な計算方法があります.中でも,条件付き期待値による方法は,直感を利用して計算を省略できるメリットがあり…

床関数・天井関数と関係式

POINT 床関数・天井関数の定義 競技プログラミングでよく使われる関係式の導出 分数のところの関係式が競技プログラミング(AtCoder,蟻本など)のコードでよく使われています.検索しても欲しい記事が出てこないので,自分で考えました. 床関数 天井関数 …

離散フーリエ変換(DFT)

POINT 離散フーリエ変換(DFT)に関するまとめ. 計算機では有限個の離散データしか扱えない.そこで,有限個の離散データを周期的に拡張して扱う. 非周期的なデータは扱えず,周期的なデータとなる. フーリエ変換は離散フーリエ変換(DFT)として扱い,高…

Python-可変長引数を持つ関数を積分する

POINT 動的に変数の数が変わる関数を「定義」する方法. 動的に変数の数が変わる関数を「積分」する方法. 思いついた方法をメモしておきます. 他にもっと良い方法があるかもしれません.ぜひ教えて下さい! やりたいこと 例1:1変数関数を掛け合わせる 可…

Pythonの「クラス」で遊ぶ:Wikipediaの球Bessel関数のグラフを描画

Wikipediaの球Bessel関数のグラフ(Spherical Bessel functions: jn, yn (Wikipedia))を描きます.クラスを使う必要はないのですが,あえてできるだけクラスを使ったコードで遊んでみました.クラスの簡単な使い方と同時に,キーワード可変長変数(**kwargs…

Python matplotlib animationで遊ぶ

POINT Pythonでアニメーションを作成する方法. 数値計算の結果の描画などに利用できる. 公開されているサンプルコードを少しいじって,挙動を確認した. Pythonでアニメーションを作成できることを知りました.二重振り子の微分方程式を解き,その運動をア…

Python(SciPy)で単振り子

POINT 単振り子の厳密解とPython(SciPy)の計算結果を比較する. 厳密解の導出を解説する. 数値計算の妥当性を確認するために,2通りの方法 常微分方程式をSciPy(odeint, ode, solve_ivp)を用いて解いたものをプロットする方法 厳密解を楕円積分・楕円関数を…

TikZ実例集〜2Dグラフ編

TikZで作った図(2D)POINT TikZで作成した図(2D)のソースコードを紹介! 3次元編はこちら ブログ記事のためにTikZで作成した図のTeXコードを,備忘録として残しておきます. ベクトルの回転(2次元) 二項分布 棄却域(統計的仮説検定) ベン図 ポートフ…

TikZ実例集〜3D編

TikZで作った図POINT TikZを使うと,TeX環境で簡単にきれいな図を作成することができる. TikZで作成した図(3D)のソースコードを紹介! TikZ実例集〜2Dグラフ編 - Notes_JP 記事のために作った図のTeXコード(TikZを利用)を,備忘録として残します. ベク…

【まとめ】バッチファイルでファイル名一括変更

POINT バッチファイルで複数のファイル名を変更(リネーム)する方法. ファイル名の切り出し,文頭への文字列追加,末尾への文字列追加の方法. 応用例として,バックアップを取ってから処理を行うバッチファイルを作成. バッチファイルで「フォルダ内のフ…

バッチファイルの例 (ループ・日付名フォルダ作成・pdf抽出・リネーム)

oNline Web Fonts POINT よく使うバッチファイルのテンプレート(変数を変更すればそのまま使える). ループ処理, 日付名フォルダの作成, 特定の拡張子のファイル抽出, ファイル名の一括変更. 「ループ処理」や「日付名フォルダの作成」,「特定の拡張子の…

PowerShellでExcel操作

POINT PowerShellでExcel操作する方法. データファイルの内容をテンプレートファイルに書き込む操作を自動化した. PowerShellでIEを操作したのに引き続き,Excelを操作してみました.やってみるととても簡単です! やりたいこと 実行結果 作成したコード …

PowerShellでIE操作〜Google検索編

POINT PowerShell+IEでGoogle検索する方法について紹介. ドラッグ&ドロップでPowerShellスクリプトを実行するバッチファイルも作成する. PowerShellを使ってIEを操作してみました.ポイントを備忘録として残しておきます. PowerShellを使えば,IEだけでは…

PythonでBloombergのグラフを再現

POINT Bloombergの「TOPIXと外国人投資家の売買動向のグラフ」を再現した. 以前の記事のプログラムを少し書き換えるだけで作成が可能. 毎週金曜日を目盛りにする方法がポイント. イントロ 結果 イントロBloombergの記事で,外国人投資家が12週ぶり買い越…

【Python】Matplotlibで2軸グラフ(折れ線グラフ+棒グラフ)

POINT Matplotlibで「折れ線グラフ」と「棒グラフ」の2軸グラフを作成した.横軸を日付にするには工夫が必要. Excelで作成したグラフと同じものを「簡単に」作成することができた. pandasでは階差や移動和などを求める関数が用意されている. 手っ取り早く…

外国人投資家動向と日経平均株価の関係を可視化

POINT 外国人投資家の売買動向による,日経平均株価への影響をPythonとExcelで可視化した. 週刊ダイヤモンドの図(3ヶ月単位)の再現に加え,1週間単位,1ヶ月単位でもプロットした. JPXで提供しているデータの最小単位である「1週間」のプロットでも,日…