ゴールシークとマクロ ① 無限遠からのアプローチ(2)
先日は、複数の解を持つ関数についてゴールシークを行う場合、限りなく大きな値から探しに行くことを検討してみた。
infoment.hatenablog.com
結果、消費税のように単純な計算式の場合、「10の30乗」という大きな値からのアプローチでも、一瞬で計算できることがわかった。
そしてここから、つまづきの連続が始まる。
まず、複数の解があるというのに、消費税という「一次関数」で検証した点を反省し、4次関数で試してみた。
この関数で y=0となるのは、以下の四通りだ。
- x=1
- x=2
- x=3
- x=4
では、この数式に於いて「10の30乗」からy=0となるxの値をゴールシークで求めるとどうなるか、試してみた。先日の検証では、10の30乗に最も近い「4」が求まるはずだ。
Sub GoalSeekTest() Range("G3") = 10 ^ 30 Range("H3").GoalSeek Goal:=0, ChangingCell:=Range("G3") End Sub
結果は、以下の通り。
謎の数値が返ってきた。どうやら次数が高い方程式の場合、あまりにも遠くからゴールを目指すと、正しい答えを導けないらしい。
その後に検証したところ、開始位置となる値を充分小さくすれば、正解に辿り着けることが分かった。
しかし、関数の次数で開始位置を求めるのは難しい。そもそも、どのような理屈でゴールシークを行っているか分からないので、仕組みの作りようがない。さて、どうしよう。
これが、第一の躓き。
※まだ解決していません。次回に続きます。
参考まで。