Exemplo n.º 1
0
        public static GaSymMultivectorHash CreateMapped(GaSymMultivectorHash mv, Func <MathematicaScalar, MathematicaScalar> scalarMap)
        {
            var resultMv = CreateZero(mv.GaSpaceDimension);

            foreach (var term in mv.NonZeroTerms)
            {
                resultMv[term.Key] = scalarMap(term.Value).Expression;
            }

            return(resultMv);
        }
Exemplo n.º 2
0
        public static GaSymMultivectorHash CreateCopy(GaSymMultivectorHash mv)
        {
            var resultMv = new GaSymMultivectorHash(mv.GaSpaceDimension);

            foreach (var term in mv)
            {
                resultMv.Add(term.Key, term.Value);
            }

            return(resultMv);
        }
Exemplo n.º 3
0
        public GaSymMultivectorHash CliffConj()
        {
            var resultMv = new GaSymMultivectorHash(GaSpaceDimension);

            foreach (var term in _internalDictionary)
            {
                resultMv._internalDictionary.Add(
                    term.Key,
                    term.Key.BasisBladeIdHasNegativeClifConj()
                        ? Mfs.Minus[term.Value]
                        : term.Value
                    );
            }

            return(resultMv);
        }
Exemplo n.º 4
0
        public static GaSymMultivectorHash CreateSymbolic(int gaSpaceDim, string baseCoefName, IEnumerable <int> idsList)
        {
            var resultMv  = new GaSymMultivectorHash(gaSpaceDim);
            var vSpaceDim = gaSpaceDim.ToVSpaceDimension();

            foreach (var id in idsList)
            {
                resultMv.Add(
                    id,
                    MathematicaScalar.CreateSymbol(
                        SymbolicUtils.Cas,
                        baseCoefName + id.PatternToString(vSpaceDim)
                        )
                    );
            }

            return(resultMv);
        }
Exemplo n.º 5
0
        public Dictionary <int, GaSymMultivectorHash> ToKVectors()
        {
            var kvectorsList = new Dictionary <int, GaSymMultivectorHash>();

            foreach (var pair in _internalDictionary)
            {
                GaSymMultivectorHash mv;

                var grade = pair.Key.BasisBladeGrade();

                if (kvectorsList.TryGetValue(grade, out mv) == false)
                {
                    mv = new GaSymMultivectorHash(GaSpaceDimension);

                    kvectorsList.Add(grade, mv);
                }

                mv.Add(pair.Key, pair.Value);
            }

            return(kvectorsList);
        }