Алгоритъм за получаване на n-мерна матрица на ротация

От testwiki
Версия от 22:23, 7 март 2020 на imported>Vodenbot (Общи промени)
(разл) ← По-стара версия | Текуща версия (разл) | По-нова версия → (разл)
Направо към навигацията Направо към търсенето

Алгоритъмът за получаване на n-мерна матрица на ротация (NRMG алгоритъм) дава възможност за създаване на матрица за ротация на зададен n-мерен вектор X по посоката на зададен n-мерен вектор Y, т.е. за създаване на матрица M, която удовлетворява уравнението

Yx=MX

където Yx има същата норма като вектора X и същата посока като Y, т.е. Yx=X (cosYx,Y=1).

NRMG алгоритъмът включва следната последователност от операции:

  • Получаване на матрица на ротация Mx, която извършва ротация на зададения вектор X по посока на координатната ос x1.
  • Получаване на матрица на ротация My, която извършва ротация на зададения вектор Y по посока на координатната ос x1.
  • Получаване на матрица на ротация M, която извършва ротация на зададения вектор X по посока на зададения вектор Y както следва:
M=My1Mx=MyTMx

Както се вижда в даденото по-горе описание, базовата операция на NRMG алгоритъма е ротацията на n-мерен вектор по посока на една от координатните оси (напр. по посока на оста x1).

В [1] е даден примерен код на Matlab за получаване на n-мерна матрица на ротация по зададени n-мерни вектори X и Y с използване на NRMG алгоритъма.

Ротация на n-мерен вектор по посока на оста x1

Ротация на зададен n-мерен вектор по посока на една от координатните оси (напр. по посока на оста x1) може да се извърши посредством n − 1 последователни ротации (xnk, xnk+1), k = 1,...,n − 1 чрез умножение с матрици на Гивънс G(nk,nk+1,θnk), в които коефициентите S = sin(θnk) и C = cos(θnk) се изчисляват както следва:

{sin(θnk)=xnk+1xnk2+xnk+12,cos(θnk)=xnkxnk2+xnk+12,ifxnk2+xnk+12>0sin(θnk)=0,cos(θnk)=1,ifxnk2+xnk+12=0

След всяка ротация в текущата координатна равнина (xnk, xnk+1) се получава вектор, който е ортогонален на координатната ос xnk+1. Така последователните ротации в координатните равнини (xnk, xnk+1), k = 1,...,n − 1 дават вектор, който е ортогонален на всички координатни оси с изключение на x1. Матрицата на ротация Mx се получава като произведение на матриците на Гивънс G(nk,nk+1,θnk), k=1,,n1, както следва:

Mx=k=1n1G(nk,nk+1,θnk)

Дължината rX = X на зададения вектор X и ъглите на ротации θ1, ..., θn-1 от горната формула са всъщност координатите на вектора X, представен в хиперсферична координатна система като XS = [rX, -θ1, ..., -θn-1]T. Ъглите на ротации са включени с отрицателен знак, защото при ротация на зададен вектор по посока на координатна ос x1 ротациите в координатните равнини се извършват от вектора към координатните оси, докато при представянето на вектора в хиперсферична координатна система ъглите се отчитат в обратна посока – от осите към вектора.

Източници

  • Zhelezov O. I. N-dimensional Rotation Matrix Generation Algorithm, American Journal of Computational and Applied Mathematics, Vol. 7 No. 2, 2017, pp. 51 – 57. doi: 10.5923/j.ajcam.20170702.04.
  • H.G. Golub, J.M. Ortega, 1993, Scientific Computing and Introduction with Parallel Computing, Academic Press, Inc., San Diego
  • G. A. Korn, T.M. Korn, 1961, Mathematical Handbook for Scientists and Engineers (1st ed.), New York: McGraw-Hill. pp. 55 – 79.
  • H. Friedberg, A. Insel, L. Spence, 1997, Linear Algebra (3rd ed), Prentice Hall.
  • M. Cosnard, Y. Robert. Complexity of parallel QR factorization. J. ACM 33, 4 (August 1986), 712 – 723. DOI=10.1145/6490.214102, 1986
  • A. H. Sameh, D. J. Kuck. On Stable Parallel Linear System Solvers. J. ACM 25, 1 (януари 1978), 81 – 91., 1978
  • N. J. Higham, 1996, Accuracy and Stability of Numerical Algorithms, SIAM, Philadelfia
  • G. W.Steward, 1976, The economical storage of plane rotations, Numer. Math, 25, 2 1976, 137 – 139
  • N. K. Bose, 1985, Multidimensional Systems Theory: Progress, Directions, and Open Problems. D.Reidel Publishing Co., Dordrecht, The Netherland
  • A. S. Householder, 1958, „Unitary triangularization of a nonsimetric matrix“, J. ACM 5, 339 – 342, 1958
  • E. Anderson, 2000, „Discontinuous Plane Rotations and the Symmetric Eigenvalue Problem“ LAPACK Working Note 150, University of Tennessee, UT-CS-00-454, 4 декември 2000. page 2