Matlab | Mathcad | Maple | Mathematica | Statistica | Другие пакеты |
Internet-класс | Примеры | Методики | Банк задач | Консультации & Форум | Download | Ссылки | Конкурсы |
|
Синтаксис: S = spaugment(A) Описание: Функции S = spaugment(A) и S = spaugment(A, c) формируют разреженную квадратную симметрическую матрицу следующей блочной структуры: S = [c*I A; A’ 0]. Такая расширенная матрица используется для минимизации квадратичной формы . Если r = b - Ax выполняет роль невязки, а c - масштабирующий множитель, то решение методом наименьших квадратов сводится к решению следующей системы линейных уравнений: . Если исходная матрица A имеет размер m х n, то расширенная матрица S имеет размер (m + n) х (m + n). В обозначениях системы MATLAB эту систему можно описать так: S * [r/c; x] = [b; z], где z = zeros(n, 1). Определение оптимального значения для масштабного множителя с основано на вычислении значений min(svd(A)) и norm(r), что требует больших объемов расчетов. Если значение c не указано явно в виде второго параметра, то по умолчанию применяется значение max(abs(A)))/1000. Можно изменить это значение, если воспользоваться функцией spparms и задать другие значения для ключей aug_rel и aug_abs. Операция решения систем линейных уравнений x = A\b автоматически формирует расширенную матрицу, определяя значение c по умолчанию. Пример: Рассмотрим простую систему из трех уравнений с двумя неизвестными. x1 + 2x2 = 5; Поскольку эта система небольших размеров, она может быть решена с использованием обычных конструкций системы MATLAB, в данном случае - полных матриц: A = [ 1 2; 3 0; 0 4]; В результате получаем следующее решение по методу наименьших квадратов: x = Подход на основе расширенной матрицы использует функцию spaugment: S = spaugment(A, 1), которая формирует вспомогательную матрицу следующего вида: full(S) = . В этом примере использовано значение масштабного множителя c = 1 и для удобства чтения распечатана полная матрица S. Даже в этом простом примере более половины элементов матрицы S равны нулю. Вспомогательная система использует также расширенный вектор для правой части, который формируется в виде y = [b; 0; 0]; в результате решение вычисляется с помощью оператора решения системы линейных уравнений z = S \ y, где все матрицы являются квадратными, и для решения применяется метод исключения Гаусса вместо ортогонализации. В случае разреженных матриц при таком подходе используются меньшие объемы оперативной памяти. Вычисленное решение имеет вид: z =
Здесь первые 3 компонента характеризуют вектор невязки r, а последние 2 компонента определяют решение x, которое совпадает с приведенным выше. |
Карта сайта | На первую страницу | Поиск |О проекте |Сотрудничество | |
Exponenta Pro | Matlab.ru |
|
|