Для моего понимания, для "A, B = create_matrix_1 (4,4)" матрицы А составляет 16 * 16; Ь 16 * 1
Не обязательно: в коде выше мы не имеем определения функций lil_matrix
и zeros
. Операторы перед циклом for
говорят только, что A
равно значению, возвращаемому функцией lil_matrix
, когда значения (n*m, n*m)
передаются ему как кортеж. С другой стороны, b
равен значению, возвращаемому функцией zeros
, когда вы передаете ему n*m
.
Затем есть секция петли. В принципе, существует 2 вложенных цикла, то есть два итератора, i и j, которые увеличиваются соответственно от 0 до n-1 и от 0 до m-1; поэтому, если предположить, п = 4 и т = 4:
1) Мы начинаем путем перебора всех значений j
, имея i=0
:
Iteration Value of index
1 0+0*4
2 0+1*4
3 0+2*4
4 0+3*4
2) Теперь, когда все j
значений, от j=0
к j=m-1
, были циклическим через, мы увеличиваем i
, и мы снова перебирать все значения j
:
5 1+0*4
6 1+1*4
7 1+2*4
8 1+3*4
3) Затем мы повторяем тот же цикл i=2
, i=3
и т.п., до i=n-1
.
Теперь мы добираемся до if
и else
блоков. Для каждого из циклов, описанных выше, если у нас есть граничное значение, то есть либо i
или j
находятся на первой или последней итерации цикла (например, либо i
или j
являются = 0
или i=n-1
или j=m-1
), то значения A
и b
- это уже не те, которые описаны в начале этого ответа, но изменены в соответствии с двумя строками после строки, начинающейся с if
. Если вместо этого значения i
или j
не являются граничными значениями, а являются внутренними узлами, значения A
и b
изменяются в соответствии с строками после инструкции else
.
Оба заявления в if
и в разделе else
изменить только некоторые из элементов A
и b
, которые являются массивами. Если посмотреть на код, A
должен быть двумерным массивом (матрицей), как вы правильно указали в своем вопросе, а b
- одномерный массив (вектор). (В Python, кстати, массивы - это фактически списки, но я буду использовать здесь общий термин array).Как в блоке if
, так и в else
мы имеем ключевое слово index
: например. b[index]
означает, что значение b
, которое мы изменяем, является N-м значением b
, где index
= N. Для A
мы имеем два значения в квадратных скобках, так как A
является матрицей. Кстати, по моему мнению, ошибка в синтаксисе, поскольку, когда вы выбираете одно значение в матрице, вы не используете запятую, например. вы не пишете A[x, y]
, а A[x][y]
(запятая может использоваться только при определении матрицы, а не при выборе одного из ее значений). Однако как A
, так и b
создаются в первую очередь с использованием функций, не включенных в этот код, поэтому мы не знаем намного больше.
Кроме lil_matrix
и zeros
, другой функции, которую нужно исследовать, потому что его определение не входит в этот код, является linspace
: используется в начале создания переменных x
и y
, которые затем используются в блок if
.