public static EmptyPreconditioner Create(BaseMatrix source)
 {
     return new EmptyPreconditioner()
     {
         sourceMatrix = source
     };
 }
Beispiel #2
0
        private void updateDgvMatrix(src.Matrix.BaseMatrix matrix)
        {
            tabControl1.SelectedIndex = 0;

            dgvMatrix.Rows.Clear();
            dgvMatrix.Columns.Clear();

            if (matrix.Size > maxDrawSize)
            {
                dgvMatrix.Columns.Add("", "");
                dgvMatrix.Rows.Add("Matrix is too big to draw");
                return;
            }
            for (var i = 0; i < matrix.Size; i++)
            {
                dgvMatrix.Columns.Add("", "");
            }


            string[][] strs = new string[matrix.Size][];
            for (int i = 0; i < matrix.Size; i++)
            {
                strs[i] = new string[matrix.Size];
            }
            matrix.Run((i, j, u) => strs[i][j] = u.ToString());

            for (int i = 0; i < matrix.Size; i++)
            {
                dgvMatrix.Rows.Add(strs[i]);
            }
        }
 public static LLTPreconditioner Create(BaseMatrix source)
 {
     return new LLTPreconditioner()
     {
         sourceMatrix = source,
         LLTmatrix = source.LLt()
     };
 }
 public static LUPreconditioner Create(BaseMatrix source)
 {
     return new LUPreconditioner()
     {
         sourceMatrix = source,
         LUmatrix = source.LU()
     };
 }
 public static DiagonalPreconditioner Create(BaseMatrix matrix)
 {
     return new DiagonalPreconditioner()
     {
         sourceMatrix = matrix,
         diagsqrt = Sqrt(matrix)
     };
 }
 private static Vector Sqrt(BaseMatrix matrix)
 {
     var vec = matrix.Diagonal.Clone() as Vector;
     for (int i = 0; i < vec.Size; i++)
     {
         vec[i] = Math.Sqrt(vec[i]);
         if (!(vec[i] == vec[i]))
             throw new Exception(String.Concat("Предобусловливание Diagonal : извлечение корня из отричательного числа, элемент диагонали №", i));
     }
     return vec;
 }
Beispiel #7
0
        public static void OutputGenericMatrix(string fileName, BaseMatrix matrix)
        {
            Logger log = Logger.Instance;

            try
            {
                using (StreamWriter streamWriter = new StreamWriter(fileName))
                {
                    log.Info("Вывод матрицы в файл в обобщенном формате" + fileName + "...");

                    int n = 0;
                    matrix.Run((i, j, u) => {if (u != 0) n++;});
                    streamWriter.WriteLine(n);
                    matrix.Run((i, j, u) => {if (u != 0) streamWriter.WriteLine(String.Format("{0} {1} {2}", i, j, u));});
                    log.Info("Вывод матрицы в файл завершен.");
                }
            }
            catch (Exception e)
            {
                log.Error(e.Message);
                log.Error("Аварийное завершение вывода матрицы.");
            }
        }