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 потому что эти две функции используют различные алгоритмы, чтобы вычислить ортонормированный базис. orth Symbolic Math Toolbox™ функционируйте использует классический алгоритм Ортогонализации Грама-Шмидта. orth MATLAB функционируйте использует модифицированный Алгоритм Грама-Шмидта, потому что классический алгоритм численно неустойчив.

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

Алгоритмы

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

Смотрите также

| | | |

Введенный в R2013a