演習課題「相対誤差による高速化」
右側のコードエリアには、絶対誤差を基準にして、ある関数が一定の値を超える境界を求める二分探索プログラムが実装されています。
このコードの終了条件や、中間値の計算方法を変更して、より高速に計算するプログラムを作成してみましょう。
なお、このコードでは実行時エラーのところに合計ループ回数が出力されるようにしてあります。
また、この演習課題はデフォルトコードでも正解になりますが、より高速に計算するプログラムを作成した場合でも正解になるように取り組んでみてください。
期待する出力値
3.427
※有料会員になるとこの動画をご利用いただけます
詳しい説明を読む
#02:二分探索の詳細
このチャプターでは、初期値の決め方、終了条件、中間値の計算方法といった二分探索の詳細について学習します。
・f(l) ≠ f(r)
・l < x < r で f(x) が計算できる
・整数 → l = (答えの最小値 - 1), r = (答えの最大値 + 1)
・浮動小数点数 → l = (答えの最小値), r = (答えの最大値)
・整数 → r – l ≦ 1
・浮動小数点数、絶対誤差 → r – l ≦ ε
・浮動小数点数、相対誤差 → (r – l) / l ≦ ε
・イテレーション数
・整数 → ⌊(l + r) / 2⌋
・浮動小数点数、絶対誤差 → (l + r) / 2
・浮動小数点数、相対誤差 → √(l × r)
ログインすると採点できます
コードの実行