Тема: як знайти максимум функції через метод Ньютона?
хто може допомогти? Я написав програму для пошуку коренів а ось для пошуку максимуму на відрізку не можу або я туплю підкажіть ПЖ.
#include "pch.h"
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
double f(double x)
{
double f;
f = tan(7 * x) + pow(x, 2) * sin(x) + 1;
return f;
}
double fp(double x)
{
double fp;
fp = pow(x, 2)*cos(x) + 7 / (cos(7 * x)*cos(7 * x)) + 2 * x*sin(x);
return fp;
}
double fpp(double x)
{
double fpp;
fpp = 4 * x*cos(x) + (2 - pow(x, 2))*sin(x) + 98 * sin(7 * x) / (cos(7 * x)*cos(7 * x)*cos(7 * x));
return fpp;
}
double maxf( double x, double eps)
{
double h, x1;
double x0 = x;
do
{
x1 = x0 - (fp(x0) / fpp(x0));
h = x1-x0;
x0 = x1;
} while (h > eps);
return x1;
}
double Root( double b, double eps)
{
double x = b;
double x0 = x;
while (abs(f(x)) > eps)
{
x = x0 - (f(x0) / fp(x0));
x0 = x;
}
return x;
}
int main()
{
setlocale(LC_ALL, "Rus");
double a, b, eps;
double *t = new double;
cout << "Введите границы отрезка [a;b] для нахождения корня функции ";
cout << "\nВведите левую границу отрезка a = "; cin >> a;
cout << "Введите правую границу отрезка b = "; cin >> b;
cout << "Введите значение погрешности E = "; cin >> eps;
cout << "\n";
if (a >= b)
{
cout << "Неверно указан интервал поиска" << endl;
system("pause");
return 0;
}
if (eps <= 0)
{
cout << "Значение погрешности должно быть положительным" << endl;
system("pause");
return 0;
}
if (Root(b, eps) > b || Root(b, eps) < a) {
cout << "На этом интервале корней нету!" << endl;
}else
cout << "Корень функции: " << Root(b, eps) << endl;
cout << "\nМаксимальное значение функции на заданном отрезке: f=" << maxf(b, eps) << endl;
delete t;
system("pause");
return 0;
}