Аннотация: В книге [1] описан (в частности) новый метод расчета решения системы алгебраических уравнений и неравенств. Эту книгу можно скачать здесь, на СИ. В этой статье описывается программа для такого расчета в системе MATLAB. Размерность задачи ограничена только ресурсами компьютера. Открытые коды этой MATLAB-программы можно приобрести у автора на сайте http://mic34.com/bookrumatlab.htm, позиция 360. С предложениями о дополнительных разработках можно обратиться по адресу solik@netvision.net.il.
Хмельник С.И.
Квадратичное программирование
Новый метод и MATLAB-программа
Содержание
1. Введение
2. Первая задача квадратичного программирования
3. Вторая задача квадратичного программирования
4. Тест для первой задачи
5. Тест для второй задачи
6. Литература
7. Программы
1. Введение
В книге [1] описан (в частности) метод решения задачи квадратичного программирования. Здесь приводятся открытые коды MATLAB-программ для решения этой задачи.
С предложениями о дополнительных разработках можно обратиться по адресу solik@netvision.net.il.
М-функция для решения этой задачи имеет вид:
function[x,n2,k,ero,Fmin,...
kk,erok,Fmink,xx]=...
squ2(R,T,C,U,D,r,erd,kmax)
Входными аргументами здесь являются
R,T,C,U,D - матрицы и векторы, определенные в (1, 2),
r - регулируемая величина,
erd - допустимая величина ошибки (4),
kmax - максимальное число итераций,
Выходными величинами здесь являются
x - неизвестный вектор,
n2 - вектор невязок в уравнении (2)
k- количество итераций,
ero - величина относительной ошибки (4),
Fmin - значение минимума функции (1).
Следующие выходные величины используются для отображения графиков:
kk - вектор номеров итераций
erok - вектор относительных невязок в (3) в каждой итерации,
Fmink - вектор значений минимума функции (1) в каждой итерации,
xx - матрица векторов x в каждой итерации.
М-функция для преобразования второй задачи в первую имеет вид:
function [R,T,U,C,D]=squ21(R1,T1,U1,C1,D1)
4. Тест для первой задачи
М-функция functiontestsqu2() решает первую задачу для двумерного вектора x. При этом строятся графики, показанные на рис.1, где
--
в окне 'Error (testsqu2)' показано изменение ошибки (4) в зависимости от номера итерации,
--
в окне 'Log of error' показано изменение логарифма ошибки (4) в зависимости от номера итерации,
--
в окне 'Minimum' показано изменение значения функции (1) в зависимости от номера итерации,
Рассмотрим двумерный вектор xкак точку на плоскости. В окне 'Trajectory' показано движение этой точки с увеличением номера итерации от начального значения (0, 0) до конечного, являющегося решением задачи.
5. Тест для второй задачи
М-функция functiontestsqu4() решает вторую задачу для четырехмерного вектора x. При этом строятся графики, показанные на рис. 2, где
--
в окне 'Error (testsqu2)' показано изменение ошибки (4) в зависимости от номера итерации,
--
в окне 'Log of error' показано изменение логарифма ошибки (4) в зависимости от номера итерации,
--
в окне 'Minimum' показано изменение значения функции (1) в зависимости от номера итерации,
--
в окне 'Trajectory' показано изменение значений четырех компонент вектора x с увеличением номера итерации от начального значения (0) до конечного, являющегося решением задачи.
6. Литература
1. Хмельник С.И. Электрические цепи постоянного тока для моделирования и управления. Алгоритмы и аппаратура. Published by "MiC" - Mathematics in Computer Comp., вторая редакция, printed in USA, Lulu Inc., ID 293359. Израиль-Россия, 2006, 177 c.