// Метод для вычисления суммы матриц:
        public static MatrixExp operator +(MatrixExp A, MatrixExp N)
        {
            MatrixExp T = new MatrixExp();
            int       i, j;

            for (i = 0; i < 2; i++)
            {
                for (j = 0; j < 2; j++)
                {
                    T.matrix[i, j] = A.matrix[i, j] + N.matrix[i, j];
                }
            }

            return(T);
        }
        // Метод для вычисления произведения матриц:
        static public MatrixExp operator *(MatrixExp A, MatrixExp N)
        {
            MatrixExp T = new MatrixExp();
            int       i, j, k;

            for (i = 0; i < 2; i++)
            {
                for (j = 0; j < 2; j++)
                {
                    T.matrix[i, j] = 0;
                    for (k = 0; k < 2; k++)
                    {
                        T.matrix[i, j] += A.matrix[i, k] * N.matrix[k, j];
                    }
                }
            }
            return(T);
        }
        // Метод для вычисления матричной экспоненты:
        public MatrixExp mExp(MatrixExp N)
        {
            MatrixExp E = new MatrixExp();
            MatrixExp T = new MatrixExp();

            //MatrixExp T, Q;
            // Начальное значение - единичная матрица:
            //A = new MatrixExp();
            //B = new MatrixExp();


            E.matrix[0, 0] = 1;
            E.matrix[1, 1] = 1;
            E.matrix[0, 1] = 0;
            E.matrix[1, 0] = 0;

            T.matrix = E.matrix;

            MatrixExp Eold = new MatrixExp();
            //MatrixExp t = new MatrixExp();


            // Вычисление ряда для экспоненты:

            int i = 0;

            do
            {
                i++;
                Eold.matrix = E.matrix;
                T           = (T * N) / i;
                E           = E + T;
            }while (i < 10);

            return(E);
        }
        public void button_Click(object sender, RoutedEventArgs e)
        {
            //считывание значения матрицы из  textBox
            try
            {
                double vi00 = Convert.ToDouble(i00.Text);
                double vi01 = Convert.ToDouble(i01.Text);
                double vi10 = Convert.ToDouble(i10.Text);
                double vi11 = Convert.ToDouble(i11.Text);

                MatrixExp A = new MatrixExp();

                Console.WriteLine("Матрица A:");
                A.matrix[0, 0] = vi00;
                A.matrix[0, 1] = vi01;
                A.matrix[1, 0] = vi10;
                A.matrix[1, 1] = vi11;


                A = A.mExp(A);


                r00.Text = Convert.ToString(A.matrix[0, 0]);
                r01.Text = Convert.ToString(A.matrix[0, 1]);
                r10.Text = Convert.ToString(A.matrix[1, 0]);
                r11.Text = Convert.ToString(A.matrix[1, 1]);
            }
            catch (System.FormatException)
            {
                MessageBox.Show("Вы ввели не валидные данные, повторите снова");
                i00.Clear();
                i01.Clear();
                i10.Clear();
                i11.Clear();
            }
        }