Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 1lab

.cpp
Скачиваний:
1
Добавлен:
26.01.2024
Размер:
1.64 Кб
Скачать
#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;
}
Соседние файлы в папке Лабы