|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
ЗАДАНИЕ К РАБОТЕОТЧЕТ Лабораторная работа № 3
по дисциплине
«МЕТОДЫ ОПТИМИЗАЦИИ (ОСНОВЫ ДИСКРЕТНОЙ МАТЕМАТИКИ)» Реализация метода Гаусса-Зейделя в программной среде Matlab.
Выполнили студенты гр. РИБ-223: Войнов А Емельянцев А Бородина Е
Проверил: Титов Д.А.
Омск-2015 ЦЕЛЬ РАБОТЫ
Целью работы является изучение возможности реализации методов покоординатного спуска в программной среде Matlab.
ЗАДАНИЕ К РАБОТЕ
1. Изучить метод Гаусса-Зейделя. 2. Выполнить реализацию алгоритма Гаусса-Зейделя в программной среде Matlab.
Функция: Z = c1∙x2 + c2∙y2 + c12∙x∙y;
в области: x: от -20 до 20; y: от -20 до 20;
ХОД РАБОТЫ:
1.Открыли файл с исходным кодом программы «gaus_zeidel»: % Значения коэффициентов
clear all c1 = -2; c2 = -1; c12 = 1; g = -0.2; % постоянная шага d = 0.01; % дельта % Начальная точка x1 = 16; x2 = 18; k = 1; % Счетчик шагов kmax = 100; % Предельное число шагов, % задается для предотвращения зацикливания % Массивы для хранения промежуточных координат x1trace = [x1]; x2trace = [x2]; i = 2; while k < kmax % Спуск по первой координате gr1 = 2*c1*x1 + c12*x2; x1 = x1 + g*gr1; % Сохранение координат x1trace(i) = x1; x2trace(i) = x2; i = i + 1; % Спуск по второй координате gr2 = 2*c2*x2 + c12*x1; x2 = x2 + g*gr2; % Сохранение координат x1trace(i) = x1; x2trace(i) = x2; i = i + 1; % Проверка условия останова if sqrt(gr1^2 + gr2^2) <= d; break; % Выход из цикла в случае выполнения условия end k = k + 1; end % Построение графика x = -20:0.1:20; y = -20:0.1:20; [X, Y] = meshgrid(x, y); Z = c1*X.^2 + c2*Y.^2 + c12*X.*Y; [C, h] = contour(X, Y, Z); clabel(C, h); % Отображение меток на линиях уровня hold on; plot(x1trace, x2trace, '-'); % Вывод начальной точки на график text(x1trace(1) + 0.2, x2trace(1) + 0.5, 'M0'); % Вывод решения на график text(x1 + 2, x2,... strvcat(['x1 = ' num2str(x1)],... ['x2 = ' num2str(x2)],... ['k = ' num2str(k)]));
ZZ = c1*x1.^2 + c2*x2.^2 + c12*x1.*x2; disp(ZZ);
%hold off
2.Запустили программу, нажав клавишу «Run» в редакторе, получили график:
Значение максимума: -2.0289e+59
3. Отрицательное значение переменной «g», в исходном коде программы, изменили на положительное. Получили график:
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |