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


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

    Синтаксис:

                B = balance(A)
                [D, B] = balance(A)

    Описание:

    Несимметрические матрицы могут проявлять плохую обусловленность при вычислении их собственных значений. Малые возмущения элементов матрицы, такие, как ошибки округления, могут вызывать значительные погрешности в собственных значениях. Величина, связывающая погрешность вычисления собственных значений с погрешностью исходных данных, называется числом обусловленности задачи на собственные значения и вычисляется следующим образом:

                 k = cond(R) = norm(R) * norm(inv(R)), где [R, D] = eig(A).

    Цель масштабирования - перевести плохую обусловленность матрицы собственных векторов в диагональное масштабирование. Масштабирование не может превратить несимметрическую матрицу в симметрическую, но делается попытка выравнять нормы строк и соответствующих столбцов. Поскольку масштабирование реализуется введением множителей, которые являются степенями основания 2, то никаких ошибок округления при этом не привносится.

    Функция B = balance(A) возвращает масштабированную матрицу.

    Функция [D, B] = balance(A) кроме масштабированной матрицы возвращает также диагональную матрицу D, элементы которой являются степенями основания 2; матрица B - это результат преобразования подобия

                B = D \ A * D.

    Функция eig(A) автоматически масштабирует A перед вычислением собственных значений D. Масштабирование можно подавить, если использовать обращение вида eig(A, ‘nobalance’).

    Пример:

    Рассмотрим матрицу порядка 3, которая имеет большой разброс значений элементов - большие наддиагональные и малые поддиагональные элементы.

    A = 1 100 10000
    0.01 1 100
    0.0001 0.01 1

    Вычислим собственные значения и векторы матрицы A.

               [RA, DA] = eig(A)

    A = RA = DA =
    1.0e+004*
    0.0001 0.0100 1.0000
    0.0000 0.0001 0.0100
    0.0000 0.0000 0.0001
    0.9999 -1.0000 -0.9998
    0.0100 0.0054 0.0209
    0.0001 0.0000 -0.0001
    cond(RA) = 1.4073e+004
    3.0000 0 0
    0 0.0000 0
    0 0 0.0000

    Матрица собственных векторов плохо обусловлена.

    Выполним масштабирование матрицы A.

              [D, B] = balance(A)

    A = D = B =
    1.0e+004*
    0.0001 0.0100 1.0000
    0.0000 0.0001 0.0100
    0.0000 0.0000 0.0001
    1.0e+003 *
    2.0480 0 0
    0 0.0320 0
    0 0 0.0003
    cond(D) = 8192
    1.0000 1.5625 1.2207
    0.6400 1.0000 0.7813
    0.8192 1.2800 1.0000

    После масштабирования значения элементов матрицы B оказались выравненными по величине.

    Вычислим собственные значения и векторы матрицы B.

                [RB, DB] = eig(B)

    B = RB = DB =
    1.0000 1.5625 1.2207
    0.6400 1.0000 0.7813
    0.8192 1.2800 1.0000
    0.6933 -0.8903 -0.5274
    0.4437 0.3070 0.7064
    0.5679 0.3364 -0.4721
    cond(RB) = 1.9381
    3.0000 0 0
    0 0.0000 0
    0 0 0.0000

    Матрица собственных векторов очень хорошо обусловлена. Плохая обусловленность сконцентрирована в диагональной матрице масштабирования D.

    Алгоритм: Функция balance является встроенной функцией интерпретатора MATLAB; она использует алгоритмы, первоначально написанные на языке АЛГОЛ [1], а затем реализованные на языке FORTRAN в составе пакета EISPACK: balance, balbak [2].

    Ограничения:

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

    Диагностические сообщения:

    Если матрица не квадратная, выдается сообщение
              Matrix must be square.
              Матрица должна быть квадратной.

    Сопутствующие функции: EIG, HESS, SCHUR.

    Ссылки:

    1. Уилкинсон, Райнш. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра: Пер. с англ. М.: Машиностроение, 1976. 390 с.

    2. Garbow B. S., Boyle J. M., Dongarra J. J., Moler C. B.. Matrix Eigensystem Routines - EISPACK Guide Extension//Lecture Notes in Computer Science. Berlin, 1977. Vol. 51.

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

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

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


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

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