Купить Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Форум  |  Download
https://hub.exponenta.ru/


Справочник по Matlab
  • Массивы, матрицы и операции с ними
  • Математические функции
  • Линейная алгебра
  • Анализ и обработка данных
  • Работа с разреженными матрицами
  • Графические команды и функции
  •  
    SPAUGMENT
    Формирование расширенной матрицы для метода наименьших квадратов

    Синтаксис:

                S = spaugment(A)
                S = spaugment(A, c)

    Описание:

    Функции S = spaugment(A) и S = spaugment(A, c) формируют разреженную квадратную симметрическую матрицу следующей блочной структуры:

                S = [c*I A; A’ 0].

    Такая расширенная матрица используется для минимизации квадратичной формы

               image929.gif (290 bytes) .

    Если r = b - Ax выполняет роль невязки, а c - масштабирующий множитель, то решение методом наименьших квадратов сводится к решению следующей системы линейных уравнений:

              image930.gif (421 bytes) .

    Если исходная матрица 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;
            3x1 = 6;
            4x2 = 7.

    Поскольку эта система небольших размеров, она может быть решена с использованием обычных конструкций системы MATLAB, в данном случае - полных матриц:

             A = [ 1 2; 3 0; 0 4];
             b = [5 6 7]’;
             x = A \ b.

    В результате получаем следующее решение по методу наименьших квадратов:

             x =
                1.9592
                1.7041

    Подход на основе расширенной матрицы использует функцию spaugment:

              S = spaugment(A, 1),

    которая формирует вспомогательную матрицу следующего вида:

             full(S) =  image931.gif (582 bytes) .

    В этом примере использовано значение масштабного множителя c = 1 и для удобства чтения распечатана полная матрица S. Даже в этом простом примере более половины элементов матрицы S равны нулю.

    Вспомогательная система использует также расширенный вектор для правой части, который формируется в виде

                y = [b; 0; 0];

    в результате решение вычисляется с помощью оператора решения системы линейных уравнений

                z = S \ y,

    где все матрицы являются квадратными, и для решения применяется метод исключения Гаусса вместо ортогонализации. В случае разреженных матриц при таком подходе используются меньшие объемы оперативной памяти.

    Вычисленное решение имеет вид:

                z =

    -0.3673
    0.1224
    0.1837
    1.9592
    1.7041

    Здесь первые 3 компонента характеризуют вектор невязки r, а последние 2 компонента определяют решение x, которое совпадает с приведенным выше.

    Сопутствующие функции: SPPARMS, \.

    В начало страницы К предыдущему разделуК следующему разделу

    | На первую страницу | Поиск | Купить Matlab

    Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter


    Copyright © 1993-2024. Компания Softline. Все права защищены.

    Дата последнего обновления информации на сайте: 04.03.17
    Сайт начал работу 01.09.00