• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:二分法のサブ化する方法について)

C言語で二分法をサブ化する方法

このQ&Aのポイント
  • C言語の超初心者が二分法をサブ化しようとしていますが、うまくいきません。
  • 質問者はbisec関数をdouble()にするとエラーが出なくなりますが、その理由が分かりません。
  • 質問者は解を複数表示する方法が分からないと述べています。

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

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.2

数値解析では誤差を含んだ1つの解しか見つけることができません。その解が妥当であるかどうかは人間が検証する必要があります。逐次二分法では、通常、解の探索区間(x1,x2)を変更しながら複数回繰り返して探索します。しかし、f(x1),f(x2)の符号が同じであれば、その中に偶数個の解が含まれている可能性は否定できません。 今回のプログラムでは区間を指定できるように改造しておくといいでしょう。

kery21
質問者

お礼

遅くなってすみません。 ありがとうございました。

その他の回答 (1)

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

#include <iostream.h> #include <math.h> int main (void) { // double solution, x; double solution, x=0; // double bisec(double x); double bisec(double); solution=bisec(x); cout<<solution<<endl; return 0; } // double f(double x){ return 2*x-5;} //bisec sub double bisec(double x) { //double x, x0, x1, x2, y, y0, y1; double x0, x1, x2, y, y0, y1; X<10でしか答えが出ませんがそれはいいのですか。 double bisec(double); はプロトタイプ宣言ですから変数xを記入してはいけません。新たにxが宣言しようとしてしまい、前のxの宣言と重複します。 同様にsubのところも宣言が先に行われていますので、内部での宣言は不要です。

kery21
質問者

補足

ご回答ありがとうございます。大変よく理解できました。 二分法の解を複数得る方法は何かないでしょうか?よろしければお願いいたします。

関連するQ&A

専門家に質問してみよう