Exemple #1
0
        public static GaSymMultivector SetTerms(this GaSymMultivector mv, IEnumerable <KeyValuePair <int, Expr> > terms)
        {
            foreach (var term in terms)
            {
                mv.SetTermCoef(term.Key, term.Value);
            }

            return(mv);
        }
        public GaSymMultivector GetPartByGrade(Func <int, bool> gradeSelectionFunc)
        {
            var resultMv = new GaSymMultivector(GaSpaceDimension);

            foreach (var term in NonZeroTerms.Where(t => gradeSelectionFunc(t.Key.BasisBladeGrade())))
            {
                resultMv.SetTermCoef(term.Key, term.Value);
            }

            return(resultMv);
        }
        public GaSymMultivector GetOddPart()
        {
            var resultMv = new GaSymMultivector(GaSpaceDimension);

            foreach (var term in NonZeroTerms.Where(t => (t.Key.BasisBladeGrade() & 1) == 1))
            {
                resultMv.SetTermCoef(term.Key, term.Value);
            }

            return(resultMv);
        }
        public static GaSymMultivector CreateFromColumn(ISymbolicMatrix matrix, int col)
        {
            Debug.Assert(matrix.RowCount.IsValidGaSpaceDimension());

            var mv = new GaSymMultivector(matrix.RowCount);

            for (var index = 0; index < matrix.RowCount; index++)
            {
                mv.SetTermCoef(index, matrix[index, col]);
            }

            return(mv);
        }
        public static GaSymMultivector CreateVectorFromScalars(Expr[] exprScalars)
        {
            var gaSpaceDim = exprScalars.Length.ToGaSpaceDimension();

            var mv = new GaSymMultivector(gaSpaceDim);

            for (var index = 0; index < exprScalars.Length; index++)
            {
                mv.SetTermCoef(1, index, exprScalars[index]);
            }

            return(mv);
        }
        public static GaSymMultivector CreateVectorFromRow(ISymbolicMatrix matrix, int row)
        {
            var gaSpaceDim = matrix.ColumnCount.ToGaSpaceDimension();

            var mv = new GaSymMultivector(gaSpaceDim);

            for (var col = 0; col < matrix.ColumnCount; col++)
            {
                mv.SetTermCoef(1, col, matrix[row, col]);
            }

            return(mv);
        }
        public static GaSymMultivector CreateVectorFromColumn(ISymbolicMatrix matrix, int col)
        {
            var gaSpaceDim = matrix.RowCount.ToGaSpaceDimension();

            var mv = new GaSymMultivector(gaSpaceDim);

            for (var row = 0; row < matrix.RowCount; row++)
            {
                mv.SetTermCoef(1, row, matrix[row, col]);
            }

            return(mv);
        }
Exemple #8
0
        public static GaSymMultivector SetTerms(this GaSymMultivector mv, ISymbolicVector termsMv)
        {
            for (var id = 0; id < termsMv.Size; id++)
            {
                var coef = termsMv[id].Expression;

                if (!coef.IsNullOrZero())
                {
                    mv.SetTermCoef(id, coef);
                }
            }

            return(mv);
        }
        public static GaSymMultivector CreateVectorFromColumn(Expr[,] matrix, int col)
        {
            var rowsCount  = matrix.GetLength(0);
            var gaSpaceDim = rowsCount.ToGaSpaceDimension();

            var mv = new GaSymMultivector(gaSpaceDim);

            for (var row = 0; row < rowsCount; row++)
            {
                mv.SetTermCoef(1, row, matrix[row, col]);
            }

            return(mv);
        }
Exemple #10
0
        public GaSymMultivector CliffConj()
        {
            var resultMv = new GaSymMultivector(GaSpaceDimension);

            foreach (var term in NonZeroExprTerms)
            {
                resultMv.SetTermCoef(
                    term.Key,
                    term.Key.BasisBladeIdHasNegativeClifConj(),
                    term.Value
                    );
            }

            return(resultMv);
        }
Exemple #11
0
        public GaSymMultivector GetKVectorPart(int grade)
        {
            var resultMv = new GaSymMultivector(GaSpaceDimension);

            if (grade < 0 || grade > VSpaceDimension)
            {
                return(resultMv);
            }

            foreach (var term in NonZeroTerms.Where(t => t.Key.BasisBladeGrade() == grade))
            {
                resultMv.SetTermCoef(term.Key, term.Value);
            }

            return(resultMv);
        }
Exemple #12
0
        public static GaSymMultivector CreateSymbolic(int gaSpaceDim, string baseCoefName, IEnumerable <int> idsList)
        {
            var resultMv  = new GaSymMultivector(gaSpaceDim);
            var vSpaceDim = gaSpaceDim.ToVSpaceDimension();

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

            return(resultMv);
        }
Exemple #13
0
        public static GaSymMultivector CreateFromRow(Expr[,] exprArray, int row)
        {
            var cols = exprArray.GetLength(1);

            Debug.Assert(cols.IsValidGaSpaceDimension());

            var mv = new GaSymMultivector(cols);

            for (var col = 0; col < cols; col++)
            {
                var expr = exprArray[row, col];

                if (!expr.IsNullOrZero())
                {
                    mv.SetTermCoef(col, expr);
                }
            }

            return(mv);
        }
Exemple #14
0
        public static GaSymMultivector CreateFromColumn(Expr[,] exprArray, int col)
        {
            var rows = exprArray.GetLength(0);

            Debug.Assert(rows.IsValidGaSpaceDimension());

            var mv = new GaSymMultivector(rows);

            for (var row = 0; row < rows; row++)
            {
                var expr = exprArray[row, col];

                if (!expr.IsNullOrZero())
                {
                    mv.SetTermCoef(row, expr);
                }
            }

            return(mv);
        }
Exemple #15
0
        public static GaSymMultivector CreatePseudoscalar(int gaSpaceDim, MathematicaScalar coef)
        {
            var resultMv = new GaSymMultivector(gaSpaceDim);

            return(resultMv.SetTermCoef(gaSpaceDim - 1, coef.Expression));
        }
Exemple #16
0
        public static GaSymMultivector CreateScalar(int gaSpaceDim, Expr coef)
        {
            var resultMv = new GaSymMultivector(gaSpaceDim);

            return(resultMv.SetTermCoef(0, coef));
        }
Exemple #17
0
        public static GaSymMultivector CreateUnitScalar(int gaSpaceDim)
        {
            var resultMv = new GaSymMultivector(gaSpaceDim);

            return(resultMv.SetTermCoef(0, Expr.INT_ONE));
        }
Exemple #18
0
        public static GaSymMultivector CreateBasisBlade(int gaSpaceDim, int id)
        {
            var resultMv = new GaSymMultivector(gaSpaceDim);

            return(resultMv.SetTermCoef(id, Expr.INT_ONE));
        }