Метод пассивного поиска
Автор: Artem025 • Январь 11, 2022 • Доклад • 316 Слов (2 Страниц) • 237 Просмотры
Метод пассивного поиска
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
//Поиск отрезка локализации минимума [a,b] методом Дэвиса-Свенна_Кэмпи
void DavidSvennCampy(
double x0,//априорное задание начальной точки
double h,//априорное задание начального шага
double(*func)(double),//указатель на целевую функцию
double &a, double &b//границы отрезка локализации минимума [a,b]
)
{
double xk, xpred; int k = 0;
xk = 0; a = 0; b = 0;
if (func(x0) > func(x0 + h))
{
a = x0; xk = x0 + h; k = 2;
}
else
{
if (func(x0 - h) < func(x0))
{
b = x0; xk = x0 - h; h = -h; k = 2;
}
else { a = x0 - h; b = x0 + h; return; }
}
xpred = x0;
while (func(xpred) > func(xk))
{
if (h > 0) a = xpred; else b = xpred;
xpred = xk; xk = x0 + pow(2, (k - 1)) * h; k++;
}
if (h > 0)b = xk; else a = xk;
}
////////////////
//Одномерная минимизация методом пассивного поиска
//Функция возвращает значение целевой функции в точке минимума
//fmin=func(xmin)
double PassiveDim1(
double a, double b,//границы отрезка локализации минимума [a,b]
double(*func)(double),//указатель на целевую функцию
...