Разностная неявная схема уравнение теплопроводности

Разностные схемы для уравнения теплопроводности

3.1. Исходная задача. Будем рассматривать следующую первую краевую задачу для уравнения теплопроводности с постоянными коэффициентами. В области <0 n i = y(xi, tn),

Иногда для упрощения записи индексы i и n будем опускать, обозначая

Чтобы аппроксимировать уравнение (1) в точке (xi, tn), введем шаблон, изображенный на рисунке и состоящий из четырех узлов (xi±1, tn), (xi, tn), (xi, tn+1). Производную ¶u/¶t заменим в точке (xi, tn) разностным отношением y n t, i, а производную ¶ 2 u/¶ 2 x – второй разностной производной y n xx, i. Правую часть f(x, t) заменим приближенно сеточной функцией j n i, в качестве j n i можно взять одно из следующих выражений:

В результате получим разносное уравнение

которое аппроксимирует исходное дифференциальное уравнение в точке (xi, tn) с первым порядком по t и вторым порядком по h при условии, что разность j n i – f(xi, tn) имеет тот же порядок малости.

Под разностной схемой понимается совокупность разностных уравнений, аппроксимирующих основное дифференциальное уравнение во всех внутренних узлах сетки и дополнительные (начальные и граничные) условия – в граничных узлах сетки. Разностную схему по аналогии с дифференциальной задачей будем называть также разностной задачей. В данном случае разностная схема имеет вид

Эта схема представляет собой систему линейных алгебраических уравнений с числом уравнений, равным числу неизвестных. Находить решение такой системы следует по слоям. Решение на нулевом слое задано начальными условиями y 0 i = u0(xi), i = 0, 1,…, N. Если решение y n i, i = 0, 1,…, N, на слое n уже найдено, то решение yi n+1 на слое n+1 находится по явной формуле

а значения доопределяются из граничных

условий. По этой причине схема (6) называется явной разностной схемой. Несколько позже мы познакомимся и с неявными схемами, в которых для нахождения yi n+1 при заданных yi n требуется решать систему уравнений.

Погрешность разностной схемы (6) определяется как разность zi n = yi n – u(xi, tn) между решением задачи (6) и решением исходной задачи (1) – (3). Подставляя в (6) yi n = zi n + u(xi, tn), получим уравнение для погрешности

где – погрешность аппроксимации разностной

схемы (6) на решении задачи (1) – (3), y i n = O( t + h 2 ). Можно оценить решение zi n уравнения (8) через правую часть yi n и доказать тем самым сходимость разностной схемы (6) с первым порядком по t и вторым – по h. Однако это исследование мы отложим, а сейчас на примере схемы (6) продемонстрируем один распространенный прием исследования разностных схем с постоянными коэффициентами, называемый методом гармоник. Хотя данный метод не является достаточно обоснованным, в частности не учитывает влияния граничных условий и правых частей, он позволяет легко найти необходимые условия устойчивости и сходимости разностных схем. Покажем, например, что явную схему (6) можно применять лишь при условии t £ 0,5h 2 , означающем, что шаг по времени надо брать достаточно малым.

т.е. однородное уравнение, соответствующее (5). Будем искать частные решения (9), имеющие вид

yj n ( j ) = q n e ijh j , (10)

где i – мнимая единица, j – любое действительное число и q – число, подлежащее определению. Подставляя (10) в уравнение (9) и сокращая на e ijh j , получим

Начальные условия соответствующие решениям вида (10) (их называют гармониками), ограничены. Если для некоторого j множитель q станет по модулю больше единицы, то решение вида (10) будет неограниченно возрастать при n®¥. В этом случае разностное уравнение (9) называется неустойчивым, поскольку нарушается непрерывная зависимость его решения от начальных условий. Если же |q| £ 1 для всех действительных j, то все решения вида (10) ограничены при любом n и разностное уравнение (9) называется устойчивым. В случае неустойчивости найти решение разностной задачи (6) по формулам (7) практически невозможно, так как погрешности (например погрешности округления), внесенные в начальный момент времени, будут неограниченно возрастать при увеличении n. Такие разностные схемы называются неустойчивыми.

