Я предполагаю, что переменная j представляет временные шаги.Чтобы реализовать Крэнка-Николсона, вы должны представить задачу как систему линейных уравнений и решить ее.Матрица, соответствующая системе, будет иметь трехдиагональную форму, поэтому лучше использовать алгоритм Томаса , а не Гаусса-Джордана.
Линейная система будет иметь вид A x =b, где x - вектор (..., u (i-1, j + 1), u (i, j + 1), u (i + 1, j + 1), ...) и b -вектор (..., ru (i − 1, j), 2 (1 - r) u (i, j), ru (i + 1, j), ...).I-я строка матрицы A будет иметь вид (0, ..., 0, −r, 2 (1 + r), −r, 0, ..., 0).Вам нужно быть осторожным с первой и последней строками, в которых вам придется подставлять граничные условия для вашей задачи.
Хорошей ссылкой для методов конечных разностей и, в частности, Кранка-Николсона, является книга Джона Стрикверда .
Надеюсь, это поможет.