Я пытаюсь написать код, чтобы найти корень нелинейных уравнений, используя метод ложного положения.
Я сделал с моим кодом, но у меня все еще есть проблема.
Например, если я знаю, что корень между 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;
}