Описание интерфейса
При запуске программа информирует пользователя о тех методах, которыми он может находить минимум целевых функций, а так же предоставляет ему перечень из трех тестовых функций, которые эта программа может обработать.
В принципе, программа реализует нахождение минимума любой функции с любымколичеством переменных!
Пользователь должен ввести номер функции, минимум которой он хочет найти. Программа сама определит количество переменных в целевой функции.
1. f(x1,x2) = (x2-x1x1)(x2-x1x1) + (1-x1)(1-x1);
2. f(x1,x2,x3) = (x1-1)(x1-1) + (x2-3)(x2-3) + 4(x3+5)(x3+5);
3. f(x1,x2,x3,x4) = 100(x2-x1x1)^2 + (1-x1)^2 + 90(x4-x3x3)^2 + (1-x3)^3 + 10.1(x2-1)^2 + (x4-1)^2 + 19.8(x2-1)(x4-1).
Когда пользователь выберет целевую функцию, программа предложит ему ввести координаты начальной точки вручную, либо принять начальные установки инициализации. По умолчанию:
X[i] = 0.5;
Если пользователь захочет ввести другие координаты, ему будет предложено вводить новые, нажимая Enterпосле каждой новой координаты:
Zadaite 1 koordinatu: 0.2 (Enter)
Zadaite 2 koordinatu: -5 (Enter)
Zadaite 3 koordinatu: _
и так далее, ровно столько раз, сколько переменных в выбранной целевой функции..
Начиная с этого момента программа входит в свой основной цикл, выйти из которого можно только выйдя из всей программы.
Программа предложит выбрать метод, которым будет рассчитываться шаг, доставляющего минимум целевой функции при движении вдоль заданной прямой:
1. Metod Zolotogo Sechenia (1);
2. Metod Pauella.
После выбора метода программа попросит пользователя ввести максимальное количество итераций, которое она будет выполнять на данном шаге решения задачи нахождения минимума:
Vvedite max kol-vo iteratsii: _
Затем программа попросит пользователя указать точность вычислений, т.е. количество знаков после запятой, которое должно храниться в памяти во время расчетов и вычислений:
Vvedite pogreshnost' (E = 0.00001 - 0.0000000001) : _
Рекомендуется выбирать значение точности вычислений из диапазона, предложенного программой.
Теперь программа имеет достаточно параметров, чтобы выполнить расчеты и представить полученный результат. При этом она не только покажет результат вычислений, но и отразит на экране количество итераций, которое ей пришлось сделать, чтобы соблюсти указанную пользователем точность. Если точность была достигнута, программа выдаст соответствующее сообщение. Если нет – тоже сообщит об этом. А так же спросит пользователя, продолжать ли производить расчеты?
Например:
kolichestvo iteratsii v dannom shage: 68 vsego: 68
tochnost' DOSTIGNUTA...
This is vector:
1
3
-5
Prodoljit' rascheti? (y/n)
Если пользователь нажмет «n», программа завершит свою работу.
Если программа выдаст такое сообщение:
Например:
kolichestvo iteratsii v dannom shage: 100 vsego: 100
tochnost' NE DOSTIGNUTA...
This is vector:
0.8967754
2.692117
-6.138879
Prodoljit' rascheti? (y/n)
то имеет смысл выбрать «у» и продолжить поиск минимума функции. Менять целевую функцию уже нельзя, программа последовательно предложит ввести максимальное количество итераций, которое она осуществит в поиске минимума, а так же точность вычислений. Перед непосредственным расчетом программа предложит пользователю сделать выбор:
Izmenit' nachal'nuiu tochku? (y/n)
Нажав «n», пользователь продолжит поиск минимума функции с той точки, которая была получена на предыдущем шаге выполнения программы, а именно в нашем примере:
0.8967754
2.692117
-4.138879
Если пользователь выберет «у», ему будет предложено начать поиск с новой точки, координаты которой программа попросит последовательно ввести.