public static void ConstructionTest() { TestUtils.AddTestStartingMessage("MathematicaVector Creation Test Started."); var s = MathematicaVector.CreateZero(Cas, 3); TestUtils.AddTest("Try create 3D zero vector ... ", s); var scalarsList = new[] { Cas.Constants.MinusOne, Cas.Constants.Pi, Cas.Constants.Zero }; s = MathematicaVector.CreateFullVector(Cas, scalarsList); TestUtils.AddTest("Try create full vector from list of scalars -1, Pi, 0 ... ", s); s = MathematicaVector.CreateFullVector(Cas, Cas.Constants.MinusOne, Cas.Constants.Pi, Cas.Constants.Zero); TestUtils.AddTest("Try create full vector from param array of scalars -1, Pi, 0 ... ", s); s = MathematicaVector.Create(Cas.Constants.TwoPi, 3); TestUtils.AddTest("Try create 3D vector with constant entries of 2 Pi ... ", s); var e = Cas[Mfs.List["v1".ToSymbolExpr(), Mfs.Power[5.ToExpr(), 2.ToExpr()], "n".ToSymbolExpr()]]; s = MathematicaVector.Create(Cas, e); TestUtils.AddTest("Try create vector from expression object ... ", s); s = MathematicaVector.Create(Cas, @"List[Pi, 5 / 3, -2.7]"); TestUtils.AddTest("Try create vector from expression text \"List[Pi, 5 / 3, -2.7]\" ... ", s); TestUtils.AddTestCompletionMessage("MathematicaVector Creation Test Completed."); }
protected override void ComputeIpm() { var bvSig = _basisVectorsSignatures.Select(i => MathematicaScalar.Create(CasInterface, i)); var v = MathematicaVector.CreateFullVector(CasInterface, bvSig); InnerProductMatrix = MathematicaMatrix.CreateDiagonal(v); }
public static void ConstructionTest() { TestUtils.AddTestStartingMessage("MathematicaMatrix Creation Test Started."); var scalarsArray = new MathematicaScalar[2, 2]; scalarsArray[0, 0] = MathematicaScalar.Create(Cas, 2); scalarsArray[0, 1] = MathematicaScalar.Create(Cas, -2); scalarsArray[1, 0] = MathematicaScalar.Create(Cas, 3); scalarsArray[1, 1] = MathematicaScalar.Create(Cas, 1); var s = MathematicaMatrix.CreateFullMatrix(Cas, scalarsArray); TestUtils.AddTest("Try create full matrix from array of scalars ... ", s); s = MathematicaMatrix.CreateIdentity(Cas, 3); TestUtils.AddTest("Try create full 3x3 identity matrix ... ", s); s = MathematicaMatrix.CreateIdentity(Cas, 3, false); TestUtils.AddTest("Try create sparse 3x3 identity matrix ... ", s); var v = MathematicaVector.CreateFullVector(Cas, Cas.Constants.Zero, Cas.Constants.TwoPi, Cas.Constants.One); s = MathematicaMatrix.CreateDiagonal(v); TestUtils.AddTest("Try create full 3x3 diagonal matrix from vector {0, 2 Pi, 1} ... ", s); s = MathematicaMatrix.CreateDiagonal(v, false); TestUtils.AddTest("Try create sparse 3x3 diagonal matrix from vector {0, 2 Pi, 1} ... ", s); s = MathematicaMatrix.CreateRowVector(v); TestUtils.AddTest("Try create full row vector matrix from vector {0, 2 Pi, 1} ... ", s); s = MathematicaMatrix.CreateRowVector(v, false); TestUtils.AddTest("Try create sparse row vector matrix from vector {0, 2 Pi, 1} ... ", s); s = MathematicaMatrix.CreateColumnVector(v); TestUtils.AddTest("Try create full row vector matrix from vector {0, 2 Pi, 1} ... ", s); s = MathematicaMatrix.CreateColumnVector(v, false); TestUtils.AddTest("Try create sparse row vector matrix from vector {0, 2 Pi, 1} ... ", s); s = MathematicaMatrix.CreateConstant(Cas.Constants.Pi, 2, 3); TestUtils.AddTest("Try create 2x3 matrix with constant elements of Pi ... ", s); s = MathematicaMatrix.Create(Cas, @"{{1, x}, {2, y}, {3, z}}"); TestUtils.AddTest("Try create matrix from expression text \"{{1, x}, {2, y}, {3, z}}\" ... ", s); TestUtils.AddTestCompletionMessage("MathematicaMatrix Creation Test Completed."); }
public static void IsOpsTest() { var v1 = MathematicaVector.CreateFullVector(Cas, Cas.Constants.Zero, Cas.Constants.One, Cas.Constants.TwoPi); var v2 = MathematicaVector.Create(Cas, "SparseArray[{Rule[1, Pi], Rule[5, -1]}]"); TestUtils.AddTestStartingMessage("MathematicaVector 'Is' Operations Test Started."); TestUtils.AddTest("Try apply IsFullVector() to full vector {0, 1, 2 Pi} ... ", v1.IsFullVector()); TestUtils.AddTest("Try apply IsSparseVector() to full vector {0, 1, 2 Pi} ... ", v1.IsSparseVector()); TestUtils.AddTest("Try apply IsFullVector() to sparse vector {Pi, 0, 0, 0, -1} ... ", v2.IsFullVector()); TestUtils.AddTest("Try apply IsSparseVector() to sparse vector {Pi, 0, 0, 0, -1} ... ", v2.IsSparseVector()); TestUtils.AddTestCompletionMessage("MathematicaVector 'Is' Operations Test Completed."); }
public static void BasicOpsTest() { var s = MathematicaScalar.Create(Cas, -2); var v = MathematicaVector.CreateFullVector(Cas, Cas.Constants.One, Cas.Constants.Pi, Cas.Constants.MinusOne); var m1 = MathematicaMatrix.Create(Cas, "RandomInteger[{-5, 5}, {3, 4}]"); var m2 = MathematicaMatrix.CreateFullDiagonalMatrix(Cas, Cas.Constants.One, Cas.Constants.Pi, Cas.Constants.MinusOne); var sm3 = MathematicaMatrix.Create(Cas, "SparseArray[{{1, 0, 0, 0}, {0, 2, 0, 4}, {0, 0, 0, 3}}]"); var sm4 = m2.ToMathematicaSparseMatrix(); TestUtils.AddTestStartingMessage("MathematicaMatrix Basic Operations Test Started."); TestUtils.AddTest("Try get rows of full 3x4 matrix ... ", m1.RowCount); TestUtils.AddTest("Try get columns of full 3x4 matrix ... ", m1.ColumnCount); TestUtils.AddTest("Try get rows of sparse 3x4 matrix ... ", sm3.RowCount); TestUtils.AddTest("Try get columns of sparse 3x4 matrix ... ", sm3.ColumnCount); for (var i = 0; i < m1.RowCount; i++) { for (var j = 0; j < m1.ColumnCount; j++) { TestUtils.AddTest("Try get component (" + i + ", " + j + ") of full 3x4 matrix " + m1.ExpressionText + " ... ", m1[i, j]); } } for (var i = 0; i < sm3.RowCount; i++) { for (var j = 0; j < sm3.ColumnCount; j++) { TestUtils.AddTest("Try get component (" + i + ", " + j + ") of sparse 3x4 matrix " + sm3.ToMathematicaFullMatrix().ExpressionText + " ... ", sm3[i, j]); } } for (var i = 0; i < m1.RowCount; i++) { TestUtils.AddTest("Try get row " + i + " of full 3x4 matrix " + m1.ExpressionText + " ... ", m1.GetRow(i)); } for (var i = 0; i < m1.ColumnCount; i++) { TestUtils.AddTest("Try get column " + i + " of full 3x4 matrix " + m1.ExpressionText + " ... ", m1.GetColumn(i)); } for (var i = 0; i < sm3.RowCount; i++) { TestUtils.AddTest("Try get row " + i + " of sparse 3x4 matrix " + sm3.ToMathematicaFullMatrix().ExpressionText + " ... ", sm3.GetRow(i)); } for (var i = 0; i < sm3.ColumnCount; i++) { TestUtils.AddTest("Try get column " + i + " of sparse 3x4 matrix " + sm3.ToMathematicaFullMatrix().ExpressionText + " ... ", sm3.GetColumn(i)); } TestUtils.AddTest("Try get diagonal of full matrix " + m2.ExpressionText + " ... ", m2.GetDiagonal()); TestUtils.AddTest("Try get diagonal of sparse matrix " + sm4.ToMathematicaFullMatrix().ExpressionText + " ... ", sm4.GetDiagonal()); TestUtils.AddTest("Try negate matrix " + m2.ExpressionText + " ... ", -m2); TestUtils.AddTest("Try add matrix " + m1.ExpressionText + " and " + sm3.ToMathematicaFullMatrix().ExpressionText + " ... ", m1 + sm3); TestUtils.AddTest("Try subtract matrix " + m1.ExpressionText + " and " + sm3.ToMathematicaFullMatrix().ExpressionText + " ... ", m1 - sm3); TestUtils.AddTest("Try multiply matrix " + m2.ExpressionText + " and " + m1.ToMathematicaFullMatrix().ExpressionText + " ... ", m2 * m1); TestUtils.AddTest("Try multiply matrix " + m2.ExpressionText + " and scalar -2 ... ", m2 * s); TestUtils.AddTest("Try multiply scalar -2 and matrix " + m2.ExpressionText + " ... ", s * m2); TestUtils.AddTest("Try divide matrix " + m2.ExpressionText + " by scalar -2 ... ", m2 / s); TestUtils.AddTest("Try multiply matrix " + m2.ExpressionText + " and vector " + v.ExpressionText + " ... ", m2.Times(v)); TestUtils.AddTest("Try multiply vector " + v.ExpressionText + " and matrix " + m2.ExpressionText + " ... ", v.Times(m2)); TestUtils.AddTest("Try transpose matrix " + m2.ExpressionText + " ... ", m2.Transpose()); TestUtils.AddTest("Try inverse matrix " + m2.ExpressionText + " ... ", m2.Inverse()); TestUtils.AddTest("Try inverse transpose matrix " + m2.ExpressionText + " ... ", m2.InverseTranspose()); m2 = MathematicaMatrix.Create(Cas, "{{1, -1, 0}, {-1, 2, -1}, {0, -1, 1}}"); TestUtils.AddTest("Try get eigen values (in a vector) of matrix " + m2.ExpressionText + " ... ", m2.EigenValues_InVector()); TestUtils.AddTest("Try get eigen values (in a matrix) of matrix " + m2.ExpressionText + " ... ", m2.EigenValues_InDiagonalMatrix()); TestUtils.AddTest("Try get eigen vectors (as rows of a matrix) of matrix " + m2.ExpressionText + " ... ", m2.EigenVectors(MathematicaMatrix.EigenVectorsSpecs.InMatrixRows)); TestUtils.AddTest("Try get eigen vectors (as columns of a matrix) of matrix " + m2.ExpressionText + " ... ", m2.EigenVectors(MathematicaMatrix.EigenVectorsSpecs.InMatrixColumns)); TestUtils.AddTest("Try get eigen vectors (as orthonormal rows of a matrix) of matrix " + m2.ExpressionText + " ... ", m2.EigenVectors(MathematicaMatrix.EigenVectorsSpecs.OrthogonalInMatrixRows)); TestUtils.AddTest("Try get eigen vectors (as orthonormal columns of a matrix) of matrix " + m2.ExpressionText + " ... ", m2.EigenVectors(MathematicaMatrix.EigenVectorsSpecs.OrthogonalInMatrixColumns)); MathematicaVector eval1; MathematicaMatrix eval2; MathematicaMatrix evec; m2.EigenSystem(MathematicaMatrix.EigenVectorsSpecs.InMatrixRows, out eval1, out evec); TestUtils.AddTest("Try get eigen system values (in a vector) of matrix " + m2.ExpressionText + " ... ", eval1); m2.EigenSystem(MathematicaMatrix.EigenVectorsSpecs.InMatrixRows, out eval2, out evec); TestUtils.AddTest("Try get eigen system values (in a matrix) of matrix " + m2.ExpressionText + " ... ", eval2); m2.EigenSystem(MathematicaMatrix.EigenVectorsSpecs.InMatrixRows, out eval1, out evec); TestUtils.AddTest("Try get eigen system vectors (as rows of a matrix) of matrix " + m2.ExpressionText + " ... ", evec); m2.EigenSystem(MathematicaMatrix.EigenVectorsSpecs.InMatrixColumns, out eval1, out evec); TestUtils.AddTest("Try get eigen system vectors (as columns of a matrix) of matrix " + m2.ExpressionText + " ... ", evec); m2.EigenSystem(MathematicaMatrix.EigenVectorsSpecs.OrthogonalInMatrixRows, out eval1, out evec); TestUtils.AddTest("Try get eigen system vectors (as orthonormal rows of a matrix) of matrix " + m2.ExpressionText + " ... ", evec); m2.EigenSystem(MathematicaMatrix.EigenVectorsSpecs.OrthogonalInMatrixColumns, out eval1, out evec); TestUtils.AddTest("Try get eigen system vectors (as orthonormal columns of a matrix) of matrix " + m2.ExpressionText + " ... ", evec); TestUtils.AddTestCompletionMessage("MathematicaMatrix Basic Operations Test Completed."); }
protected override void ComputeIpm() { var v = MathematicaVector.CreateFullVector(CasInterface, BasisVectorsSignatures); InnerProductMatrix = MathematicaMatrix.CreateDiagonal(v); }
public static void BasicOpsTest() { var v1 = MathematicaVector.CreateFullVector(Cas, Cas.Constants.Zero, Cas.Constants.One, Cas.Constants.TwoPi); var v2 = MathematicaVector.Create(Cas, @"{-1, x, Sin[t]}"); var sv3 = MathematicaVector.Create(Cas, "SparseArray[{Rule[1, Pi], Rule[5, -1]}]"); var s = MathematicaScalar.Create(Cas, "x"); TestUtils.AddTestStartingMessage("MathematicaVector Basic Operations Test Started."); TestUtils.AddTest("Try get size of full vector {-1, x, Sin[t]} ... ", v2.Size); TestUtils.AddTest("Try get 1st component of full vector {-1, x, Sin[t]} ... ", v2[0]); TestUtils.AddTest("Try get 2nd component of full vector {-1, x, Sin[t]} ... ", v2[1]); TestUtils.AddTest("Try get 3rd component of full vector {-1, x, Sin[t]} ... ", v2[2]); TestUtils.AddTest("Try get size of sparse vector {Pi, 0, 0, 0, -1} ... ", sv3.Size); TestUtils.AddTest("Try get 1st component of sparse vector {Pi, 0, 0, 0, -1} ... ", sv3[0]); TestUtils.AddTest("Try get 3rd component of sparse vector {Pi, 0, 0, 0, -1} ... ", sv3[2]); TestUtils.AddTest("Try get 5th component of sparse vector {Pi, 0, 0, 0, -1} ... ", sv3[4]); TestUtils.AddTest("Try list components of full vector {-1, x, Sin[t]}", ""); var i = 0; foreach (var scalar in v2) { TestUtils.AddTest(" Component " + i + " ... ", scalar); i++; } TestUtils.AddTest("Try list components of sparse vector {Pi, 0, 0, 0, -1}", ""); i = 0; foreach (var scalar in sv3) { TestUtils.AddTest(" Component " + i + " ... ", scalar); i++; } TestUtils.AddTest("Try negate vector {-1, x, Sin[t]} ... ", -v2); TestUtils.AddTest("Try add vectors {0, 1, 2 Pi} and {-1, x, Sin[t]} ... ", v1 + v2); TestUtils.AddTest("Try subtract vectors {0, 1, 2 Pi} and {-1, x, Sin[t]} ... ", v1 - v2); TestUtils.AddTest("Try find dot product of {0, 1, 2 Pi} and {-1, x, Sin[t]} ... ", v1 * v2); TestUtils.AddTest("Try find product of vector {-1, x, Sin[t]} with scalar x ... ", v2 * s); TestUtils.AddTest("Try find product of scalar x with vector {-1, x, Sin[t]} ... ", s * v2); TestUtils.AddTest("Try divide vector {-1, x, Sin[t]} by scalar x ... ", v2 / s); TestUtils.AddTest("Try apply Norm to vector {0, 1, 2 Pi} ... ", v1.Norm()); TestUtils.AddTest("Try apply Norm2 to vector {0, 1, 2 Pi} ... ", v1.Norm2()); var m = MathematicaMatrix.CreateFullDiagonalMatrix(Cas, Cas.Constants.One, Cas.Constants.Pi, Cas.Constants.MinusOne); TestUtils.AddTest("Try find product of vector {-1, x, Sin[t]} with matrix DiagonalMatrix[{1, Pi, -1}] ... ", v2.Times(m)); TestUtils.AddTest("Try apply ToMathematicaVector() to full vector {0, 1, 2 Pi} ... ", v1.ToMathematicaVector()); TestUtils.AddTest("Try apply ToMathematicaFullVector() to full vector {0, 1, 2 Pi} ... ", v1.ToMathematicaFullVector()); TestUtils.AddTest("Try apply ToMathematicaSparseVector() to full vector {0, 1, 2 Pi} ... ", v1.ToMathematicaSparseVector()); TestUtils.AddTest("Try apply ToMathematicaVector() to sparse vector {Pi, 0, 0, 0, -1} ... ", sv3.ToMathematicaVector()); TestUtils.AddTest("Try apply ToMathematicaFullVector() to sparse vector {Pi, 0, 0, 0, -1} ... ", sv3.ToMathematicaFullVector()); TestUtils.AddTest("Try apply ToMathematicaSparseVector() to sparse vector {Pi, 0, 0, 0, -1} ... ", sv3.ToMathematicaSparseVector()); TestUtils.AddTestCompletionMessage("MathematicaVector Basic Operations Test Completed."); }