Для уравнения (9) неравенство |q| £ 1 выполняется согласно (11) при всех j тогда и только тогда, когда g £ 0,5. Таким образом, использование схемы (6) возможно лишь при выполнении условия t £ 0,5h 2 . Разностные схемы, устойчивые лишь при некотором ограничении на отношение шагов по пространству и по времени, называются условно устойчивыми. Следовательно, схема (6) возможно устойчива, причем условие устойчивости имеет вид t/h 2 £ 0,5. Условно устойчивые схемы для уравнений параболического типа используются редко, так как они накладывают слишком сильное ограничение на шаг по времени. Действительно, пусть, например, h = 10 -2 . Тогда шаг t не должен превосходить 0,5 * 10 -4 , и для того чтобы вычислить решение yj n при t = 1, надо взять число шагов по времени n = t -1 ³ 2 * 10 4 , т.е. провести не менее 2 * 10 4 вычислений по формулам (7).

3.3. Неявные схемы. Чисто неявной разностной схемой для уравнения теплопроводности теплопроводности (схемой с опережением) называется разностная схема, использующая шаблон (xi, tn), (xi ± 1 , tn+1), (xi, tn+1) и имеющая вид

Здесь j n i = f(xi, tn+1) + O( t + h 2 ). Схема имеет первый порядок аппроксимации по t и второй – по h. Решение системы (12) находится, как и в случае явной схемы, по слоям, начиная с n = 1. Однако, теперь, в отличие от явной схемы, для нахождения y i n+1 по известным yi n требуется решить систему уравнений

где g = t /h 2 , Fi n = yi n + t j i n . Эту систему можно решать методом прогонки, так как условия устойчивости прогонки выполнены.

Для исследования устойчивости разностной схемы (12) будем искать частные решения уравнения

имеющие вид (10). Тогда получим

следовательно, |q| £ 1 при любых j , t , h. Таким образом, схема (12) абсолютно устойчива, т.е. устойчива при любых шагах t и h. Абсолютная устойчивость является основным условием неявных схем. Теперь уже не надо брать шаг t слишком малым, можно взять, например, t = h = 10 -2 . Величина шагов сетки t , h определяются теперь необходимой точностью расчета, а не соображениями устойчивости.

Шеститочечной симметричной схемой называется разностная схема

для которой начальные и граничные условия задаются так же, как и в схеме (12). Эта схема использует шеститочечный шаблон, изображенный на рисунке.

Обобщением трех рассмотренных схем является однопараметрическое семейство схем с весами. Зададим произвольный действительный параметр s и определим разностную схему

При s = 0 получим отсюда явную схему, при s = 1 – чисто неявную схему и при s = 0,5 – симметричную схему (14). Исследуем погрешность аппроксимации схемы (15) на решении исходной задачи (1) – (3). Представим решение задачи (15) в виде yi n = u(xi, tn) + zi n , где u(xi, tn) – точное решение дифференциальной задачи (1) – (3). Тогда для погрешности получим систему уравнений

i = 1, 2,…, N – 1, n = 0, 1,…, K – 1,

Сеточная функция yi n , входящая в правую часть уравнения (16) и равная

(17)

называется погрешностью аппроксимации схемы (15) на решении задачи (1) – (3). Получим первые члены разложения функции yi n по степеням h и t. Будем разлагать все функции, входящие в выражение для yi n , по формуле Тейлора в точке (xi, tn + 0,5t). Учитывая разложения

Отсюда, проводя разложение в точке (xi, tn+1/2) и обозначая u = u (xi, tn+1/2), будем иметь

и, перегруппировывая слагаемые, получим, что

Учитывая уравнение (1) u’’ – u = – f и следствие из него u IV – u’’ = –f’’, окончательно можно записать, что

Из формулы (18) можно сделать следующие выводы. Если

то схема (15) имеет второй порядок аппроксимации по t и четвертый – по h. Такая схема называется схемой повышенного порядка аппроксимации. Если

то схема (15) имеет второй порядок аппроксимации по t и по h. При остальных значениях s и при j i n º 0 в виде (10), то получим

и |q| £ 1 при всех j, если

Отсюда видно, в частности, что все схемы с s ³ 0,5 абсолютно устойчивы. Схема повышенного порядка аппроксимации (s = s*) также абсолютно устойчива, что проверяется непосредственно.

При s ¹ 0 разностная схема (15) является неявной схемой. Для нахождения решения yi n+1 по заданным yi n требуется решать систему уравнений

где

Система (20) решается методом прогонки. Условия устойчивости прогонки при s ¹ 0 сводятся к неравенству

|1 + 2 s g | ³ 2 | s | g

и выполнены при s ³ – 1/(4g). Последнее неравенство следует из условия устойчивости (19) разностной схемы.

3.4. Уравнения с переменными коэффициентами и линейные уравнения. Рассмотрим первую краевую задачу для уравнения теплопроводности с переменными коэффициентами

где r (x, t), k(x, t), f(x, t) – достаточно гладкие функции, удовлетворяющие условиям

Дифференциальное выражение при каждом

фиксированном t аппроксимируем в точке (xi, t) так же, как и в стационарном случае, разностным отношением

где разностный коэффициент теплопроводности a(xi, t) должен удовлетворять условиям второго порядка аппроксимации

Наиболее употребительны следующие выражения для a(xi, t):

Разностная схема с весами для задачи (21) имеет вид

Здесь в качестве t можно взять любое значение t Î [tn, tn+1], например t = tn + 0,5 t. Если в уравнении (24) t = tn + 0,5 t , s = 0,5, то схема (24) имеет второй порядок аппроксимации по t и по h. При остальных значениях s и t выполняется первый порядок аппроксимации по t и второй – по h.

При исследовании устойчивости разностных схем с переменными коэффициентами иногда применяется принцип замороженных коэффициентов, сводящий задачу к уравнению с постоянными коэффициентами. Рассмотрим явную схему, соответствующую уравнению (24) с s = 0 и f(xi, t) º 0, т.е. схему

Предположим, что коэффициенты r (xi, t), a(xi, t) – постоянные, r (xi, t) º r = const, a(xi, t) º a = const. Тогда уравнение (25) можно записать в виде

или

Из п.2 известно, что последнее уравнение устойчиво при t ’ £ 0,5h 2 , т.е. при

Принцип замороженных коэффициентов утверждает, что схема (25) устойчива, если условие (26) выполнено при всех допустимых значениях a(xi, t), r (xi, t), т.е. если при всех x, t выполнены неравенства

Если известно, что 0 0, то неравенство (27) будет выполнено при

Строгое обоснование устойчивости схемы (25) будет дано в примере 2 из главы 2.

Если параметр s ³ 0,5, то из принципа замороженных коэффициентов следует абсолютная устойчивость схемы (24).

Рассмотрим теперь первую краевую задачу для нелинейного уравнения теплопроводности

В случае нелинейных уравнений, когда заранее неизвестны пределы изменения функции k(u), избегают пользоваться явными схемами. Чисто неявная схема, линейная относительно yi n+2 , i = 1, 2,…, N – 1, имеет вид

где ai = 0,5 (k(y n i) + k(y n i-1)). Эта схема абсолютно устойчива, имеет первый порядок аппроксимации по t и второй – по h. Решение yi n+1 , i = 1, 2,…, N – 1, находится методом прогонки. Заметим, что схему (29) можно записать в виде

Часто используется нелинейная схема

Для реализации этой схемы необходимо применить тот или иной итерационный метод. Например такой:

Здесь s – номер итерации. Как видим, нелинейные коэффициенты берутся с предыдущей итерации, а в качестве начального приближения для yi n+1 выбирается yi n . Это начальное приближение тем лучше, чем меньше шаг t. Число итераций M задается из соображений точности. В задачах с гладкими коэффициентами при k(u) ³ c1 > 0 часто бывает достаточно провести две – три итерации. Значения yi (S+1) на новой итерации находятся из системы (31) методом прогонки. При M = 1 итерационный метод (31) совпадает с разностной схемой (29).

Для приближенного решения нелинейного уравнения (28) применяются также схемы предиктор – корректор второго порядка точности, аналогичные методу Рунге – Кутта для обыкновенных дифференциальных уравнений. Здесь переход со слоя n на слой n+1 осуществляется в два этапа. Приведем пример такой схемы. На первом этапе решается неявная линейная система уравнений

из которой находятся промежуточные значения yi n+1/2 , i = 0, 1,…, N. Затем на втором этапе используется симметричная шеститочечная схема для уравнения (28), в которой нелинейные коэффициенты a(y), f(y) вычисляются при y = yi n+1/2 , т.е. схема

Разностная аппроксимация начально-краевой задачи для уравнения теплопроводности. Понятие явной и неявной схемы.

    Владислав Грузинский 5 лет назад Просмотров:

