Здравствуйте, Reldi, Вы писали:
KK>>Функции монотонно возрастают/убывают? (То есть, если x1< y1 и x2 < y2 — обязательно f1(x1,x2) < f1(y1,y2). ) Если да, то вроде всё элементарно…
R>Да. А для f2: если x1<y1 и x2>y2, то f2(x1,x2) < f2(y1,y2).
Необходимые интервалы: {f1min;f1max}, {f2min;f2max}
x1 = x2 = 0
цикл, пока не найдём нужные x1 и x2
{
Если f1 < f1min
Если f2 < f2min
x1 = x1 + 1
Если f2 >= f2min && f2 <= f2max
x1 = x1 + 1
x2 = x2 +1
Если f2 > f2max
x2 = x2 +1
Если f1 >= f1min && f1 <= f1max
Если f2 < f2min
x1 = x1 + 1
x2 = x2 - 1
Если f2 >= f2min && f2 <= f2max
Нашли искомые x1 и x2
Если f2 > f2max
x1 = x1 –1
x2 = x1 + 1
Если f1 > f1max
Если f2 < f2min
x2 = x2 - 1
Если f2 >= f2min && f2 <= f2max
x1 = x1 –1
x2 = x2 -1
Если f2 > f2max
x1 = x1 - 1
}
Что бы это можно было применять на практике прибавлять/отнимать нужно не 1, а dx1 и dx2 (изначально равные единицам). Причём если на следующем шаге цикла сработало тоже условие, что и на предыдущем, то dx1 и/или dx2 удваиваем. Иначе, если сработало другое условие, то сбрасываем их опять до единицы.
Если x1 и x2 вещественные, то вместо единицы используем минимальное вещественное число, которое может повлиять на x1/x2. И не удваиваем его, а умножаем на 10.
Пойдёт?