Re[3]: Определение аргументов функций для заданного результа
От: KinK  
Дата: 12.01.07 11:06
Оценка:
Здравствуйте, 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.

Пойдёт?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.