1 Разностная аппроксимация начально-краевой задачи для уравнения теплопроводности. Понятие явной и неявной схемы. 1 Разностная аппроксимация уравнения теплопроводности Рассмотрим различные варианты разностной аппроксимации линейного одномерного по пространству уравнения теплопроводности: где T > 0 некоторая константа. u t = u + fx, t, x 0, l, t 0, T ], 1.1 x Введем в области D = <0 x l, 0 t T >равномерную сетку с шагом по координате и шагом по времени: x =, = 0, 1. = l; t j = j, j = 0, 1. M, M = T. Уравнение 1.1 содержит как производные по пространственной переменной x, так и по времени t, поэтому для построения его разностной аппроксимации придется использовать узлы сетки, соответствующие различным j. Все узлы сетки, отвечающие фиксированному j, называют j-м временным слоем. Свойства разностных схем для уравнения 1.1 зависят от того, на каком слое j по времени аппроксимируется выражение u x. Рассмотрим возможные варианты. Вариант 1: явная схема. Для аппроксимации оператора L = t x приведенный на рис. 1. в уравнении 1.1 используем шаблон, 1

2 Рис. 1: Шаблон явной схемы для уравнения теплопроводности. Соответствующий разностный оператор L 0 u имеет вид: L 0 ux, t + ux, t ux +, t ux, t + ux, t u =. Далее для краткости будем использовать следующие стандартные обозначения: u = ux, t; û = ux, t +. Тогда: u t = û u, L 0 u = u t u xx. Найдем погрешность аппроксимации разностным оператором L 0 исходного дифференциального оператора L в точке x, t. В случае достаточно гладкой функции ux, t при достаточно малых шагах и имеем: u t = ux, t + ux, t = ux, t t + O, 1. Следовательно, разностный оператор L 0 аппроксимирует дифференциальный оператор L с погрешностью O + в точке x, t: L 0 u xx = ux, t x + O. 1.3 ux, t u = t ux, t x > << >L[ux,t] +O +. Введем сеточную функцию ϕ = ϕx, t j, аппроксимирующую правую часть fx, t уравнения 1.1 на всех внутренних узлах x, t j сетки с погрешностью O +. В качестве ϕ можно взять, например ϕx, t j = fx, t j. Тогда разностное уравнение L 0 y = ϕ будет аппроксимировать исходное дифференциальное уравнение теплопроводности 1.1 с первым порядком погрешности по и вторым по.

3 Вариант. Чисто неявная схема. Используем для аппроксимации оператора L = t x приведенный на рис.. в уравнении 1.1 шаблон, Рис. : Шаблон неявной схемы для уравнения теплопроводности. Тогда разностная аппроксимация оператора L уравнения теплопроводности будет выглядеть следующим образом: L 1 ux, t + ux, t ux +, t + ux, t + + ux, t + u = = u t û xx. Рассмотрим погрешность аппроксимации разностным оператором L 1 исходного дифференциального оператора L в точках x, t, x, t +. Так как для достаточно гладкой функции ux, t справедливы равенства û xx = ux, t + x + O = ux, t x + O +, 1.4 то с учетом 1. получаем, что оператор L 1 аппроксимирует дифференциальный оператор L в уравнении 1.1 с погрешностью O + в точках x, t и x, t + : L 1 ux, t u = t ux, t x > << >L[ux,t] +O + ux, t + = ux, t + +O +. > t << x >L[ux,t+] Беря в качестве сеточной аппроксимации правой части уравнения 1.1, например, функцию ϕx, t j = fx, t j+1, получим разностное уравнение L 1 y = ϕ, аппроксимирующее 1.1 с погрешностью O +. 3

4 Вариант 3. Неявная схема с весами. Используем шаблон, приведенный на рис. 3, и линейную комбинацию операторов L 0 и L 1 для аппроксимации дифференциального оператора L: L σ u = σl1 u+1 σl0 u = σu t σû xx +1 σu t 1 σu xx = u t σû xx + 1 σu xx, где σ 0, 1. Рис. 3: Шаблон неявной схемы с весами для уравнения теплопроводности. Пользуясь равенствами 1., 1.3 и 1.4, получаем, что оператор L σ аппроксимирует исходный дифференциальный оператор L с погрешностью O + в точках x, t, x, t+ при любом σ. По определению погрешность ψx, t = L σ u Lu 1.5 аппроксимации выражения Lu разностным выражением L σ u может вычисляться в любой точке x, t, а не обязательно в каком-либо узле сетки, так как в соотношении 1.5 функция ux, t это произвольная достаточно гладкая функция непрерывных аргументов x и t. Поэтому рассмотрим погрешность аппроксимации оператором L σ дифференциального оператора L в центральной точке x, t шаблона, приведенного на рис. 3. Пользуясь для достаточно гладкой функции ux, t разложением в ряд Тейлора в окрестности точки x, t + 0.5, при малых и получаем: ux, t + ux, t u t = = u t + O, x,t+0.5 û xx = u x + O = u x,t+ x + 3 u x,t+0.5 t x + O +, x,t+0.5 u xx = u x + O = u x,t x x,t u t x + O +. x,t+0.5 4

5 Следовательно, при σ = 0.5 в точке x, t оператор L 0.5 в силу своей симметрии аппроксимирует L со вторым порядком погрешности аппроксимации по и : L σ u = ux, t + t ux, t + x > << >L[ux,t+ ] 3 ux, t + σ 1 + O +. > <<>x t 0 при σ=0.5 Для того, чтобы получить разностное уравнение, аппроксимирующее дифференциальное уравнение u t = u + fx, t x с погрешностью O + в точке x, t +, достаточно взять в качестве сеточной аппроксимации правой части fx, t этого уравнения функцию ϕx, t j = fx, t j Итак, разностное уравнение L 0.5 y = ϕ, где ϕx, t j = fx, t j + 0.5, аппроксимирует уравнение 1.1 со вторым порядком погрешности по и. Реализация явной, неявной и симметричной разностных схем для начально-краевой задачи для уравнения теплопроводности на отрезке. Пример.1. Постройте явную разностную схему для следующей начально-краевой задачи на отрезке x [0, 1]: u t = u + x, 0 6 задаче с однородными граничными условиями: v t = v, 0 7 Итак, первый вариант явной разностной схемы для задачи.1, обладающей погрешностью аппроксимации O +, имеет вид: y j = yj 1 yj + yj +1 + x, = 1. 1, j = 0, 1. M 1, y 0 3πx = sn, = 0, 1. 4 y j 0 = 0, y j yj 1 = t j, j = 0, 1. M. Рассмотрим алгоритм решения системы.4. При j = 0 значения y j известны из начального условия. Следовательно, при каждом фиксированном j = 0, 1. M 1 неизвестными являются. Найти их можно следующим образом: 1 при = 1. 1 из первого уравнения системы.4 находим = y j + y j +1 yj + yj 1 + x ; при = 0 и = пользуемся граничными условиями, учитывая, что 1 и 1 уже известны: 0 = 0, = yj t j+1; 3 переходим на новый слой по времени, увеличивая j на единицу и повторяем действия 1 и. На рис.4-6 приведены результаты решения системы.4 для = 50 и M = Рис. 4: Аналитическое решение задачи.1. Если мы хотим, чтобы явная схема аппроксимировала исходную задачу с погрешностью O +, то можно использовать тот же прием, который применялся ранее для ап- 7

8 Рис. 5: Численное решение задачи.1 с помощью явной схемы. Рис. 6: Погрешность численного решения задачи.1 с помощью явной схемы. проксимации граничного условия, содержащего производную, в краевой задаче для обыкновенного дифференциального уравнения на отрезке. Пусть ux, t решение задачи.1. Рассмотрим выражение: u x = ux, t ux, t ux, t = ux, t + O = x x ux, t = ux, t x + O. x t Заменяя в нем производную u t конечной разностью: ux, t t = ux, t ux, t + O, 8

9 получим ux, t ux, t = ux, t x ux, t ux, t x + O +. Переходя в полученном равенстве к пределу при x 1 и учитывая, что по условию u x = t, x=1 находим, что при t = t j+1 имеет место равенство: u j+1 uj+1 1 = t j+1 u j+1 uj 1 + O +. Следовательно, разностное уравнение yj+1 1 = t j+1 yj 1.5 аппроксимирует граничное условие Неймана при x = 1 с погрешностью O +. Таким образом, меняя в схеме.4 уравнение.3 на.5, мы получим схему, аппроксимирующую исходную задачу на ее решении с погрешностью O +. Уравнение.5 удобно переписать в виде: 1 = t j yj, j = 0, 1. M 1, и использовать при уже найденных 1, yj для завершения перехода на слой j + 1. Результаты расчетов по соответствующей явной схеме на той же сетке, что и в предыдущем случае, приведены на рис Рис. 7: Численное решение задачи с помощью явной схемы с граничным условием.5. 9

10 Рис. 8: Погрешность решения задачи с помощью явной схемы с граничным условием.5. Также для получения схемы, имеющей погрешность аппроксимации O +, можно аппроксимировать граничное условие Неймана при x = 1 с помощью трехточечной первой разностной производной: 3 4yj yj+1 Переписывая это уравнение в виде = t j+1, j = 0, 1. M 1. = 4 3 yj yj+1 + t j+1 3,.6 мы можем использовать его для завершения перехода на слой j + 1 при уже найденных 1 и yj+1. Погрешность вычислений по схеме с условием.6 приведена на рис. 9. Рис. 9: Погрешность решения задачи с помощью явной схемы с граничным условием.6. 10

11 Пример.. Постройте чисто неявную разностную схему для начально-краевой задачи.1. Сравните численное решение с аналитическим и исследуйте зависимость погрешности от шагов сетки. Решение. Используем ту же сетку, что и в предыдущем примере с той лишь разницей, что соотношение шагов и теперь может быть любым. Разностная аппроксимация уравнения в соответствии с неявной схемой имеет вид: y j = yj+1 1 yj x, = 1. 1, j = 0, 1. M 1..7 Дополним разностное уравнение.7 начальными и граничными условиями на сетке. Как и в случае явной схемы, начальное условие и граничное условие Дирихле при x = 0 аппроксимируются точно: y 0 3πx = sn, = 0, 1. ; 0 = 0, j = 1. M 1. Для аппроксимации граничного условия при x = 1 используем те же три способа, что и в случае явной схемы, разобранной в предыдущем примере. Первый вариант аппроксимации граничного условия Неймана при x = 1: yj+1 1 = t j+1, j = 1. M 1. Получающаяся при этом неявная разностная схема: y 0 3πx = sn, = 0, 1. 0 = 0, j = 0, 1. M 1, y j yj+1 1 = yj+1 1 yj x, = 1. 1, j = 0, 1. M 1, = t j+1, j = 0, 1. M 1.8 имеет погрешность аппроксимации O +. Значения сеточной функции y j на нулевом слое по времени известны из начального условия, поэтому при каждом фиксированном j = 0, 1. M 1 неизвестными являются. Система уравнений, которым они удовлетворяют, имеет вид: 0 = 0, yj = yj t j+1, + yj+1 +1 = y j + x, = 1. 1,.9 11

12 то есть является системой с трехдиагональной матрицей: 0 = κ µ 1, A 1 C + B +1 = F, = 1. 1, = κ 1 + µ,.10 где κ 1 = 0, µ 1 = 0, A = B =, C = 1 +, F = y j + x, κ = 1, µ = t j+1. Очевидно, что достаточные условия устойчивости прогонки: A > 0, B > 0, C A + B, C A + B, = 1. 1, 0 κ p 1, p = 1, для системы.9 выполнены. Решая систему.9 методом прогонки и последовательно увеличивая значения j на единицу, мы полностью решим систему.8. Результаты вычислений по неявной схеме.8 в случае = M = 50 приведены на рис Рис. 10: Численное решение задачи.1 с помощью неявной схемы.8. Рис. 11: Погрешность численного решения задачи.1 с помощью неявной схемы.8. 1

13 Второй вариант аппроксимации граничного условия Неймана при x = 1: 1 = t j yj, j = 0, 1. M В этом случае для неизвестных при каждом фиксированном j получаем трехдиагональную систему вида.10, где κ = 1 1 +, µ = κ t j yj Погрешность расчетов по соответствующей неявной схеме в случае = M = 50 приведена на рис. 1.. Рис. 1: Погрешность решения задачи.1 с помощью неявной схемы с граничным условием.11. Третий вариант аппроксимации граничного условия Неймана при x = 1: = 4 3 yj yj+1 + t j+1 3 Для того, чтобы получить для неизвестных.1 систему с трехдиагональной матрицей при каждом фиксированном j, исключим из уравнения.1 неизвестное. Для этого воспользуемся уравнением.7 при = 1: yj yj yj+1 = F 1. Следовательно, = + 1 yj+1 F 1, 13

14 и уравнение.1 принимает вид: = 1 В результате для неизвестных.10, где κ = 1, 1 + F 1 + t j+1. приходим к системе с трехдиагональной матрицей вида µ = F 1 + t j+1. Погрешность расчетов по соответствующей схеме в случае = M = 50 приведена на рис. 13. Рис. 13: Погрешность численного решения задачи.1 с помощью неявной схемы с граничным условием.1. Пример.3. Постройте симметричную разностную схему схему с весом σ = 0.5 для начально-краевой задачи.1. Сравните численное решение с аналитическим и исследуйте зависимость погрешности от шагов сетки. Решение. Аппроксимация уравнения u t = u x + x в соответствии с симметричной разностной схемой имеет вид: y j = 1 y j+1 1 yj yj 1 yj + yj +1 + x,.13 где = 1. 1, j = 0, 1. M 1. Разностное уравнение.13 аппроксимирует исходное дифференциальное уравнение теплопроводности с погрешностью O + на всех внутренних узлах сетки. 14

15 Начальное условие и условие Дирихле при x = 0 аппроксимируются так же, как и в двух рассмотренных ранее случаях. Граничное условие Неймана при x = 1 можно аппроксимировать как с первым, так и со вторым порядком по. Если в качестве аппроксимации условия при x = 1 берется разностное уравнение yj+1 1 = t j+1, j = 1. M 1, то схема будет иметь погрешность аппроксимации O +. Соответствующая система для неизвестных будет трехдиагональной: 0 = 0, A 1 C + B +1 = F, = 1. 1, = yj t j+1,.14 где A = B =, C = 1 + A, F = y j + x + yj 1 yj + yj +1. Достаточные условия устойчивости прогонки для системы.14 выполнены. Погрешность решения задачи по схеме.14 для = M = 50 приведена на рис. 14. Рис. 14: Погрешность численного решения задачи.1 с помощью симметричной схемы. Построим аппроксимацию граничного условия Неймана при x = 1 с погрешностью O +. Рассмотрим равенство: ux, t ux, t = ux, t x ux, t t x + O,.15 где ux, t решение исходной задачи.1. Положим в равенстве.15 t = t j Так как ux, t j ux, t j =

16 и получаем: 1 = 1 u j uj 1 + uj+1 ux, tj ux, t j ux, t t t=tj +0.5 u j+1 1 = ux, t x + ux, t j+1 ux, t j+1 + O = ux, t j+1 ux, t j x,t j O, u j+1 u j x + O +. Перейдем в полученном равенстве к пределу при x 1 то есть при, учитывая граничные условия задачи: 1 u j uj 1 + uj+1 uj = t j Следовательно, разностное уравнение y j yj 1 + yj+1 yj+1 1 = t j +0.5 будет аппроксимировать условие u x = t x=1 yj u j+1 uj с погрешностью O +. Соответствующая система для вид: где 0 = 0, 1 1 A 1 C + B +1 = F, = 1. 1, = κ 1 + µ, 1 κ = 1 +, µ = κ 1 + yj + O +., j = 0, 1. M 1.16 при фиксированном j имеет + t j + y j + yj Погрешность, получаемая при численном решении задачи с использованием граничного условия.16, для = M = 50 приведена на рис. 15. Такой же порядок погрешности аппроксимации можно получить, используя граничное условие = 4 3 yj yj+1 + t j Исключим из этого уравнения неизвестное, используя уравнение.13 при = 1: Так как yj yj+1 = F 1. = + 1 yj+1 F 1, 16

17 Рис. 15: Погрешность численного решения задачи.1 с помощью симметричной схемы с граничным условием.16. уравнение.18 можно переписать в виде: = F 1 + t j+1. В результате мы снова придем к системе с трехдиагональной матрицей вида.17 для неизвестных при каждом фиксированном j = 0, 1. M 1, где теперь κ = 1, µ = F 1 + t j+1. Погрешность решения по предложенной схеме при = M = 50 приведена на рис. 16. Рис. 16: Погрешность решения задачи с помощью симметричной схемы с граничным условием

18 3 Задачи для самостоятельного решения Решите аналитически и численно при помощи явной, неявной и симметричной схем начальнокраевую задачу для уравнения теплопроводности на отрезке: u t = u a + fx, t, x 0, l, t 0, T ], x ux, 0 = u 0 x, u γ 0 x + δ 0u = g 0 t, x=0 u γ 1 x + δ 1u = g 1 t, x=l где: x а a =, f = cos e t, u 0 = π x, γ 0 = 1, δ 0 = 0, γ 1 = 0, δ 1 = 1, g 0 = 1, g 1 = 0, l = π; б a = 1, f = e t x / 1, u 0 = 1 + e t x /, γ 0 = 1, δ 0 = 0, γ 1 = 1, δ 1 = 0, g 0 = 0, g 1 = e t, l = 1; в a = 0.5, f = e t, u 0 = 1 + sn 3x, γ 0 = 0, δ 0 = 1, γ 1 = 1, δ 1 = 0, g 0 = e t, g 1 = 0, l = π/; 3πx г a = 1, f = 0, u 0 = 3 x + cos, γ 0 = 1, δ 0 = 0, γ 1 = 0, δ 1 = 1, g 0 = 1, g 1 = 1, l = ; 4 д a = 0.1, f = 0, u 0 = cosπx + x + x, γ 0 = 1, δ 0 = 0, γ 1 = 1, δ 1 = 0, g 0 = 1, g 1 = 5, l =. Сравните результаты численного решения по разным схемам между собой и с аналитическим решением задачи. 18

