← Назад Далее →

3.1. Генерация шаблонов разностной схемы

Основой для построения какой-либо разностной схемы второго порядка аппроксимации является четырехузловой шаблон на меташаблоне - матрице 3х3. Исчерпывающее множество таких шаблонов можно построить следующим образом. Снабдим элементы матрицы последовательными индексами 1..9, как показано на рисунке

$$\begin{array}{ccc} {{\rm\beta }_{1} } & {{\rm\beta }_{2} } & {{\rm\beta }_{3} } \\{{\rm\beta }_{4} } & {{\rm\beta }_{5} } & {{\rm\beta }_{6} } \\{{\rm\beta }_{7} } & {{\rm\beta }_{8} } & {{\rm\beta }_{9} } \end{array}$$

и рассмотрим все возможные девятизначные двоичные числа

\({\rm\beta }_{1} {\rm\beta }_{2} {\rm\beta }_{3} {\rm\beta }_{4} {\rm\beta }_{5} {\rm\beta }_{6} {\rm\beta }_{7} {\rm\beta }_{8} {\rm\beta }_{9},\)

содержащие ровно четыре единицы и пять нулей. Получить весь набор таких чисел можно с помощью любого алгоритма генерации перестановок последовательности \(111100000\) с отбрасыванием повторных последовательностей. Полное количество перестановок равно числу сочетаний \(C_{9}^{4} =126\). Каждой такой перестановке однозначно соответствует матрица 3х3, содержащая 4 единицы и 5 нулей. Будем рассматривать единицы в матрице как узлы схемы. Тогда, например, последовательности \(010101010\)соответствует следующий шаблон:

Рис. 29

В системе Mathematica начальная последовательность строится командой

initial = Table[If[i <= 4, 1, 0], {i, 9}];                  (* начальная последовательность *)
Print[initial];  

Out: {1,1,1,1,0,0,0,0,0}

Функция Permutations возвращает список всех уникальных перестановок:

initial = Table[If[i < = 4, 1, 0], {i, 9}];                  (* начальная последовательность *)
templates = Permutations@initial;                  (* список всех возможных перестановок *)
Print[templates];  

 

Out: {{1,1,1,1,0,0,0,0,0},{1,1,1,0,1,0,0,0,0},{1,1,1,0,0,1,0,0,0},{1,1,1,0,0,0,1,0,0},{1,1,1,0,0,0,0,1,0},
Out: {1,1,1,0,0,0,0,0,1},{1,1,0,1,1,0,0,0,0},{1,1,0,1,0,1,0,0,0},{1,1,0,1,0,0,1,0,0},{1,1,0,1,0,0,0,1,0},
Out: {1,1,0,1,0,0,0,0,1},{1,1,0,0,1,1,0,0,0},{1,1,0,0,1,0,1,0,0},{1,1,0,0,1,0,0,1,0},{1,1,0,0,1,0,0,0,1},
...
Out: {0,0,0,0,1,1,1,0,1},{0,0,0,0,1,1,0,1,1},{0,0,0,0,1,0,1,1,1},{0,0,0,0,0,1,1,1,1}}

Здесь приведено только начало и окончание печати. Полная выдача содержит 126 элементов списка.

← Назад Далее →