示例#1
0
        public static RationalSquareMatrix FaddevasMethod(RationalSquareMatrix AIn, out RationalVector CharacteristicEquation)
        {
            RationalSquareMatrix A = AIn.Clone();

            CharacteristicEquation = new RationalVector();

            RationalSquareMatrix A_n  = A;
            Rational             b_n  = 1;
            RationalSquareMatrix B_n  = null;
            RationalSquareMatrix I    = null;
            RationalSquareMatrix AInv = null;
            int i = 0;

            for (i = 1; i < A.Rows; i++)
            {
                b_n = -A_n.Trace() / (i);
                CharacteristicEquation.Add(b_n);
                I = RationalSquareMatrix.IdentityMatrix(A.Rows);

                B_n = A_n + b_n * I;

                A_n = A * B_n;
            }
            b_n = -A_n.Trace() / (i);
            CharacteristicEquation.Add(b_n);

            AInv         = -1 / b_n * B_n;
            AInv.FullRep = A.ToLatex() + "^{-1} = " + AInv.ToLatex();

            return(AInv);
        }
示例#2
0
        public static RationalVector operator +(Rational value, RationalVector v)
        {
            RationalVector vM = new RationalVector();

            for (int i = 0; i < v.Count; i++)
            {
                vM.Add(value + v[i]);
            }
            return(vM);
        }
示例#3
0
        public static RationalVector operator /(RationalVector v, Rational value)
        {
            RationalVector vM = new RationalVector();

            for (int i = 0; i < v.Count; i++)
            {
                vM.Add(v[i] / value);
            }
            return(vM);
        }
示例#4
0
        public static RationalVector operator -(RationalVector v1, RationalVector v2)
        {
            RationalVector vM = new RationalVector();

            for (int i = 0; i < v1.Count; i++)
            {
                vM.Add(v1[i] - v2[i]);
            }
            return(vM);
        }
        public RationalVector this[params string[] exps]
        {
            get
            {
                RationalVector rv = new RationalVector();
                foreach (string r in exps)
                {
                    rv.Add(Rational.Parse(r));
                }

                return(rv);
            }
        }
示例#6
0
        public RationalVector CramersRule(RationalVector VectorToSolve)
        {
            RationalVector Deltas = new RationalVector();

            RationalSquareMatrix A     = this.Clone();
            Rational             Delta = RationalSquareMatrix.Det(A);

            for (int i = 0; i < this.Rows; i++)
            {
                RationalVector rvSave = A[i];
                A[i] = VectorToSolve;
                Deltas.Add(RationalSquareMatrix.Det(A) / Delta);
                A[i] = rvSave;
            }
            return(Deltas);
        }
示例#7
0
        public RationalVector this[int Column]
        {
            get
            {
                RationalVector ret = new RationalVector();

                for (int i = 0; i < this.Rows; i++)
                {
                    ret.Add(this[i, Column]);
                }

                return(ret);
            }
            set
            {
                for (int i = 0; i < this.Rows; i++)
                {
                    this[i, Column] = value[i];
                }
            }
        }