示例#1
0
 private static void InterarMatriz(Matriz m, Action <int, int> action)
 {
     for (int i = 0; i < m.Linhas; i++)
     {
         for (int j = 0; j < m.Colunas; j++)
         {
             action(i, j);
         }
     }
 }
示例#2
0
        /// <summary>
        /// Devolve a soma de duas matrizes, se possível.
        /// </summary>
        public Matriz Soma(Matriz b)
        {
            Matriz matrizSoma = null;

            if (this.Linhas == b.Linhas && this.Colunas == b.Colunas)
            {
                matrizSoma = new Matriz(Linhas, Colunas);
                InterarMatriz(this, (i, j) => matrizSoma[i, j] = this[i, j] + b[i, j]);
            }
            return(matrizSoma);
        }
示例#3
0
        private void ComputeParameters()
        {
            Matriz inverse = M.Inverse();
            Matriz cramer  = inverse * B;

            for (int i = 0; i < Parameters.Length; i++)
            {
                Parameters[i].Value = cramer[0, i];
                Parameters[i].Error = inverse[i, i];
            }
        }
示例#4
0
        /// <summary>
        /// Devolve a multiplicação da matriz pela matriz b, se isso for possível.
        /// </summary>
        public Matriz Multiplicacao(Matriz b)
        {
            Matriz multiplicacao = null;

            if (Colunas == b.Linhas)
            {
                multiplicacao = new Matriz(Linhas, b.Colunas);
                for (int i = 0; i < Linhas; i++)
                {
                    for (int j = 0; j < b.Colunas; j++)
                    {
                        for (int k = 0; k < Colunas; k++)
                        {
                            multiplicacao[i, j] += this[i, k] * b[k, j];
                        }
                    }
                }
            }
            return(multiplicacao);
        }
示例#5
0
        private static bool Comparison(Matriz a, Matriz b)
        {
            if (a.Linhas != b.Linhas || a.Colunas != b.Colunas)
            {
                return(false);
            }
            else
            {
                for (int i = 0; i < a.Linhas; i++)
                {
                    for (int j = 0; j < a.Colunas; j++)
                    {
                        if (a[i, j] != b[i, j])
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }
示例#6
0
        /// <summary>
        /// Matriz obtida pela supressão da linha k e da coluna l.
        /// </summary>
        public Matriz Menor(int k, int l)
        {
            Matriz menor = new Matriz(Linhas - 1, Colunas - 1);
            int    i, j, p, q;

            for (i = 0, p = 0; i < Linhas; i++)
            {
                if (i != k)
                {
                    for (j = 0, q = 0; j < Colunas; j++)
                    {
                        if (j != l)
                        {
                            menor[p, q] = this[i, j];
                            q++;
                        }
                    }
                    p++;
                }
            }

            return(menor);
        }
示例#7
0
 /// <summary>
 /// Devolve a subtração de duas matrizes, se possível.
 /// </summary>
 public Matriz Subtracao(Matriz b)
 {
     return(Soma(b.Oposto()));
 }