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 ортонормированного базиса для диапазона матрицы A - матрица B, таким образом:

  • B'*B = I, где I - матрица тождеств.

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

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

Совет

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

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

Алгоритмы

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

См. также

| | | |

Введенный в R2013a