#include <iostream>
#include <iomanip>
#include <cassert>
#include <cmath>
using namespace std;
//Метод деления отрезка пополам
double bisekcii(double a, double b, double e, int& i, double (*f)(double))
{
i = 0;
double fa = f(a), fb = f(b);
assert(fa*fb < 0);
while(b-a >= e)
{
double c=(a+b)/2;
double fc = f(c);
if (fa*fc <= 0)
b=c;
else
a=c;
i++;
}
return (a+b)/2.0;
}
double iteracii(double x, double e, int& i, double (*f)(double))
{
i=0;
double y = f(x);
while(fabs(y-x) >=e )
{
x = y;
y = f(x);
i++;
}
return y;
}
double f1(double x)
{
return 1/(1.2*tan(x)+sqrt(x+1))-x;
}
double f2(double x)
{
double z = (sin(x)+cos(x));
z = z*z;
return z*z/(33.5*33.5*33.5*33.5)/3+sqrt(3./7);
}
double f3(double x)
{
return f2(x)-x;
}
int main(int argc, char * argv[])
{
int it;
cout << bisekcii(0,2,1e-8,it,f1);
cout << " Iterations: " << it << endl;
cout << iteracii(0,1e-8,it,f2);
cout << " Iterations: " << it << endl;
cout << bisekcii(0,2,1e-8,it,f3);
cout << " Iterations: " << it << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDxjbWF0aD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovL9Cc0LXRgtC+0LQg0LTQtdC70LXQvdC40Y8g0L7RgtGA0LXQt9C60LAg0L/QvtC/0L7Qu9Cw0LwKZG91YmxlIGJpc2VrY2lpKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGUsIGludCYgaSwgZG91YmxlICgqZikoZG91YmxlKSkKewogICAgaSA9IDA7CiAgICBkb3VibGUgZmEgPSBmKGEpLCBmYiA9IGYoYik7CiAgICBhc3NlcnQoZmEqZmIgPCAwKTsKICAgIHdoaWxlKGItYSA+PSBlKQogICAgewogICAgICAgIGRvdWJsZSBjPShhK2IpLzI7CiAgICAgICAgZG91YmxlIGZjID0gZihjKTsKICAgICAgICBpZiAoZmEqZmMgPD0gMCkKICAgICAgICAgICAgYj1jOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYT1jOwogICAgICAgIGkrKzsKICAgIH0KICAgIHJldHVybiAoYStiKS8yLjA7Cn0KCgpkb3VibGUgaXRlcmFjaWkoZG91YmxlIHgsIGRvdWJsZSBlLCBpbnQmIGksIGRvdWJsZSAoKmYpKGRvdWJsZSkpCnsKICAgIGk9MDsKCiAgICBkb3VibGUgeSA9IGYoeCk7CgogICAgd2hpbGUoZmFicyh5LXgpID49ZSApCiAgICB7CiAgICAgICAgeCA9IHk7CiAgICAgICAgeSA9IGYoeCk7CiAgICAgICAgaSsrOwogICAgfQogICAgcmV0dXJuIHk7Cn0KCmRvdWJsZSBmMShkb3VibGUgeCkKewogICAgcmV0dXJuIDEvKDEuMip0YW4oeCkrc3FydCh4KzEpKS14Owp9Cgpkb3VibGUgZjIoZG91YmxlIHgpCnsKICAgIGRvdWJsZSB6ID0gKHNpbih4KStjb3MoeCkpOwogICAgeiA9IHoqejsKCiAgICByZXR1cm4geip6LygzMy41KjMzLjUqMzMuNSozMy41KS8zK3NxcnQoMy4vNyk7Cn0KCmRvdWJsZSBmMyhkb3VibGUgeCkKewogICAgcmV0dXJuIGYyKHgpLXg7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyICogYXJndltdKQp7CiAgICBpbnQgaXQ7CiAgICBjb3V0IDw8IGJpc2VrY2lpKDAsMiwxZS04LGl0LGYxKTsKICAgIGNvdXQgPDwgIiAgSXRlcmF0aW9uczogIiA8PCBpdCA8PCBlbmRsOwoKICAgIGNvdXQgPDwgaXRlcmFjaWkoMCwxZS04LGl0LGYyKTsKICAgIGNvdXQgPDwgIiAgSXRlcmF0aW9uczogIiA8PCBpdCA8PCBlbmRsOwoKICAgIGNvdXQgPDwgYmlzZWtjaWkoMCwyLDFlLTgsaXQsZjMpOwogICAgY291dCA8PCAiICBJdGVyYXRpb25zOiAiIDw8IGl0IDw8IGVuZGw7Cgp9Cg==