• ベストアンサー

プログラム

2分法のプログラムを書いたとします。2分法とは区間[x1,x2]の中点をPと置くと、P=(x1+x2)/2で計算出来ます。この計算はx1+(x2-x1)/2とも表せますが、双方の書き方に違いはあるのでしょうか。教えて下さい。

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

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

 x1とx2がint型であれば、桁あふれを防ぐためにx1+(x2-x1)/2とすることがあります。double型だったら、#2の回答者のおっしゃるとおり(x1+x2)/2をつかうほうが演算回数が少ないし、桁落ちもないので優っています。指数部桁あふれを心配するなら、x1/2+x2/2とすればよいでしょう。  x1とx2が同じ配列の別の要素へのポインタで、その中央の要素へのポインタを求めたいときは、x1+x2とは書けないので、x1+(x2-x1)/2と書くことになるでしょう。

wwjpdamg
質問者

お礼

ありがとうございました

その他の回答 (2)

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.2

前者は演算が2(和、商) 後者は演算が3(差、商、和) 前者の方が効率的。 また、x1,x2の値が非常に近い場合、後者は有効数字桁落ちの可能性があるかも。

wwjpdamg
質問者

お礼

回答ありがとうございます

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

私だったら、自分でサンプル・プログラムを書いて実験してみますね。 まずは、そういう発想を身につける方がよいのではないでしょうか。人に聞くよりも先に。

関連するQ&A