Результаты тестирования метода
Ниже приведена таблица с результатами работы программы для функции f(x) = 100(x2-x12)2+ (1 -x1)2, с различными стартовыми точками и точностями вычисления.
Точность: |
|
0.0001 |
|
0.00001 |
|
0.000001 |
Метод Коши |
К |
x* |
K |
x* |
K |
x* |
X0=(1.2,1) |
6241 |
(0.999902, 0.999803) |
9625 |
(0.999991, 0.999981) |
14207 |
(0.999999, 0.999998) |
X0=(1.5,2) |
614 |
(1.00011, 1.000221) |
812 |
(1.000011, 1.000022) |
1106 |
(1.000001, 1.000002) |
X0=(-2,-2) |
5704 |
(0.999899, 0.999797) |
7410 |
(0.99999, 0.99998) |
9114 |
(0.999999, 0.999998) |
Выводы:
В данной работе был использован метод Свенна4 и метод Дэвидона для получения оптимального шага. Поиск ведется в пространстве, начиная с заданной начальной точки x0по антиградиентному направлениюp0. И в результате выполнения метода Коши находится оптимальный шаг, доставляющий минимум в результате исчерпывающего спуска вдоль антиградиентного направленияpк. Полученный шаг соответствует точкеx* =xк+1 . Большое количество итераций и неточность минимума объясняется тем, что вблизи минимума для реальных (овражных) функций метод зацикливается, либо рыскает и останавливается.
Ответы на контрольные вопросы:
1. Перечислите основные постулаты структурного программирования.
1) Абстракция данных;
2) Разбиение программы на модули;
3) Отказ от команды безусловного перехода, известной также под названием GOTO;
4) Использование подпрограмм.
2. Перечислите основные постулаты объектно-ориентированного программирования.
1) Инкапсуляция;
2) Наследование;
3)Полиморфизм.
3. В чем отличие структурного и объектно-ориентированного подхода при разработке программ?
Абстрактность - нелинейное, зависящее от смысла соответствие между исходным и результирующим кодом. Абстрактность позволила непосредственно заняться проблемой управляемости программ.
Разбиение программы на модули, соответствует разбиению основной задачи на множество небольших подзадач. Каждый модуль выполняет свою задачу независимо от других, и потому может быть описан и отлажен отдельно. Определяется модуль как фрагмент программы с одним входом и одним выходом, состоящий из операций, "вложенных" модулей и структурных операторов передачи управления.
Теоретически принцип инкапсуляции применим как к отдельным объектам, так и к классам. В случае классов с методами объединяются не сами данные, а структуры данных, и объединение с конкретными данными происходит в момент создания объектов данного класса. На практике же многие объектно-ориентированные языки не позволяют создавать объекты, не создав предварительно класса.
Наследование относится только к классам объектов. Это означает, что каждый объект может иметь наследников, каждый из которых будет обладать всеми полями и методами своего предка. Кроме того, как правило, классы-наследники совместимы по типу со своими предками. Наследование бывает двух видов:
одиночное - когда каждый класс имеет одного и только одного предка;
множественное - когда каждый класс может иметь любое количество предков.
Множественное наследование обладает более мощными возможностями: в одном классе-наследнике объединяются свойства (поля и методы) множества различных классов. К примеру один из предков может рисовать себя, а другой - производить вычисления. представитель их наследника смогут делать и то, и другое.
Полиморфизм неразрывно связан с наследованием и гласит, что каждый класс наследник может обладать не только свойствами, унаследованными от предка, но и своими собственными. В частности, свойства предка могут быть перекрыты наследником - на место свойств предка могут быть подставлены свойства наследника.
Существование принципа полиморфизма является естественным следствием существования принципа наследования: наследование без изменения набора свойств не имеет смысла. Кроме того, без полиморфизма невозможно реализовать объединение различных объектов (классов) по некоторому набору свойств (невозможно абстрагироваться от части свойств объектов), а без этого теряется весь смысл подхода.
4. Какие преимущества дает объектно-ориентированный подход?
Объектно-ориентированный подход дает следующие преимущества
уменьшение сложности программного обеспечения;
повышение надежности программного обеспечения;
обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
5. Представить 3 формулы численного дифференцирования. Являются ли они равноценными при практической реализации?
Численное дифференцирование используется, когда функция не задана в аналитическом виде.