コンピュータで問題を解く.
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>0
、A<0
でそれぞれ真偽の戻り値を返す
A>0
(正)の場合:1-0=1A<0
(負)の場合:0-1=-1A=0
0の場合:0-0=0
となる。
T(0)
となっている個所はそのTの型に応じて変換される。
sin,cosの信号から角度を割り出すタイプのエンコーダには必須の関数.
通常のatan関数と異なり,象限の場合分けが考慮される.
ODriveで使ってるatan2の近似関数
Atan2 Faster Approximation