• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:二分法で関数の最小値を求める)

二分法で関数の最小値を求める

このQ&Aのポイント
  • プログラムを組んだがうまくいかない。原因は?
  • 関数f1とf2の最小値が0になる。
  • プログラムの形は変更せずにminfx内のみ変更する。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

では、ヒントだけ。 double を返す関数を抜けるとき、最後に実行されるのは、 return (式) でなければなります。 これだけでわからなければ、これを念頭に置いて、再帰で定義されたフィボナッチ数列とか、階乗とかのソースを探して眺めてみると、何かひらめくかもしれません。 あと、No.2 でも指摘されていますが、「最小値を求める」ためののだとすると、ロジック自体も間違っています。 よくある、方程式を解く(関数が0を横切る点を探す)のなら、一定の条件下では両端を見れば良いですが(両端の符号が異なれば、とりあえず少なくとも一個はゼロ点があるのは保証されるので)、最小値を探すのであれば、両端だけを見ても探索はできません。

aida13
質問者

お礼

ありがとうございます。ヒントを参考に探してみたいと思います。

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

再帰呼び出しのminfxの戻り値を現在は破棄しています これを捨ててしまっては 思い通りの結果にならないでしょう

aida13
質問者

補足

回答ありがとうございます。再帰呼び出しの仕方がまずいんでしょうか。再帰呼び出し時に値が破棄されているということはそういうことですよね。うーん、minfxではダメなんでしょうか…。しかし再帰ですからこれでいいと思うのですが…。

回答No.2

http://ideone.com/dlxJZ まぁ確かに、27行目を修正する必要が有るのはわかる。確かにわかる。 (多分コンパイラにとって文法上そこにあることがわかるのが29行目がはじめなんだろう) #system関数は意図的に削った。あともう一つのエラーは質問者宛に残しておく ==================== ##ただ、正直出題者が何を考えて出したのかがわからない。 ##例えば添付したような画像のグラフだと、最小値がいきなり右側にあることになっちゃうでしょ?(左側の垂直な直線がx = a,左側の垂直な直線がx = b,として点線がその中心とする)

aida13
質問者

補足

回答ありがとうございます。必要なのはプログラムが通るかどうかなので関数の値はあまり考慮していません。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

minfx は何を返すの?

関連するQ&A

専門家に質問してみよう