//0JvQtdGJ0LXQvdC60L4=
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
double eps = 0.0001;
double f(const double x) {
return log(2 * x) - 9 * x + 4;
}
double PodilVidrizkaNaDva(double p, double q){
double a{};
while (fabs(p - q) >= eps) {
a = (p + q) / 2;
if (f(p) * f(a) < 0)
q = a;
else
p = a;
}
return a;
}
double ProstyhIteracyyFormula(const double x) {
// log2x = 9x - 4
// => x = (log2x + 4) / 9
return (log(2 * x) + 4) / 9;
}
double NewtonFormula(const double x) {
// x n+1 = x - f(xn)/f`(xn)
return x - f(x) / (1 / (2 * x) - 9);
}
double Iterations(double(*f)(double x), const double a) {
if (fabs(f(a) - f(f(a))) <= eps)
return f(a);
return Iterations(f, f(a));
}
double MethodHordFormula(const double a, const double b) {
return b - (f(b) * (b - a) / (f(b) - f(a)));
}
double Iterations(const double a, const double b) {
if (fabs(MethodHordFormula(a,b) - MethodHordFormula(b, MethodHordFormula(a,b))) <= eps)
return MethodHordFormula(a,b);
return Iterations(MethodHordFormula(a,b), MethodHordFormula(b, MethodHordFormula(a, b)));
}
int main()
{
cout << setprecision(10);
cout << "metod podilu navpil\t-> "<< PodilVidrizkaNaDva(0.1,1)<< endl;
cout << "metod hord\t-> " << Iterations(0.1, 0.5) << endl;
cout << "metod prostyh iteracy\t-> " << Iterations(ProstyhIteracyyFormula, 0.1) << endl;
cout << "Newton method\t-> " << Iterations(NewtonFormula, 0.1) << endl;
return 0;
}
Ly8wSnZRdGRHSjBMWFF2ZEM2MEw0PQojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxpb21hbmlwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmRvdWJsZSBlcHMgPSAwLjAwMDE7Cgpkb3VibGUgZihjb25zdCBkb3VibGUgeCkgewogICAgcmV0dXJuIGxvZygyICogeCkgLSA5ICogeCArIDQ7Cn0KZG91YmxlIFBvZGlsVmlkcml6a2FOYUR2YShkb3VibGUgcCwgZG91YmxlIHEpewoJZG91YmxlIGF7fTsKICAgIHdoaWxlIChmYWJzKHAgLSBxKSA+PSBlcHMpIHsKICAgICAgICBhID0gKHAgKyBxKSAvIDI7CgogICAgICAgIGlmIChmKHApICogZihhKSA8IDApCiAgICAgICAgICAgIHEgPSBhOwoKICAgICAgICBlbHNlCiAgICAgICAgICAgIHAgPSBhOwogICAgfQogICAgcmV0dXJuIGE7Cn0KZG91YmxlIFByb3N0eWhJdGVyYWN5eUZvcm11bGEoY29uc3QgZG91YmxlIHgpIHsKICAgIC8vIGxvZzJ4ID0gOXggLSA0CiAgICAvLyA9PiB4ID0gKGxvZzJ4ICsgNCkgLyA5CiAgICByZXR1cm4gKGxvZygyICogeCkgKyA0KSAvIDk7Cn0KCmRvdWJsZSBOZXd0b25Gb3JtdWxhKGNvbnN0IGRvdWJsZSB4KSB7CiAgICAvLyB4IG4rMSA9IHggLSBmKHhuKS9mYCh4bikKICAgIHJldHVybiB4IC0gZih4KSAvICgxIC8gKDIgKiB4KSAtIDkpOwp9Cgpkb3VibGUgSXRlcmF0aW9ucyhkb3VibGUoKmYpKGRvdWJsZSB4KSwgY29uc3QgZG91YmxlIGEpIHsKICAgIGlmIChmYWJzKGYoYSkgLSBmKGYoYSkpKSA8PSBlcHMpCiAgICAgICAgcmV0dXJuIGYoYSk7CiAgICByZXR1cm4gSXRlcmF0aW9ucyhmLCBmKGEpKTsKfQoKZG91YmxlIE1ldGhvZEhvcmRGb3JtdWxhKGNvbnN0IGRvdWJsZSBhLCBjb25zdCBkb3VibGUgYikgewogICAgcmV0dXJuIGIgLSAoZihiKSAqIChiIC0gYSkgLyAoZihiKSAtIGYoYSkpKTsKfQpkb3VibGUgSXRlcmF0aW9ucyhjb25zdCBkb3VibGUgYSwgY29uc3QgZG91YmxlIGIpIHsKICAgIAogICAgaWYgKGZhYnMoTWV0aG9kSG9yZEZvcm11bGEoYSxiKSAtIE1ldGhvZEhvcmRGb3JtdWxhKGIsIE1ldGhvZEhvcmRGb3JtdWxhKGEsYikpKSA8PSBlcHMpCiAgICAgICAgcmV0dXJuIE1ldGhvZEhvcmRGb3JtdWxhKGEsYik7CgogICAgcmV0dXJuIEl0ZXJhdGlvbnMoTWV0aG9kSG9yZEZvcm11bGEoYSxiKSwgTWV0aG9kSG9yZEZvcm11bGEoYiwgTWV0aG9kSG9yZEZvcm11bGEoYSwgYikpKTsKfQppbnQgbWFpbigpCnsKICAgIGNvdXQgPDwgc2V0cHJlY2lzaW9uKDEwKTsKICAgIGNvdXQgPDwgIm1ldG9kIHBvZGlsdSBuYXZwaWxcdC0+ICI8PCBQb2RpbFZpZHJpemthTmFEdmEoMC4xLDEpPDwgZW5kbDsKICAgIGNvdXQgPDwgIm1ldG9kIGhvcmRcdC0+ICIgPDwgSXRlcmF0aW9ucygwLjEsIDAuNSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgIm1ldG9kIHByb3N0eWggaXRlcmFjeVx0LT4gIiA8PCBJdGVyYXRpb25zKFByb3N0eWhJdGVyYWN5eUZvcm11bGEsIDAuMSkgPDwgZW5kbDsKCWNvdXQgPDwgIk5ld3RvbiBtZXRob2RcdC0+ICIgPDwgSXRlcmF0aW9ucyhOZXd0b25Gb3JtdWxhLCAwLjEpIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQ==