EssayAI
Блог
Блог
Математика и алгоритмы

Схема Кранка-Николсона: устойчивость и точность

11 июня 2026Время чтения: 6 минут
#схема Кранка-Николсона#численные методы#уравнение теплопроводности#разностные схемы#устойчивость

Схема Кранка-Николсона - один из базовых инструментов численного решения параболических уравнений в частных производных. Она берёт лучшее из двух миров: явная схема проста, но требует ограничения на шаг по времени; полностью неявная - безусловно устойчива, но имеет только первый порядок точности по времени. Схема Кранка-Николсона комбинирует оба подхода и даёт второй порядок как по пространству, так и по времени, оставаясь при этом безусловно устойчивой. Ниже разберём вывод, аппроксимацию и устойчивость - а калькулятор поможет сразу подобрать параметры сетки под конкретную задачу.

Уравнение теплопроводности и сеточная дискретизация

Рассмотрим одномерное уравнение теплопроводности (диффузии):

ut=a2ux2,x[0,L],  t0,\frac{\partial u}{\partial t} = a \frac{\partial^2 u}{\partial x^2}, \quad x \in [0, L],\; t \geq 0,

где a>0a > 0 - коэффициент температуропроводности (диффузии). Введём равномерную сетку с шагом по пространству h=L/Nh = L/N и шагом по времени τ\tau. Узлы сетки: xi=ihx_i = i h, tn=nτt_n = n\tau. Значение решения в узле обозначим uinu(xi,tn)u_i^n \approx u(x_i, t_n).

Центральная разностная аппроксимация второй производной по пространству в узле xix_i имеет второй порядок точности:

2ux2xiui12ui+ui+1h2+O(h2).\frac{\partial^2 u}{\partial x^2}\bigg|_{x_i} \approx \frac{u_{i-1} - 2u_i + u_{i+1}}{h^2} + O(h^2).

Ключевой вопрос - как аппроксимировать правую часть: на новом временном слое n+1n+1 (неявная схема), на старом nn (явная схема), или в полусумме?

Вывод схемы Кранка-Николсона

Схема Кранка-Николсона берёт среднее арифметическое пространственного лапласиана на двух соседних временных слоях. Производная по времени аппроксимируется первым порядком (что даёт второй порядок по времени за счёт симметрии):

uin+1uinτ=a2(ui1n2uin+ui+1nh2+ui1n+12uin+1+ui+1n+1h2).\frac{u_i^{n+1} - u_i^n}{\tau} = \frac{a}{2}\left(\frac{u_{i-1}^n - 2u_i^n + u_{i+1}^n}{h^2} + \frac{u_{i-1}^{n+1} - 2u_i^{n+1} + u_{i+1}^{n+1}}{h^2}\right).

Введём сеточное число r=aτ/h2r = a\tau / h^2 (коэффициент Куранта-Фридрихса-Леви для задачи теплопроводности). Тогда уравнение в узле ii принимает вид:

r2ui1n+1+(1+r)uin+1r2ui+1n+1=r2ui1n+(1r)uin+r2ui+1n.-\frac{r}{2} u_{i-1}^{n+1} + (1 + r) u_i^{n+1} - \frac{r}{2} u_{i+1}^{n+1} = \frac{r}{2} u_{i-1}^n + (1 - r) u_i^n + \frac{r}{2} u_{i+1}^n.

Правая часть полностью известна из предыдущего слоя. Левая часть порождает трёхдиагональную систему уравнений на N1N-1 неизвестных u1n+1,,uN1n+1u_1^{n+1}, \ldots, u_{N-1}^{n+1} (граничные условия u0n+1u_0^{n+1} и uNn+1u_N^{n+1} заданы). Такая система решается за O(N)O(N) операций методом прогонки (алгоритм Томаса).

Начальный температурный профиль (треугольный импульс) эволюционирует по схеме Кранка-Николсона: видно сглаживание решения при увеличении числа шагов по времени

Порядок аппроксимации

Локальная погрешность аппроксимации схемы Кранка-Николсона получается разложением Тейлора. По времени: производная аппроксимируется разностным отношением с погрешностью O(τ2)O(\tau^2) (симметрия полусуммы убирает члены с нечётными степенями τ\tau). По пространству: центральная разностная формула даёт O(h2)O(h^2). Итоговый порядок:

ψin=O(τ2+h2).\psi_i^n = O(\tau^2 + h^2).

Это второй порядок по обеим переменным - на порядок лучше, чем у явной схемы по времени (O(τ+h2)O(\tau + h^2)) и полностью неявной (O(τ+h2)O(\tau + h^2)). На практике это означает: при вдвое меньшем шаге погрешность падает вчетверо, а не вдвое.

Сравнение погрешностей схем теплопроводности: явная - O(tau + h^2), неявная и Кранка-Николсона - зависимость от числа r = a*tau/h^2
Сравнение погрешностей схем теплопроводности: явная - O(tau + h^2), неявная и Кранка-Николсона - зависимость от числа r = a*tau/h^2

Устойчивость по фон Нейману

Анализ устойчивости методом фон Неймана подставляет в схему пробное решение uin=Gneikξhu_i^n = G^n e^{ik\xi h}, где GG - коэффициент роста, ξ\xi - волновое число. Для схемы Кранка-Николсона:

G=12rsin2(ξh/2)1+2rsin2(ξh/2).G = \frac{1 - 2r\sin^2(\xi h / 2)}{1 + 2r\sin^2(\xi h / 2)}.

Обозначим z=2rsin2(ξh/2)0z = 2r\sin^2(\xi h / 2) \geq 0. Тогда G=(1z)/(1+z)G = (1 - z)/(1 + z). Поскольку z0z \geq 0, имеем 1G1-1 \leq G \leq 1, то есть G1|G| \leq 1 при любых r>0r > 0. Схема безусловно устойчива: шаг по времени τ\tau не ограничен условием устойчивости (в отличие от явной схемы, где требуется r1/2r \leq 1/2).

На практике это позволяет брать крупный шаг по времени и экономить вычислительные ресурсы, жертвуя лишь точностью, но не устойчивостью.

Матричная запись и метод прогонки

На каждом временном шаге система с трёхдиагональной матрицей AA имеет вид:

Aun+1=Bun+b,A\, \mathbf{u}^{n+1} = B\, \mathbf{u}^n + \mathbf{b},

где AA и BB - трёхдиагональные матрицы, b\mathbf{b} - вектор граничных условий. Матрица AA имеет единичный вид на главной диагонали (1+r)(1 + r) и r/2-r/2 на побочных. Метод прогонки (алгоритм Томаса) решает такую систему за O(N)O(N) арифметических операций, что делает каждый временной шаг схемы Кранка-Николсона очень быстрым даже при большом NN.

Алгоритм прогонки: прямой ход заполняет модифицированную диагональ и правую часть, обратный ход восстанавливает решение от последнего узла к первому

Обобщения: параметрический метод тета

Схема Кранка-Николсона является частным случаем параметрического θ\theta-метода:

uin+1uinτ=a[θΛun+1+(1θ)Λun],\frac{u_i^{n+1} - u_i^n}{\tau} = a\left[\theta\,\Lambda u^{n+1} + (1-\theta)\,\Lambda u^n\right],

где Λui=(ui12ui+ui+1)/h2\Lambda u_i = (u_{i-1} - 2u_i + u_{i+1})/h^2. При θ=0\theta = 0 - явная схема (устойчива при r1/2r \leq 1/2), при θ=1\theta = 1 - полностью неявная (безусловно устойчива, порядок O(τ+h2)O(\tau + h^2)), при θ=1/2\theta = 1/2 - схема Кранка-Николсона (безусловно устойчива, порядок O(τ2+h2)O(\tau^2 + h^2)). Таким образом, θ=1/2\theta = 1/2 даёт наилучшую точность при сохранении безусловной устойчивости.

Частые ошибки

  • Не учитывают граничные условия в правой части. При составлении системы Aun+1=bA\mathbf{u}^{n+1} = \mathbf{b} значения u0n+1u_0^{n+1} и uNn+1u_N^{n+1} переносятся из левой части в правую со своим коэффициентом r/2r/2. Забытые слагаемые дают неверное решение в пристеночных узлах.
  • Путают rr и условие устойчивости явной схемы. Для схемы Кранка-Николсона нет ограничения r1/2r \leq 1/2. Брать r1r \gg 1 при явной схеме - катастрофа; при Кранке-Николсоне - просто потеря точности по времени.
  • Забывают делить на 2 в усреднении лапласиана. Коэффициент при пространственной разности должен быть r/2r/2, а не rr.
  • Применяют схему к нелинейным уравнениям без линеаризации. Прямое применение схемы Кранка-Николсона к нелинейному уравнению даёт нелинейную систему на каждом шаге; нужна линеаризация Кранка-Николсона (Crank-Nicolson-Picard или аналоги).
  • Не проверяют сходимость при измельчении сетки. Второй порядок следует верифицировать сравнением результатов при hh и h/2h/2: ошибка должна упасть примерно в 4 раза.

FAQ

Почему схема Кранка-Николсона лучше явной при одинаковом числе операций? Явная схема требует τh2/(2a)\tau \leq h^2/(2a) для устойчивости, то есть при h=0.01h = 0.01 и a=1a = 1 нужно τ5105\tau \leq 5 \cdot 10^{-5}. Схема Кранка-Николсона с тем же hh позволяет взять τ=0.01\tau = 0.01 (в 200 раз крупнее), при этом погрешность по времени O(τ2)O(\tau^2) остаётся контролируемой.

Можно ли применять схему Кранка-Николсона к уравнению переноса (гиперболическому)? Нет, схема разработана для параболических уравнений. Для гиперболических уравнений применяют схемы Лакса-Вендроффа, Бима-Уорминга или схемы с расщеплением потока.

Как выбрать соотношение hh и τ\tau для максимальной точности? Поскольку погрешность O(τ2+h2)O(\tau^2 + h^2), оба члена должны быть одного порядка: τh\tau \sim h. Тогда при вдвое меньшем hh и τ\tau погрешность упадёт в 4 раза. Если взять τh2\tau \sim h^2, точность по пространству станет ограничивающей; если τh\tau \gg h, наоборот.

Коротко

Схема Кранка-Николсона аппроксимирует уравнение теплопроводности полусуммой пространственных лапласиан на двух временных слоях. Это даёт второй порядок точности O(τ2+h2)O(\tau^2 + h^2) и безусловную устойчивость: коэффициент роста G=(1z)/(1+z)1|G| = |(1-z)/(1+z)| \leq 1 при любом r=aτ/h2>0r = a\tau/h^2 > 0. На каждом шаге решается трёхдиагональная система методом прогонки за O(N)O(N) операций. Схема является золотым стандартом для одномерной задачи теплопроводности и основой для обобщений на многомерный случай.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также