オイラー法
https://algorithm.joho.info/mathematics/euler-method-program/
- これ読んで理解した
- 注意: ↑のページでいうtは導関数の定義でいうとこのxに対応、xはyに対応している
- 注意: この例だとdxdt()はxを引数に取っているけど、xとtの両方を本当は取るべき
- https://qiita.com/Sunset_Yuhi/items/fb574091fe380e677735
- こっちの方が正確でより良いコード
eular.py
|
|
Search
https://algorithm.joho.info/mathematics/euler-method-program/
eular.py
|
|
... for i in range(len(x)): gradients.append(1) return gradients オイラー法 def euler(num, x0, t0, tn, h): x = x0.copy() t = t0.copy() ...
...gradient += ((sigmoid(xother - xi) - 0.5) / 10) / len(x) gradient = max(gradient, 0.8) gradient = min(gradient, 1.2) gradients.append(gradient) return gradients 雑で長い(どうせswiftで書き直すのでとりあえず雑に作った) 仕組み DBSCAN的なクラスタリングをした クラスタ内なら普通にsigmoidで引き寄せ クラスタ外なら弱めに引き寄せ あと制限もつけた、0.8~1.2 epsの値は悩む 以下ランダムにジェネレートした実行例 (eps=5) 結構理想系ではある 問題点 人数がめっちゃ大量になると、全部一つのクラスタになってしまう なにかしらのlimitはつけるべき sigmoidでaverageによってくモデルもありかも(TODO) さまざまなepsでクラスタリングやって、小さいepsで含まれるやつほど重み強めとかもありかも 実装 KinetoWatcherで見たやつ これは、ただの平均値吸い寄せモデル(Trial......