- C++
C++ | 処理時間を計測する – std::chrono
C++ にて処理時間を計測する方法を紹介します。標準ライブラリの chrono を利用したプログラム例です。 処理時間の計測 システム時刻は chrono::system_clock::now 関数で取得することができます。戻り値は time_point 型です。 time_point の差分を取得す... - C++
C++ | 2つの vector から unordered_map を初期化する
C++ での主とした辞書型に unordered_map があります。通常は key/value をセットとしたアイテムから要素を構築すると思います。 この記事では、通常の方式ではなく、 2つの vector (キー用 vector とバリュー用 vector)から unordered_map を構築する例... - C++
C++ | 自動微分でニュートン法を改善する
以前の記事で C++ でのニュートン法プログラム例を紹介しました。ニュートン法は、方程式を解くための求根アルゴリズムの一種ですが、対象関数の微分式が必要であるという特徴があります。 別の記事で、二重数による自動微分のプログラム例を紹介しました... - C++
C++ | ニュートン法で方程式を解く
方程式を解くための求根アルゴリズムのひとつにニュートン法があります。\(x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}\) の漸化式を反復的に計算して \(x\) の収束値を算出するアルゴリズムです。 この記事では、C++ でのニュートン法のプログラム例を紹介し... - C++
C++ | 二重数で自動微分を計算する
関数の微分値を計算する方法はいくつかあります。この記事では、二重数を用いて自動で一次微分を計算する方法を紹介します。 二重数とは、\(a + b\varepsilon\) で表される数値です。ここで \(\varepsilon\) は、二乗すると 0 になる元を表します。 例えば... - C++
C++ | 二分法 プログラム例
二分法は、数値形跡における求根アルゴリズムのひとつです。反復法によって任意の方程式を解くためのアルゴリズムです。 \(x\) の上限と下限を初期値として、区間を半分ずつ狭めていくことにより、\(f(x) = 0\) を満たすような \(x\) を探索する手法です。... - Python
Python | dict を toml 形式の文字列に変換する
Python 3.11 にて標準ライブラリに tomllib が追加され、toml ファイルを dict として読み込むことが可能になりました。しかし、dict を toml として出力する機能がないため、これを実現したい場合は他の手段を検討する必要があります。 toml の構造を厳密... - Rust
Rust | 単方向リストを自作する – enum の活用例
基本的なデータ型の一つに、単方向リストがあります。関数型プログラミングの基本型としてよく利用されるものです。 この記事では、Rust での単方向リストの実装例を紹介します。 なお、実際の開発においては、Rust で関数型プログラミングを記述するため... - C++
C++ | vector を結合する(コピー方式・ムーブ方式)
C++ で vector を結合する方法を紹介します。 コピーで vector を結合する まずは要素のコピーで vector を結合する方法です。vector の要素が次に該当する場合は、この手法を用いるのが良いです。 要素の型が shared_ptr である場合 要素が軽量であり、か... - Python
Python | dict を結合する(update, {}初期化, |演算子, dict初期化)
Python で2つの dict を結合する実装パターンをいくつか掲載します。 update メソッドで更新する dict クラスには update メソッドがあり、これで dict の結合ができます。 Pythondict1 = {"a": 1, "b": 2, "c": 3} dict2 ...