Я пытаюсь реализовать следующее неявное уравнение в python, чтобы решить для u (n + 1):
Я упрощаю, комбинируя (delta t / delta x ^ 2) в постоянную альфа, и используя термины «u» для u (n + 1) и «u0» для u (n).
u [i, j] - u0 [i , j] = альфа * (u [i + 1, j] + u [i-1, j] + u [i, j + 1] + u [i, j-1] - 4 * u [i, j ]) + h [i, j]
Затем уравнение адаптируется к форме Ax = b.
-alpha * u [i + 1, j] + (1 + 4 * альфа) u [i, j] - альфа * u [i-1, j] - альфа * u [i, j + 1] - альфа * u [i, j-1] = u0 [i, j] - h [i, j]
На этом этапе я застрял, поскольку раньше я изучал / решал неявные одномерные матрицы, где есть только u [i-1], u [i] и u [i + 1] который заполняет три диагонали для вычисления с использованием функции scipys spdiags.
Как мне сделать это с двумя измерениями вместо этого?
РЕДАКТИРОВАТЬ: для тех, кому это интересно в будущем, я закончил преобразование массива в u [i * j] и работаем с этим.