Exemplo n.º 1
0
        public bool EigenSystem(EigenVectorsSpecs specs, out MathematicaMatrix values, out MathematicaMatrix vectors)
        {
            var sysExpr = CasInterface[Mfs.Eigensystem[MathExpr]];

            values = Create(CasInterface, CasInterface[Mfs.DiagonalMatrix[sysExpr.Args[0]]]);

            Expr vectorsExpr;

            switch (specs)
            {
            case EigenVectorsSpecs.InMatrixRows:
                vectorsExpr = Mfs.Eigenvectors[sysExpr.Args[1]];
                break;

            case EigenVectorsSpecs.InMatrixColumns:
                vectorsExpr = CasInterface[Mfs.Transpose[Mfs.Eigenvectors[sysExpr.Args[1]]]];
                break;

            case EigenVectorsSpecs.OrthogonalInMatrixRows:
                vectorsExpr = CasInterface[Mfs.Orthogonalize[Mfs.Eigenvectors[sysExpr.Args[1]]]];
                break;

            default:
                vectorsExpr = CasInterface[Mfs.Transpose[Mfs.Orthogonalize[Mfs.Eigenvectors[sysExpr.Args[1]]]]];
                break;
            }

            vectors = Create(CasInterface, vectorsExpr);

            //TODO: Test if the eigen sytem is OK
            return(true);
        }
Exemplo n.º 2
0
        public MathematicaMatrix EigenVectors(EigenVectorsSpecs specs)
        {
            Expr vectorsExpr;

            switch (specs)
            {
            case EigenVectorsSpecs.InMatrixRows:
                vectorsExpr = Mfs.Eigenvectors[MathExpr];
                break;

            case EigenVectorsSpecs.InMatrixColumns:
                vectorsExpr = Mfs.Transpose[Mfs.Eigenvectors[MathExpr]];
                break;

            case EigenVectorsSpecs.OrthogonalInMatrixRows:
                vectorsExpr = Mfs.Orthogonalize[Mfs.Eigenvectors[MathExpr]];
                break;

            default:
                vectorsExpr = Mfs.Transpose[Mfs.Orthogonalize[Mfs.Eigenvectors[MathExpr]]];
                break;
            }

            return(new MathematicaMatrix(CasInterface, CasInterface[vectorsExpr]));
        }