Метод ложного положения (нужна помощь) - PullRequest
0 голосов
/ 25 апреля 2011

Я пытаюсь написать код, чтобы найти корень нелинейных уравнений, используя метод ложного положения.
Я сделал с моим кодом, но у меня все еще есть проблема. Например, если я знаю, что корень между 5 и 6. поэтому я ввожу верхний предел как 7, а нижний как 6. Я все еще получаю рут. Я не понимаю, как метод ложного положения сходится, даже когда две первоначальные догадки не заключают в скобки корень.

Вот мой код:

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;
}

Ответы [ 2 ]

1 голос
/ 25 апреля 2011

Ваша функция сюжет и корни:

enter image description here

0 голосов
/ 25 апреля 2011

Но интервал IS заключает в квадрат корень.

...