#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#define PI 3.14159
double formula (double x) {
return (pow(x, 3)* cos(3*PI*x)*exp(x)-pow(x,2)*cos(2*PI*x)*exp(0.5*x)+5);
}
double der2 (double x) {
return -9*pow(PI,2)*exp(x)*pow(x,3)*cos(3*PI*x)-0.25 * exp(0.5*x)*pow(x, 2)*cos(2*PI*x)-exp(0.5*x)*(-4*pow(PI,2)*pow(x,2)*cos(2*PI*x)-8*PI*x*sin(2*PI*x)+2*cos(2*PI*x))-exp(0.5*x)*(2*x*cos(2*PI*x)-2*PI*x*x*sin(2*PI*x))-6*PI*(exp(x)*pow(x,3)+3*exp(x)*pow(x,2))*sin(3*PI*x)+(exp(x)*pow(x,3)+6*exp(x)*pow(x,2)+6*exp(x)*x)*cos(3*PI*x);
}
double halfDiv (double a, double b) {
double x = (a + b) / 2;
while (abs(b - a) > 0.00001) {
if (formula(b)*formula(x)<0) a = x;
else b = x;
x = (a + b)/2;
}
return x;
}
double horda(double a, double b){
double c;
while (abs(formula(b) - formula(a)) > 0.00001)
{
c = (formula(b)*a - formula(a)*b)/(formula(b)-formula(a));
if ((formula(a)*formula(c))>0) a=c;
else b = c;
}
return b;
}
double touch (double a, double b) {
double c = (formula(a)*der2(a)>0) ? a : b;
double fc;
double fder2;
double d = 0;
do {
d += c;
fc = formula(c);
fder2 = der2(c);
c -= fc/fder2;
d -= c;
d = abs(d);
} while (d > 0.00001);
return c;
}
int main()
{
double x1, x2;
setlocale(LC_ALL, "rus");
printf("Введите через пробел концы отрезка (a и b соответственно): ");
scanf("%lf %lf", &x1, &x2);
if (formula(x1)*formula(x2)>0) printf("Невалидный интервал!");
else printf("Решение методом деления пополам:\nx = %lf\nf(x) = %lf\n\nРешение методом хорд:\nx = %lf\nf(x) = %lf\n\nРешение методом касательных:\nx = %lf\nf(x) = %lf",halfDiv(x1, x2), formula(halfDiv(x1,x2)), horda(x1,x2), formula(horda(x1,x2)), touch(x1,x2), formula(touch(x1,x2)));
return 0;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxsb2NhbGUuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2RlZmluZSBQSSAzLjE0MTU5CgoKZG91YmxlIGZvcm11bGEgKGRvdWJsZSB4KSB7CiAgICByZXR1cm4gKHBvdyh4LCAzKSogY29zKDMqUEkqeCkqZXhwKHgpLXBvdyh4LDIpKmNvcygyKlBJKngpKmV4cCgwLjUqeCkrNSk7Cn0KCmRvdWJsZSBkZXIyIChkb3VibGUgeCkgewogICAgcmV0dXJuIC05KnBvdyhQSSwyKSpleHAoeCkqcG93KHgsMykqY29zKDMqUEkqeCktMC4yNSAqIGV4cCgwLjUqeCkqcG93KHgsIDIpKmNvcygyKlBJKngpLWV4cCgwLjUqeCkqKC00KnBvdyhQSSwyKSpwb3coeCwyKSpjb3MoMipQSSp4KS04KlBJKngqc2luKDIqUEkqeCkrMipjb3MoMipQSSp4KSktZXhwKDAuNSp4KSooMip4KmNvcygyKlBJKngpLTIqUEkqeCp4KnNpbigyKlBJKngpKS02KlBJKihleHAoeCkqcG93KHgsMykrMypleHAoeCkqcG93KHgsMikpKnNpbigzKlBJKngpKyhleHAoeCkqcG93KHgsMykrNipleHAoeCkqcG93KHgsMikrNipleHAoeCkqeCkqY29zKDMqUEkqeCk7Cn0KCmRvdWJsZSBoYWxmRGl2IChkb3VibGUgYSwgZG91YmxlIGIpIHsKICAgIGRvdWJsZSB4ID0gKGEgKyBiKSAvIDI7CiAgICB3aGlsZSAoYWJzKGIgLSBhKSA+IDAuMDAwMDEpIHsKICAgICAgICBpZiAoZm9ybXVsYShiKSpmb3JtdWxhKHgpPDApIGEgPSB4OwogICAgICAgIGVsc2UgYiA9IHg7CiAgICAgICAgeCA9IChhICsgYikvMjsKICAgIH0KICAgIHJldHVybiB4Owp9Cgpkb3VibGUgaG9yZGEoZG91YmxlIGEsIGRvdWJsZSBiKXsKICAgIGRvdWJsZSBjOwogICAgd2hpbGUgKGFicyhmb3JtdWxhKGIpIC0gZm9ybXVsYShhKSkgPiAwLjAwMDAxKQogICAgewogICAgICAgIGMgPSAoZm9ybXVsYShiKSphIC0gZm9ybXVsYShhKSpiKS8oZm9ybXVsYShiKS1mb3JtdWxhKGEpKTsKICAgICAgICBpZiAoKGZvcm11bGEoYSkqZm9ybXVsYShjKSk+MCkgYT1jOwogICAgICAgIGVsc2UgYiA9IGM7CiAgICB9CiAgICByZXR1cm4gYjsKfQoKZG91YmxlIHRvdWNoIChkb3VibGUgYSwgZG91YmxlIGIpIHsKICAgIGRvdWJsZSBjID0gKGZvcm11bGEoYSkqZGVyMihhKT4wKSA/IGEgOiBiOwogICAgZG91YmxlIGZjOwogICAgZG91YmxlIGZkZXIyOwogICAgZG91YmxlIGQgPSAwOwogICAgZG8gewogICAgICAgIGQgKz0gYzsKICAgICAgICBmYyA9IGZvcm11bGEoYyk7CiAgICAgICAgZmRlcjIgPSBkZXIyKGMpOwogICAgICAgIGMgLT0gZmMvZmRlcjI7CiAgICAgICAgZCAtPSBjOwogICAgICAgIGQgPSBhYnMoZCk7CiAgICB9IHdoaWxlIChkID4gMC4wMDAwMSk7CiAgICByZXR1cm4gYzsKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgeDEsIHgyOwogICAgc2V0bG9jYWxlKExDX0FMTCwgInJ1cyIpOwogICAgcHJpbnRmKCLQktCy0LXQtNC40YLQtSDRh9C10YDQtdC3INC/0YDQvtCx0LXQuyDQutC+0L3RhtGLINC+0YLRgNC10LfQutCwIChhINC4IGIg0YHQvtC+0YLQstC10YLRgdGC0LLQtdC90L3Qvik6ICIpOwogICAgc2NhbmYoIiVsZiAlbGYiLCAmeDEsICZ4Mik7CiAgICBpZiAoZm9ybXVsYSh4MSkqZm9ybXVsYSh4Mik+MCkgcHJpbnRmKCLQndC10LLQsNC70LjQtNC90YvQuSDQuNC90YLQtdGA0LLQsNC7ISIpOwogICAgZWxzZSBwcmludGYoItCg0LXRiNC10L3QuNC1INC80LXRgtC+0LTQvtC8INC00LXQu9C10L3QuNGPINC/0L7Qv9C+0LvQsNC8OlxueCA9ICVsZlxuZih4KSA9ICVsZlxuXG7QoNC10YjQtdC90LjQtSDQvNC10YLQvtC00L7QvCDRhdC+0YDQtDpcbnggPSAlbGZcbmYoeCkgPSAlbGZcblxu0KDQtdGI0LXQvdC40LUg0LzQtdGC0L7QtNC+0Lwg0LrQsNGB0LDRgtC10LvRjNC90YvRhTpcbnggPSAlbGZcbmYoeCkgPSAlbGYiLGhhbGZEaXYoeDEsIHgyKSwgZm9ybXVsYShoYWxmRGl2KHgxLHgyKSksIGhvcmRhKHgxLHgyKSwgZm9ybXVsYShob3JkYSh4MSx4MikpLCB0b3VjaCh4MSx4MiksIGZvcm11bGEodG91Y2goeDEseDIpKSk7CiAgICByZXR1cm4gMDsKfQ==