Пример #1
0
        public static GaSymOutermorphism Create(ISymbolicMatrix vectorsMappingMatrix, GaUnilinearMapImplementation multivectorsMappingKind)
        {
            if (multivectorsMappingKind == GaUnilinearMapImplementation.Identity)
            {
                var vSpaceDim = vectorsMappingMatrix.ColumnCount;

                return(new GaSymOutermorphism(
                           MathematicaMatrix.CreateIdentity(SymbolicUtils.Cas, vSpaceDim),
                           GaSymMapUnilinearIdentity.Create(vSpaceDim),
                           GaUnilinearMapImplementation.Identity
                           ));
            }

            var mvMappingDictionaryDict = vectorsMappingMatrix.ToOutermorphismDictionary();
            GaSymMapUnilinear multivectorsMap;

            switch (multivectorsMappingKind)
            {
            case GaUnilinearMapImplementation.Array:
                multivectorsMap = mvMappingDictionaryDict.ToArrayMap(
                    vectorsMappingMatrix.ColumnCount,
                    vectorsMappingMatrix.RowCount
                    );
                break;

            case GaUnilinearMapImplementation.Hash:
                multivectorsMap = mvMappingDictionaryDict.ToHashMap(
                    vectorsMappingMatrix.ColumnCount,
                    vectorsMappingMatrix.RowCount
                    );
                break;

            case GaUnilinearMapImplementation.Matrix:
                multivectorsMap = mvMappingDictionaryDict.ToMatrixMap(
                    vectorsMappingMatrix.ColumnCount,
                    vectorsMappingMatrix.RowCount
                    );
                break;

            case GaUnilinearMapImplementation.CoefSums:
                multivectorsMap = mvMappingDictionaryDict.ToCoefSumsMap(
                    vectorsMappingMatrix.ColumnCount,
                    vectorsMappingMatrix.RowCount
                    );
                break;

            default:
                multivectorsMap = mvMappingDictionaryDict.ToTreeMap(
                    vectorsMappingMatrix.ColumnCount,
                    vectorsMappingMatrix.RowCount
                    );
                break;
            }

            return(new GaSymOutermorphism(
                       vectorsMappingMatrix,
                       multivectorsMap,
                       multivectorsMappingKind
                       ));
        }
Пример #2
0
        public static GaSymOutermorphism CreateArray(ISymbolicMatrix vectorsMappingMatrix)
        {
            var multivectorsMap =
                vectorsMappingMatrix
                .ToOutermorphismDictionary()
                .ToArrayMap(
                    vectorsMappingMatrix.ColumnCount,
                    vectorsMappingMatrix.RowCount
                    );

            return(new GaSymOutermorphism(
                       vectorsMappingMatrix,
                       multivectorsMap,
                       GaUnilinearMapImplementation.Array
                       ));
        }