Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2018, 18:36   #1
Badan
 
Регистрация: 18.09.2018
Сообщений: 5
Восклицание как найти максимум функции через метод ньютона?

кто может помочь? Я написал программу для поиска корней а вот для поиска максимума на отрезке не могу или я туплю подскажите пж .
Код:
#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;
}
Badan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить максимум и минимум в массиве через класс Random? делал через Intellig Idea Миша58 Общие вопросы по Java, Java SE, Kotlin 1 10.10.2017 10:44
Найти максимум функции Конь Антон Паскаль, Turbo Pascal, PascalABC.NET 1 24.05.2015 16:54
как найти минимум и максимум при помощи процедуры,место функции _domenik_ Паскаль, Turbo Pascal, PascalABC.NET 1 25.02.2014 11:42
VBA for access как найти максимум romanln2012 Microsoft Office Access 1 09.08.2012 17:02
как отсортировать массив под данный отрезок и как минимум и максимум из него найти SIEGER Паскаль, Turbo Pascal, PascalABC.NET 1 20.11.2008 08:58