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); }
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); }
public GaSymMultivector CliffConj() { var resultMv = new GaSymMultivector(GaSpaceDimension); foreach (var term in NonZeroExprTerms) { resultMv.SetTermCoef( term.Key, term.Key.BasisBladeIdHasNegativeClifConj(), term.Value ); } return(resultMv); }
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); }
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); }
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); }
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); }
public static GaSymMultivector CreatePseudoscalar(int gaSpaceDim, MathematicaScalar coef) { var resultMv = new GaSymMultivector(gaSpaceDim); return(resultMv.SetTermCoef(gaSpaceDim - 1, coef.Expression)); }
public static GaSymMultivector CreateScalar(int gaSpaceDim, Expr coef) { var resultMv = new GaSymMultivector(gaSpaceDim); return(resultMv.SetTermCoef(0, coef)); }
public static GaSymMultivector CreateUnitScalar(int gaSpaceDim) { var resultMv = new GaSymMultivector(gaSpaceDim); return(resultMv.SetTermCoef(0, Expr.INT_ONE)); }
public static GaSymMultivector CreateBasisBlade(int gaSpaceDim, int id) { var resultMv = new GaSymMultivector(gaSpaceDim); return(resultMv.SetTermCoef(id, Expr.INT_ONE)); }