Уравнение теплопроводности в tensorflow

Привет, Хабр! Некоторое время назад увлекся глубоким обучением и стал потихоньку изучать tensorflow. Пока копался в tensorflow вспомнил про свою курсовую по параллельному программированию, которую делал в том году на 4 курсе университета. Задание там формулировалось так:

Линейная начально-краевая задача для двумерного уравнения теплопроводности:

Хотя правильнее было бы назвать это уравнением диффузии.

Задачу тогда требовалось решить методом конечных разностей по неявной схеме, используя MPI для распараллеливания и метод сопряженных градиентов.

Я не специалист в численных методах, пока не специалист в tensorflow, но опыт у меня уже появился. И я загорелся желанием попробовать вычислять урматы на фреймворке для глубокого обучения. Метод сопряженных градиентов реализовывать второй раз уже не интересно, зато интересно посмотреть как с вычислением справится tensorflow и какие сложности при этом возникнут. Этот пост про то, что из этого вышло.

Численный алгоритм

Разностная схема:

Чтобы проще было расписывать, введем операторы:

Явная разностная схема:

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

Неявная разностная схема:

Перенесем в левую сторону все связанное с , а в правую и домножим на :

По сути мы получили операторное уравнение над сеткой:

что, если записать значения в узлах сетки как обычный вектор, является обычной системой линейных уравнений (). Значения в предыдущий момент времени константы, так как уже рассчитаны.
Для удобства представим оператор как разность двух операторов:

Заменив на нашу оценку , запишем функционал ошибки:

где — ошибка в узлах сетки.

Будем итерационно минимизировать функционал ошибки, используя градиент.

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

Реализация на tensorflow

Кратко о tensorflow

В tensorflow сначала строится граф вычислений. Ресурсы под граф выделяются внутри tf.Session. Узлы графа — это операции над данными. Ячейками для входных данных в граф служат tf.placeholder. Чтобы выполнить граф, надо у объекта сессии запустить метод run, передав в него интересующую операцию и входные данные для плейсхолдеров. Метод run вернет результат выполнения операции, а также может изменить значения внутри tf.Variable в рамках сессии.

tensorflow сам умеет строить графы операций, реализующие backpropagation градиента, при условии, что в оригинальном графе присутствуют только операции, для которых реализован градиент (пока не у всех).

Сначала код инициализации. Здесь производим все предварительные операции и считаем все, что можно посчитать заранее.

По-хорошему надо было считать значения функции на краях заданными и оптимизировать значения функции только во внутренней области, но с этим возникли проблемы. Способа сделать оптимизируемым только часть тензора не нашлось, и у операции присвоения значения срезу тензора не написан градиент (на момент написания поста). Можно было бы попробовать хитро повозиться на краях или написать свой оптимизатор. Но и просто добавление разности на краях значений функции и краевых условий в функционал ошибки хорошо работает.

Стоит отметить, что метод с адаптивным моментом показал себя наилучшим образом, пусть функционал ошибки и квадратичный.

Вычисление функции: в каждый момент времени делаем несколько оптимизационных итераций, пока не превысим maxiter или ошибка не станет меньше eps, сохраняем и переходим к следующему моменту.

Запуск:

Результаты


Условие как и оригинальное, но без в уравнении:

Что легко правится в коде:

Разницы почти нет, потому что производные имеют большие порядки, чем сама функция.


Условие с одним нагревающимся краем:


Условие с остыванием изначально нагретой области:


Условие с включением нагрева в области:


Рисование гифок

Функция рисования 3D-гифки:

В основной класс добавляем метод, возвращающий U в виде pandas.DataFrame

Функция рисования 2D-гифки:

Стоит отметить, что оригинальное условие без использования GPU считалось 4м 26с, а с использованием GPU 2м 11с. При больших значениях точек разрыв растет. Однако не все операции в полученном графе GPU-совместимы.

  • Intel Core i7 6700HQ 2600 МГц,
  • NVIDIA GeForce GTX 960M.

Посмотреть, какие операции на чем выполняются, можно с помощью следующего кода:

Это был интересный опыт. Tensorflow неплохо показал себя для этой задачи. Может быть даже такой подход получит какое-то применение — всяко приятнее писать код на питоне, чем на C/C++, а с развитием tensorflow станет еще проще.


источники:

http://docplayer.com/28166744-Raznostnaya-approksimaciya-nachalno-kraevoy-zadachi-dlya-uravneniya-teploprovodnosti-ponyatie-yavnoy-i-neyavnoy-shemy.html

http://habr.com/ru/post/321734/