private void btnGeraMultiplica_Click(object sender, EventArgs e)
        {
            if (Matriz == null || MatrizResultante == null)
            {
                MessageBox.Show("Matriz nula !", "Error - Matriz");
                return;
            }
            float[,] tempMatriz           = new float[Matriz.GetLength(0), Matriz.GetLength(1)];
            float[,] tempMatrizResultante = new float[MatrizResultante.GetLength(0), MatrizResultante.GetLength(1)];
            if (tempMatriz.GetLength(1) != tempMatrizResultante.GetLength(0))
            {
                MessageBox.Show("So e possivel a multiplicacao de matrizes onde a coluna da matriz 1 e igual a linha da matriz 2!", "Erro - Multiplicacao Matrizes");
                return;
            }

            for (int x = 0; x < Matriz.GetLength(0); x++)
            {
                for (int y = 0; y < Matriz.GetLength(1); y++)
                {
                    float n = 0;
                    float.TryParse(Matriz[x, y].Text, out n);
                    tempMatriz[x, y] = n;
                }
            }
            matrix = new Matriz(tempMatriz);
            for (int x = 0; x < MatrizResultante.GetLength(0); x++)
            {
                for (int y = 0; y < MatrizResultante.GetLength(1); y++)
                {
                    float n = 0;
                    float.TryParse(MatrizResultante[x, y].Text, out n);
                    tempMatrizResultante[x, y] = n;
                }
            }
            result = new Matriz(tempMatrizResultante);

            float[,] tempMatrizResultado = matrix.Multiplicacao(tempMatrizResultante);
            MatrizResultado = new TextBox[tempMatrizResultante.GetLength(0), tempMatrizResultante.GetLength(1)];
            int TamanhoText = groupBoxResultante.Width;

            groupBoxResultante.Controls.Clear();
            for (int x = 0; x < MatrizResultado.GetLength(0); x++)
            {
                for (int y = 0; y < MatrizResultado.GetLength(1); y++)
                {
                    MatrizResultado[x, y]       = new TextBox();
                    MatrizResultado[x, y].Text  = tempMatrizResultado[x, y].ToString();
                    MatrizResultado[x, y].Top   = (x * MatrizResultado[x, y].Height) + 20;
                    MatrizResultado[x, y].Left  = y * TamanhoText + 6;
                    MatrizResultado[x, y].Width = TamanhoText;
                    groupBoxResultante.Controls.Add(MatrizResultado[x, y]);
                }
            }
            groupBoxMatriz.Controls.Clear();
        }
        private void btnGerarInversa_Click(object sender, EventArgs e)
        {
            if (Matriz == null)
            {
                MessageBox.Show("Matriz nula !", "Error - Matriz");
                return;
            }
            float[,] tempResultante = new float[Matriz.GetLength(0), Matriz.GetLength(1)];
            float[,] inversa        = new float[Matriz.GetLength(0), Matriz.GetLength(1)];
            if (tempResultante.GetLength(0) != 2 || tempResultante.GetLength(1) != 2)
            {
                if (tempResultante.GetLength(0) != 3 || tempResultante.GetLength(1) != 3)
                {
                    MessageBox.Show("Matriz invalida !", "Error - Matriz");
                    return;
                }
            }
            for (int x = 0; x < Matriz.GetLength(0); x++)
            {
                for (int y = 0; y < Matriz.GetLength(1); y++)
                {
                    float n = 0;
                    float.TryParse(Matriz[x, y].Text, out n);
                    tempResultante[x, y] = n;
                }
            }
            matrix = new Matriz(tempResultante);
            if (tempResultante.GetLength(0) == tempResultante.GetLength(1))
            {
                determinante = matrix.Determinante();
            }
            else
            {
                MessageBox.Show("Matriz invalida !", "Error - Matriz");
                return;
            }
            if (determinante == 0)
            {
                MessageBox.Show("Matriz invalida, determinante igual a 0 !", "Error - Matriz");
                return;
            }
            inversa = matrix.Inversa();
            int TamanhoText = groupBoxMatriz.Width / Matriz.GetLength(1);

            for (int x = 0; x < Matriz.GetLength(0); x++)
            {
                for (int y = 0; y < Matriz.GetLength(1); y++)
                {
                    Matriz[x, y].Text = inversa[x, y].ToString();
                }
            }
        }
        private void btnGerarTransposta_Click(object sender, EventArgs e)
        {
            if (Matriz == null)
            {
                MessageBox.Show("Matriz nula !", "Error - Matriz");
                return;
            }
            float[,] tempResultante = new float[Matriz.GetLength(0), Matriz.GetLength(1)];

            for (int x = 0; x < Matriz.GetLength(0); x++)
            {
                for (int y = 0; y < Matriz.GetLength(1); y++)
                {
                    float n = 0;
                    float.TryParse(Matriz[x, y].Text, out n);
                    tempResultante[x, y] = n;
                }
            }
            matrix = new Matriz(tempResultante);

            float[,] tempMatrizResultante = matrix.Transposta();
            int TamanhoText = groupBoxMatriz.Width / Matriz.GetLength(1);

            Matriz = new TextBox[tempMatrizResultante.GetLength(0), tempMatrizResultante.GetLength(1)];
            groupBoxMatriz.Controls.Clear();
            for (int x = 0; x < Matriz.GetLength(0); x++)
            {
                for (int y = 0; y < Matriz.GetLength(1); y++)
                {
                    Matriz[x, y]       = new TextBox();
                    Matriz[x, y].Text  = tempMatrizResultante[x, y].ToString();
                    Matriz[x, y].Top   = (x * Matriz[x, y].Height) + 20;
                    Matriz[x, y].Left  = y * TamanhoText + 6;
                    Matriz[x, y].Width = TamanhoText;
                    groupBoxMatriz.Controls.Add(Matriz[x, y]);
                }
            }
        }
        private void btnGerarFuncaoInv_Click(object sender, EventArgs e)
        {
            if (Matriz == null)
            {
                MessageBox.Show("Matriz nula !", "Error - Matriz");
                return;
            }
            float[,] tempResultante = new float[Matriz.GetLength(0), Matriz.GetLength(1)];
            float[,] inversa        = new float[Matriz.GetLength(0), Matriz.GetLength(1)];
            if (tempResultante.GetLength(0) != 2 || tempResultante.GetLength(1) != 2)
            {
                if (tempResultante.GetLength(0) != 3 || tempResultante.GetLength(1) != 3)
                {
                    MessageBox.Show("Matriz invalida !", "Error - Matriz");
                    return;
                }
            }
            for (int x = 0; x < Matriz.GetLength(0); x++)
            {
                for (int y = 0; y < Matriz.GetLength(1); y++)
                {
                    float n = 0;
                    float.TryParse(Matriz[x, y].Text, out n);
                    tempResultante[x, y] = n;
                }
            }
            matrix = new Matriz(tempResultante);
            if (tempResultante.GetLength(0) == tempResultante.GetLength(1))
            {
                determinante = matrix.Determinante();
            }
            else
            {
                MessageBox.Show("Matriz invalida !", "Error - Matriz");
                return;
            }
            if (determinante == 0)
            {
                MessageBox.Show("Matriz invalida, determinante igual a 0 !", "Error - Matriz");
                return;
            }
            inversa = matrix.Inversa();
            int TamanhoText = groupBoxMatriz.Width / Matriz.GetLength(1);

            for (int x = 0; x < Matriz.GetLength(0); x++)
            {
                for (int y = 0; y < Matriz.GetLength(1); y++)
                {
                    Matriz[x, y].Text = inversa[x, y].ToString();
                }
            }

            if (inversa == null || MatrizResultante == null)
            {
                MessageBox.Show("Matriz nula !", "Error - Matriz");
                return;
            }
            float[,] tempMatrizInversa    = new float[inversa.GetLength(0), inversa.GetLength(1)];
            float[,] tempMatrizResultante = new float[MatrizResultante.GetLength(0), MatrizResultante.GetLength(1)];
            if (tempMatrizInversa.GetLength(1) != tempMatrizResultante.GetLength(0))
            {
                MessageBox.Show("So e possivel a multiplicacao de matrizes onde a coluna da matriz 1 e igual a linha da matriz 2!", "Erro - Multiplicacao Matrizes");
                return;
            }

            for (int x = 0; x < inversa.GetLength(0); x++)
            {
                for (int y = 0; y < inversa.GetLength(1); y++)
                {
                    float n = 0;
                    float.TryParse(inversa[x, y].ToString(), out n);
                    tempMatrizInversa[x, y] = n;
                }
            }
            matrix = new Matriz(tempMatrizInversa);
            for (int x = 0; x < MatrizResultante.GetLength(0); x++)
            {
                for (int y = 0; y < MatrizResultante.GetLength(1); y++)
                {
                    float n = 0;
                    float.TryParse(MatrizResultante[x, y].Text, out n);
                    tempMatrizResultante[x, y] = n;
                }
            }
            result = new Matriz(tempMatrizResultante);

            float[,] tempMatrizResultado = matrix.Multiplicacao(tempMatrizResultante);
            MatrizResultado = new TextBox[tempMatrizResultante.GetLength(0), tempMatrizResultante.GetLength(1)];
            int TamanhoText1 = groupBoxResultante.Width;

            groupBoxResultante.Controls.Clear();
            for (int x = 0; x < MatrizResultado.GetLength(0); x++)
            {
                for (int y = 0; y < MatrizResultado.GetLength(1); y++)
                {
                    MatrizResultado[x, y]       = new TextBox();
                    MatrizResultado[x, y].Text  = tempMatrizResultado[x, y].ToString();
                    MatrizResultado[x, y].Top   = (x * MatrizResultado[x, y].Height) + 20;
                    MatrizResultado[x, y].Left  = y * TamanhoText1 + 6;
                    MatrizResultado[x, y].Width = TamanhoText1;
                    groupBoxResultante.Controls.Add(MatrizResultado[x, y]);
                }
            }
        }