numerical_calculation

数値計算

コンピュータで問題を解く.
C++、Visual Studio Codeを使う場合には拡張機能入れたり環境の設定をする必要がある.
MacはXCodeのCommand Line Toolsを入れる(Homebrew入れる時に入ってるはず).WinwosはMinGWとかを入れる.

数値計算でのC言語の有名な書籍はNumerical Recipe in C
日本語の訳本がある.
どうやらC++版が原著だとあるらしい.
Financial Numerical Recipes in C ++
勉強用写経リポジトリ

section1-2でvectorを使おとしたらエラーった。

non-aggregate type ‘vector<int>’ cannot be initialized with an initializer list

指定するコンパイラが古いらしい、C++11とか新しめのやつを使うようにしていすばよい.
HomebrewでCommand Line Tools入れただけなのでデフォルトでC++11を使うように設定をいじりたいところ。

アルゴリズム

https://space-denpa.jp/2018/03/07/neumerical_analysis/
↑を自分でも写経してみること

引数の符号を返す関数。いい感じの書き方を見つけたのでメモ

template <typename T> int sgn(T val) {
    return (T(0) < val) - (val < T(0));
}

A>0A<0でそれぞれ真偽の戻り値を返す

  • A>0(正)の場合:1-0=1
  • A<0(負)の場合:0-1=-1
  • A=00の場合:0-0=0

となる。 T(0)となっている個所はそのTの型に応じて変換される。

sin,cosの信号から角度を割り出すタイプのエンコーダには必須の関数.
通常のatan関数と異なり,象限の場合分けが考慮される.

ODriveで使ってるatan2の近似関数 Atan2 Faster Approximation

参考文献

  • numerical_calculation.txt
  • 最終更新: 2024/06/20
  • by yuqlid