コード例 #1
0
 protected double h, k;                                                 //переменные для хванения шагов по сетке
 public IterativeMethod(fxy _Fxy, fxy _Uxy, Rect _rect, int _n, int _m) //конструктор, в котором задаются необходимые исходные данные,
                                                                        //выделается память под массивы, вычисляются значения функции f в узлах сетки и ГУ в узлах
 {
     n    = _n;
     m    = _m;
     Fxy  = _Fxy;
     Uxy  = _Uxy;
     rect = _rect;
     h    = (rect.b - rect.a) / n;
     k    = (rect.d - rect.c) / m;
     f    = new double[n + 1, m + 1];
     v    = new double[n + 1, m + 1];
     for (int i = 0; i < n + 1; i++) //вычисление значений функции f
     {
         for (int j = 0; j < m + 1; j++)
         {
             f[i, j] = Fxy.val(rect.a + i * h, rect.c + j * k);
             v[i, j] = 0;
         }
     }
     for (int j = 0; j <= m; j++) //вычисление ГУ
     {
         v[0, j] = Uxy.val(rect.a, rect.c + j * k);
         v[n, j] = Uxy.val(rect.b, rect.c + j * k);
     }
     for (int i = 0; i <= n; i++) //вычисление ГУ
     {
         v[i, 0] = Uxy.val(rect.a + i * h, rect.c);
         v[i, m] = Uxy.val(rect.a + i * h, rect.d);
     }
 }
コード例 #2
0
 public MinimalDiscrepancyMethod2(fxy _Fxy, fxy _Uxy, Rect _rect, Rect _rect_2, int _n, int _m)
     : base(_Fxy, _Uxy, _rect, _n, _m)
 {
     rect2 = _rect_2;
 }
コード例 #3
0
 public SOR(fxy _Fxy, fxy _Uxy, Rect _rect, int _n, int _m, double _w)
     : base(_Fxy, _Uxy, _rect, _n, _m)
 {
     w = _w; //омега, параметр метода МВР
 }
コード例 #4
0
 public JacobiMethod(fxy _Fxy, fxy _Uxy, Rect _rect, int _n, int _m)
     : base(_Fxy, _Uxy, _rect, _n, _m)
 {
 }
コード例 #5
0
 public SeidelMethod(fxy _Fxy, fxy _Uxy, Rect _rect, int _n, int _m)
     : base(_Fxy, _Uxy, _rect, _n, _m)
 {
 }
コード例 #6
0
 public MinimalDiscrepancyMethod(fxy _Fxy, fxy _Uxy, Rect _rect, int _n, int _m)
     : base(_Fxy, _Uxy, _rect, _n, _m)
 {
 }