Excel2013 on Windows 8.1 pro
try1
テスト用の式
http://qiita.com/7of9/items/cab3ff2cadcf2c6e365b
でやろうとしていたことを少しだけ進めることにする。
とりあえずEXCELで計算できるような式をたてる。
上に凸の2次関数を使おうとしてみた。2変数で以下の式を適当に立てた。
f = -0.1 * (C3 - 3.14) * (C3 - 3.14) - (C4 - 2.718) * (C4 - 2.718) + 9
C3 : distance[m]
C4 : elapsed[sec]
2変数でのソルバー
2変数をパラメータにして上記の関数の最大値を求めると以下が得られた。
distance[m] = 3.13999978290202
elapsed[sec] = 2.71799734050838
f = 9
自分が確認しようとしていることとどうも違う。
try2
式を変更した。
式
パラメータ
- distanceX [m] > 初期値 3.0
- coeff > 初期値 2.0
加えて elapsed(sec)という変数を追加して、1から10のデータを作成。
それぞれのelapsed(sec)に対応する値の計算は以下とした。
= -($C$3 - 3.1415)^2 *B11 + -($C$4 - 2.7182)^2 / B11
こうして得られた10セットの値に対して、R2の値を計算し、R2が最大になるようにソルバーを設定した。
= RSQ(B11:B20, C11:C20) // R2の式
これを使うことにしよう。
結果例
- 2変数に対するソルバーの解
- distanceX[m] = 3.14149999662093
- coeff = 1.98250447101389
- 0.653884
- 1変数に対するソルバーの解
- distanceX[m] = 3.15に設定
- coeffをソルバーで解く > 0になってしまった。
1変数のソルバーで解が0になってしまうのが良くない。失敗。
方針変更
ウィル・ロジャーズ @ Grenning
穴にはまっていることに気づいたら、掘るのをやめよう
穴にはまっている。やめた。
現在の問題は「2変数のソルバーでは精度が出ていて、1変数のソルバー時に精度が出ていない」。2変数のソルバーでなく、1変数のソルバーに集中する。