Ортонормированный базис для области значений символьной матрицы
orth(
вычисляет ортонормированный базис для области значений A
)A
.
orth(
вычисляет ортонормированный базис, используя действительный скалярный продукт в процессе ортогонализации.A
,'real'
)
orth(
вычисляет ненормализованный ортогональный базис. В этом случае векторы, образующие столбцы A
,'skipnormalization'
)B
не обязательно иметь длину 1.
Вычислите ортонормированный базис области значений этой матрицы. Поскольку эти числа не являются символическими объектами, вы получаете результаты с плавающей точкой.
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)]
Вызывающие orth
для числовых аргументов, которые не являются символьными объектами, MATLAB orth
функция. Результаты, возвращенные MATLAB orth
может отличаться от результатов, возвращаемых orth
потому что эти две функции используют различные алгоритмы для вычисления ортонормированного базиса. Symbolic Math Toolbox™ orth
функция использует классический алгоритм ортогонализации Грама-Шмидта. Система MATLAB orth
функция использует модифицированный алгоритм Грама-Шмидта, потому что классический алгоритм численно нестабильен.
Использование 'skipnormalization'
вычисление ортогонального базиса вместо ортонормированного базиса может ускорить работу расчетов.
orth
использует классический алгоритм ортогонализации Грама-Шмидта.