Добавил:
ArGoN4ik
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / 1lab
.cpp#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
const double eps = 0.001;
double f(double x)
{
return log10(x) + sqrt(tan(x)) - 1 / x;
}
double f1(double x) //производная
{
double h = 0.5;
return (f(x + h) - f(x - h)) / (2 * h);
//return ((1 + x / log(10)) / pow(x,2)) + (((pow(1/(pow(cos(x),2)),2)) / (2*sqrt(tan(x)))));
}
void pol(double a, double b)
{
int count = 0;
double y;
double c;
do
{
c = (a + b) / 2;
if (f(c) * f(a) <= 0) b = c;
else a = c;
count++;
} while (fabs(a - b) >= eps);
cout << "Ответ: " << c << endl;
cout << "Количество итераций: " << count << endl;
y = f(c);
cout << "f(c) = " << y << endl;
}
void hord(double a, double b)
{
int count = 0;
double y;
while (fabs(f(b)) >= eps)
{
b = a - (a - b) * f(a) / (f(a) - f(b));
count++;
}
cout << "Ответ: " << b << endl;
cout << "Количество итераций: " << count << endl;
y = f(b);
cout << "f(c) = " << y << endl;
}
void nuton(double a, double b)
{
int n = 0;
double y;
double c = (a + b) / 2;
do {
c = c - f(c) / f1(c);
n++;
} while (fabs(f(c)) >= eps);
cout << "Ответ: " << c << endl;
cout << "Количество итераций: " << n << endl;
y = f(c);
cout << "f(c) = " << y << endl;
}
int main()
{
setlocale(LC_ALL, "Russian");
double a = 0.5, b = 1.5, c;
cout << "x: [" << a << " ;" << b << "]" << endl;
cout << "eps = " << eps << endl;
cout << endl << "Метод половин" << endl;
pol(a, b);
cout << endl << "Метод хорд" << endl;
hord(a, b);
cout << endl << "Метод Ньютона" << endl;
nuton(a, b);
return 0;
}