exponenta event banner

orth

Ортонормированный базис для диапазона символьной матрицы

Описание

пример

orth(A) вычисляет ортонормированный базис для диапазона A.

пример

orth(A,'real') вычисляет ортонормированный базис с использованием реального скалярного произведения в процессе ортогонализации.

пример

orth(A,'skipnormalization') вычисляет ненормализованный ортогональный базис. В этом случае векторы, образующие столбцы B не обязательно имеют длину 1.

пример

orth(A,'real','skipnormalization') вычисляет ненормализованный ортогональный базис, используя действительное скалярное произведение в процессе ортогональизации.

Примеры

Вычислить ортонормированный базис

Вычислите ортонормированный базис диапазона этой матрицы. Поскольку эти числа не являются символическими объектами, получаются результаты с плавающей запятой.

A = [2 -3 -1; 1 1 -1; 0 1 -1];
B = orth(A)
B =
   -0.9859   -0.1195    0.1168
    0.0290   -0.8108   -0.5846
    0.1646   -0.5729    0.8029

Теперь преобразуйте эту матрицу в символьный объект и вычислите ортонормированный базис:

A = sym([2 -3 -1; 1 1 -1; 0 1 -1]);
B = orth(A)
B =
[ (2*5^(1/2))/5, -6^(1/2)/6, -(2^(1/2)*15^(1/2))/30]
[     5^(1/2)/5,  6^(1/2)/3,  (2^(1/2)*15^(1/2))/15]
[             0,  6^(1/2)/6,  -(2^(1/2)*15^(1/2))/6]

Вы можете использовать double для преобразования этого результата в числовую форму с двойной точностью. Полученная матрица отличается от матрицы, возвращаемой MATLAB ®orth поскольку эти функции используют различные версии алгоритма ортогонализации Грама-Шмидта:

double(B)
ans =
    0.8944   -0.4082   -0.1826
    0.4472    0.8165    0.3651
         0    0.4082   -0.9129

Убедитесь, что B'*B = I, где I - единичная матрица:

B'*B
ans =
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]

Теперь убедитесь, что 2-норма каждого столбца B равно 1:

norm(B(:, 1))
norm(B(:, 2))
norm(B(:, 3))
ans =
1
 
ans =
1
 
ans =
1

Вычислить действительный ортонормированный базис

Вычислить ортонормированный базис этой матрицы с помощью 'real' во избежание комплексных конъюгатов:

syms a
A = [a 1; 1 a];
B = orth(A,'real')
B =
[ a/(a^2 + 1)^(1/2),    -(a^2 - 1)/((a^2 + 1)*((a^2 -...
 1)^2/(a^2 + 1)^2 + (a^2*(a^2 - 1)^2)/(a^2 + 1)^2)^(1/2))]
[ 1/(a^2 + 1)^(1/2), (a*(a^2 - 1))/((a^2 + 1)*((a^2 -...
 1)^2/(a^2 + 1)^2 + (a^2*(a^2 - 1)^2)/(a^2 + 1)^2)^(1/2))]

Вычислить ортогональный базис, пропустив нормализацию

Вычислить ортогональный базис этой матрицы с помощью 'skipnormalization'. Длины результирующих векторов (столбцы матрицы B) не обязательно должно быть 1

syms a
A = [a 1; 1 a];
B = orth(A,'skipnormalization')
B =
[ a,               -(a^2 - 1)/(a*conj(a) + 1)]
[ 1, -(conj(a) - a^2*conj(a))/(a*conj(a) + 1)]

Вычислить действительный ортогональный базис

Вычислить ортогональный базис этой матрицы с помощью 'skipnormalization' и 'real':

syms a
A = [a 1; 1 a];
B = orth(A,'skipnormalization','real')
B =
[ a,    -(a^2 - 1)/(a^2 + 1)]
[ 1, (a*(a^2 - 1))/(a^2 + 1)]

Входные аргументы

свернуть все

Ввод, заданный как символьная матрица.

Подробнее

свернуть все

Ортонормированный базис

Ортонормированный базис для диапазона матрицы A является матрицей B, такие, что:

  • B'*B = I, где I - единичная матрица.

  • Столбцы B охватывают то же пространство, что и столбцы A.

  • Количество столбцов B является рангом A.

Совет

  • Запрос orth для числовых аргументов, которые не являются символическими объектами, вызывает MATLAB orth функция. Результаты, возвращенные MATLAB orth может отличаться от результатов, возвращенных orth поскольку эти две функции используют разные алгоритмы для вычисления ортонормированного базиса. Символическая математическая Toolbox™ orth функция использует классический алгоритм ортогонализации Грама - Шмидта. MATLAB orth функция использует модифицированный алгоритм Грама-Шмидта, поскольку классический алгоритм является численно нестабильным.

  • Используя 'skipnormalization' вычисление ортогонального базиса вместо ортогонального базиса может ускорить вычисления.

Алгоритмы

orth использует классический алгоритм ортогонализации Грама - Шмидта.

См. также

| | | |

Представлен в R2013a