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