0

偽位置法を使用して非線形方程式の根を見つけるコードを作成しようとしています。
コードは完成しましたが、まだ問題があります。たとえば、ルートが 5 ~ 6 であることがわかっている場合、上限を 7、下限を 6 と入力します。それでもルートは取得されます。2 つの最初の推測がルートを囲んでいない場合でも、false position メソッドがどのように収束するのかわかりません。

これが私のコードです:

void main()
{   
    std::cout << "Enter the First Limit: " << std::endl;
    double x1;
    std::cin >> x1;

    std::cout << "Enter The Second Limit: " << std::endl;
    double x2;
    std::cin >> x2;

    std::cout << "\nThe root = " << iteration(x1,x2); << std::endl;
}

double f(double x)
{
  return pow(x,3) - 8*pow(x,2)+12*x-4;
}

// Evaluating the closer limit to the root
// to make sure that the closer limit is the
// one that moves and the other one is fixed

inline bool closerlimit(double u, double l)
{
  return fabs(f(u)) > fabs(f(l)));
}

double iteration(double u, double l)
{
  double s=0;
  for (int i=0; i<=10; i++)
  {
      s = u - ((f(u)*(l-u)) / (f(l)-f(u)));
      if (closerlimit(u,l))
        l = s;
      else
        u = s;
  }

  return s;
}
4

2 に答える 2

1

関数のプロットとルート:

ここに画像の説明を入力

于 2011-04-25T17:50:20.983 に答える
0

しかし、間隔はルートを囲んでいます。

于 2011-04-25T17:37:51.270 に答える