예제 #1
0
        public static Vector Orthonormalize(Vector A, Vector OrthonormalVector)
        {
            Vector B = new Vector();

            B = A - OrthonormalVector * A * OrthonormalVector;
            B = B.Normalize();

            return B;
        }
예제 #2
0
        //Orthonormalize all eigenvectors based on the first one
        public static MMatrix Orthonormalize(MMatrix Eigenvectors)
        {
            MMatrix A = new MMatrix(Eigenvectors);
            Vector v1 = new Vector(Eigenvectors.row);
            Vector v = new Vector(Eigenvectors.row);

            for (int i = 0; i < v1.Elements.Length; ++i)
                v1[i] = A[i, 0];
            v1 = v1.Normalize();
            for (int i = 0; i < v1.Elements.Length; ++i)
                A[i, 0] = v1[i];

            for (int i = 1; i < Eigenvectors.col; ++i)
            {
                for (int j = 0; j < Eigenvectors.row; ++j)
                    v[j] = Eigenvectors[j,i];
                v = v.Orthonormalize(v1);

                for (int j = 0; j < v.Elements.Length; ++j)
                    A[j, i] = v[j];
            }
            return A;
        }