Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 3
1

Найти минимум функции

27.11.2018, 15:10. Показов 1919. Ответов 3
Метки нет (Все метки)

Доброго времени суток. Нужно минимизировать функцию f(x,y)=(1-x)^2+100*(y-x*x)^2; используя следующие методы:
1. Золотого сечения;
2. Дихотомии;
3. Нелдера-Мида;
4. Градиентов;
5. Сопряженных градиентов;

Я начал делать только метод золотого сечения, если есть знатоки был бы признателен за помощь в решение по данным методам.
Мне необходимо знать, как можно решить данными методами функцию. Знаю только С++ на уровне junior.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2018, 15:10
Ответы с готовыми решениями:

Найти минимум функции двух переменных
Помогите пожалуйста решить пример из них 18 на фотке

Найти минимум функции методом кубической параболы
Добрый вечер. Делаю лабораторную работу по c++ (нахождение минимума функции методом кубической...

Найти приближенно, с точностью до 0.01, минимум функции на отрезке
Найти приближенно, с точностью до 0.01, минимум функции f(x) = ax2+bx+c на отрезке x1<=x<=x2....

Найти минимум функции методом золотого сечения.
Помогите пожалуйста!... Нужно найти минимум функции у=х*х-sinх методом золотого сечения. в СИ....

3
0 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 3
28.11.2018, 16:09  [ТС] 2
Для золотого сечения получилось следующие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "pch.h"
#include <iostream>
#include <math.h>
 
using namespace std;
 
double function(double x, double y)
{
    return (1 - x) * 2 + 100 * (y - x * x) * 2;
 
}
int main()
{
    double gold = (sqrt(5.) - 1.) / 2.; // "Золотое" число
    double eps = 1e-7;
    double a = -0.5;// Концы отрезка
    double b = 0.5;// Концы отрезка
    double x1, y1;// Точки, делящие текущий отрезок в отношении золотого сечения
    while (b - a > eps)
    {
        x1 = b - gold * (b - a);
        y1 = a + gold * (b - a);
        if (function(x1) > function(y1))// Условие для поиска максимума
            b = y1;
        else
            a = x1;
    }
    cout << "(" << (a + b) / 2 << ", " << function((a + b) / 2) << ")";
    return 0;
}// Выполняем, пока не достигнем заданной точности
Но выдает следующие ошибки:
  • E0165 слишком мало аргументов в вызове функции
  • C2660 function: функция не принимает 1 аргументов
Пока не разобрался, почему так.
0
226 / 109 / 34
Регистрация: 25.11.2017
Сообщений: 380
20.12.2018, 12:58 3
Цитата Сообщение от Adeck Посмотреть сообщение
double function(double x, double y)
У вас функция 2-х переменных, а вызываете вы ее с одной. Вот и не работает.
0
1735 / 922 / 383
Регистрация: 11.10.2018
Сообщений: 4,825
20.12.2018, 13:06 4
Цитата Сообщение от Adeck Посмотреть сообщение
C++
1
(y - x * x) * 2;
- так не умножить на 2, а в степени 2.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2018, 13:06

Найти минимум элементов массива с помощью рекурсивной функции min1(k)
Есть небольшая задача: Дан массив целых чисел. Найти минимум его элементов с помощью рекурсивной...

Двумерные массивы Найти минимум получить новую матрицу деленные на минимум
Дана матрица размером N x M. Найти в ней наименьший элемент. Получить новую матрицу, элементы...

Вычислить значение функции, шаг пользователь задает сам, найти максимум и минимум
Помогите пожалуйста с программой. Вычислить значения функции в интервале 0 &lt; x &lt;1. Определить...

минимум функции
код программы вычисляющий минимум и максимум функции y=10*x*x+5*x+9, на отрезке от -10 до 10.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.