Форум программистов, компьютерный форум CyberForum.ru

Нахождение минимума функции на интервале способом перебора - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
BennyVorona
3 / 3 / 1
Регистрация: 18.12.2013
Сообщений: 16
27.03.2014, 10:17     Нахождение минимума функции на интервале способом перебора #1
Помогите реализовать программу, которая позволяет найти минимум некоторой функции на заданном интервале. Алгоритм нахождения минимума заключается в последовательном переборе с заданным шагом точек интервала и сравнении значений функции в текущей точке с ранее найденным минимумом. Нахождение минимума реализовать отдельной функцией. Параметры функции - интервал, указатель на функцию, для которой ищется минимум, и шаг (по умолчанию шаг равен 0.00001). Разместить все функции, кроме main(), в отдельной единице трансляции (заголовочный файл и файл реализации).
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 10:17     Нахождение минимума функции на интервале способом перебора
Посмотрите здесь:

нахождение корня на интервале C++
C++ Непрерывные функции и нахождение минимума на отрезке
C++ Нахождение локального минимума
C++ Рекурсия, нахождение минимума в массиве
Нахождение минимума k в матрице C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
27.03.2014, 11:00     Нахождение минимума функции на интервале способом перебора #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
typedef (*Func)(double x);
 
double Solve(double Start, double End, Func f, double Step = 0.00001)
{
double xMin = Start;
double fMin = f(Start);
while(Start < End)
{
if(f(Start) < fMin)
{
xMin = Start;
fMin = f(Start);
}
Start +=Step;
}
return xMin;
}
вот ф-ция которая ищет минимум, остальное я думаю сможете доделать
BennyVorona
3 / 3 / 1
Регистрация: 18.12.2013
Сообщений: 16
27.03.2014, 13:25  [ТС]     Нахождение минимума функции на интервале способом перебора #3
1>------ Сборка начата: проект: МинимумФункции, Конфигурация: Debug Win32 ------
1> МинимумФункции.cpp
1>c:\users\documents\visual studio 2013\projects\минимумфункции\минимумфункции\somefile.h(3): error C2061: синтаксическая ошибка: идентификатор "Func"
1> SomeFile.cpp
1>c:\users\documents\visual studio 2013\projects\минимумфункции\минимумфункции\somefile.h(3): error C2061: синтаксическая ошибка: идентификатор "Func"
1>c:\users\documents\visual studio 2013\projects\минимумфункции\минимумфункции\somefile.cpp(5): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1> Создание кода...
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Ошибка в строке typedef (*Func)(double x);

Добавлено через 9 минут
aLarman, Пожалуйста напишите полностью, а то все ошибки выдает. Функцию можете взять x * x + 2 * x;
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
27.03.2014, 14:01     Нахождение минимума функции на интервале способом перебора #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
31
32
double Function(double x)
{
    return x*x+2.*x;
}
 
typedef double(*Func)(double x);
 
double Solve(double Start, double End, Func f, double Step = 0.00001)
{
    double xMin = Start;
    double fMin = f(Start);
    while(Start < End)
    {
        if(f(Start) < fMin)
        {
            xMin = Start;
            fMin = f(Start);
        }
        Start +=Step;
    }
    return xMin;
}
int main(int argc, char* argv[])
{
    double Start = 0, End = 0;
    cin >> Start >> End;
    double x = 0;
    x = Solve(Start, End, &Function);
    cout << "x = " << x<<endl;
    system("pause");
    return 0;
}
Yandex
Объявления
27.03.2014, 14:01     Нахождение минимума функции на интервале способом перебора
Ответ Создать тему
Опции темы

Текущее время: 00:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru