Привет, Хабр! Некоторое время назад увлекся глубоким обучением и стал потихоньку изучать 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 станет еще проще.
Лабораторная работа №7
Читайте также:
DL – deadline – крайний срок сдачи работы – после DL работа принимается, но оценка снижается (20% за неделю, если не оговорено другое).
E) Работа в цикле
I. Самостоятельная работа
I. Самостоятельная работа
I. Самостоятельная работа
I. Самостоятельная работа
I. Самостоятельная работа
I. Самостоятельная работа
I. Самостоятельная работа
I. Самостоятельная работа
Решение уравнений в частных производных методом сеток.
Решить одномерное уравнение теплопроводности методом сеток.
Используя явную схему метода сеток, проинтегрировать одномерное уравнение теплопроводности со следующими начальными и граничными условиями: , , , , .
Наиболее простой конечно-разностной схемой, применяемой для численного решения уравнений с частными производными, является явная схема. В случае одномерного уравнения теплопроводности она записывается следующим образом:
, j = 1, . , n , ( 10 )
где , n — число узлов cетки по x. ( 11 )
1. В первой строке введем названия параметров: n , l , c , Dx, g, m, Dt, a, b, а под ними в соответствующих ячейках — числовые значения (n=10, l=1, c=1). Для Dx вводим соответствующую формулу =B2/A2 (Dx=l/n). Исходя из условий устойчивости явной схемы, выбираем m=0,5 и выражаем Dt через m из уравнения ( 11 ) (=$D$2*$D$2*0,5).Для параметров функций, задающих краевые и начальные условия, выбираем следующие значения: g=8, a=10000, b=250.
2. В столбце А, как мы уже делали в предыдущих работах, разместим вычисление значений x, соответствующих узлам сетки. В третьей строке разместим формулы, вычисляющие значения узлов по времени. В столбце Вразместим формулы, вычисляющие начальное распределение температуры по длине стержня =EXP($E$2*A4-$E$2*A4*A4), а в четвертой и четырнадцатой строках, начиная со столбца С, -формулы, вычисляющие значения температуры на концах стержня: =EXP(-$H$2*C$3*C$3+$I$2*C$3).
3. В ячейку С5вводим формулу, реализующую конечно-разностное уравнение ( 10 ) —=B5+$F$2*(B6-2*B5+B4). Распространяем эту формулу на всю область, ограниченную краевыми и начальными условиями.
4. Результирующая таблица и построенная с использованием данных из блока A3:J14 диаграмма представлены на рис. 24 и 25.
Рис. 24. Решение одномерного уравнения теплопроводности с использованием явной схемы метода сеток.
Рис. 25. Графическое изображение решения одномерного уравнения теплопроводности.
Литература
1. Фигурнов В. Э. IBM PC для пользователя. 6-е изд. — М.: ИНФРА-М, 1995.
2. Шиб Й. Windows 3.1 (русская версия ) : Пер. с нем. — М. : БИНОМ, 1995.
3. Николь Н., Альбрехт Р. Электронные таблицы Excel 5.0: Практ. пособ. / Пер. с нем. — М.: ЭКОМ.,1995.
4. Наймершайм Дж. Excel 5.0 for Windows: Учебное пособие / Пер. с англ. — М.: Междунар. отношения, 1995.
5. Осейко Н. Н. Excel 5.0 для пользователя: — К.: Торгово — издательское бюро ВНV, 1994.
6. Альтхаус М. Excel. Секреты и советы / Пер. с нем. М.: БИНОМ, 1995.
7. Основы работы с Excel 5.0 : Методические указания / ИГХТА. — Иваново, 1996.
Дата добавления: 2015-02-09 ; просмотров: 18 ; Нарушение авторских прав
Явная разностная схема решения одномерного квазилинейного уравнения теплопроводности Текст научной статьи по специальности « Математика»
Аннотация научной статьи по математике, автор научной работы — Геренштейн Аркадий Васильевич, Хайрисламов Михаил Зинатуллаевич
Предлагается численный метод решения третьей смешанной задачи для одномерного квазилинейного уравнения теплопроводности параболического типа, основанный на использовании явной разностной схемы . Зависимость коэффициентов уравнения от температуры преодолевается введением новой искомой функции первообразной теплопроводности .
Похожие темы научных работ по математике , автор научной работы — Геренштейн Аркадий Васильевич, Хайрисламов Михаил Зинатуллаевич
EXPLICIT DIFFERENCE SCHEME FOR THE SOLUTION OF ONE-DIMENSIONAL QUASI-LINEAR HEAT CONDUCTIVITY EQUATION
Numerical method for the solution of the third mixed boundary value problem for one-dimensional quasi-linear heat conductivity equation of a parabolic type based on the use of explicit difference scheme is given. Dependence of coefficients on temperature is overcome by the introduction of the new required function that is a primitive integral of conductivity.
Текст научной работы на тему «Явная разностная схема решения одномерного квазилинейного уравнения теплопроводности»
ЯВНАЯ РАЗНОСТНАЯ СХЕМА РЕШЕНИЯ ОДНОМЕРНОГО КВАЗИЛИНЕЙНОГО УРАВНЕНИЯ ТЕПЛОПРОВОДНОСТИ
Л.Б. Геренштеин, М.З. Хаирисламов
Предлагается численный метод решения третьей смешанной задачи для одномерного квазилинейного уравнения теплопроводности параболического типа, основанный на использовании явной разностной схемы. Зависимость коэффициентов уравнения от температуры преодолевается введением новой искомой функции — первообразной теплопроводности.
В настоящей работе используются идеи, изложенные в работах [1,2], в которых была предложена и обоснована явная устойчивая схема для линейного уравнения теплопроводности.
Рассмотрим следующую постановку третьей смешанной задачи для одномерного однородного квазилинейного уравнения [3]:
Шаблон разностной схемы
йОі(і) .О-і(ґ) — 2О,(і) + Оі+і(і)
і є [0; т], і = 2. N -1.
Аппроксимируем значения (0 и С;+1 (0 с точностью до членов первого порядка малости:
а 2(иі) ( Оі-і (0) + О,+1(0) + Г &О-І (0) + &О+1 (0) 1 і’
Погрешность аппроксимации оказывается равной О
, даже если производные
(0) вычисляются по формулам первого порядка точности.
Решением уравнения (4) является функция
1 г йО, . + йО,+, > в = О,-1 (0) + О,+1 (0) ‘-2
+ Аі + В, і є [0; т], — А •-
Для обозначения значений сеточной аппроксимации функции С на следующем временном слое будем использовать верхний индекс (+1), а на предыдущем — верхний индекс (-1), на сле-
дующем полуцелом временном слое — I +— I, а на предыдущем полуцелом временном слое —
— (см. рисунок). Запишем теперь разностные аппроксимации для производных ——(0) и
йО ,-1_ (0) = О-12* — О>-12
Окончательно расчетная формула приобретает вид
О(+1 = (О, — В)е п + Ат + В,
1′ «в = О-1 + О+1 — А •- п
Для расчета значений функции С на временном слое і = т, а также для вычисления значений функции в полуцелых слоях по времени можно воспользоваться формулами:
Для применения формул (5)-(7) необходимо по данному значению (7; найти температуру м; та-
кую, что Gj = | с/(д)с/д . В силу монотонности функции С(п) эту задачу можно решить методом 0
деления отрезка пополам (дихотомии).
Аппроксимация краевых условий
Для выполнения краевых условий введены фиктивные узлы с номерами 0 и N +1 (см. рисунок): сначала рассчитываются значения искомой функции во внутренних точках, после чего исходя из краевых условий задаются ее значения в фиктивных узлах.
Перепишем краевое условие на левом конце в задаче (1) с учетом замены искомой функции:
30 =Я1 (и (0, 0) ( — и (0, Г)) + а . (8)
Обозначим через функцию, обратную к функции С, производную ——————-
———, а значение (1(0. і) — полусуммой (1(0. і) = ——. То-
гда условие (8) может быть записано в виде
Обозначив z = G-11 ——— |. из (9) получим уравнение относительно z :
2• G(z)-Л, (z)( -z) = ^ + Qt.
Считаем, что функции q. Для вычисления функций в остальных точках температуры используется ку-сучно-линейная аппроксимация. Поэтому уравнение (10) на каждом промежутке [г;;г;+1],
/’ = 1, т -1 является в общем случае квадратным. Несложные выкладки позволяют записать его в виде
A = q(zi+і) — q(zi) + Mzh±)z¥zA
B = 2 ^ q( zi) zi+1 — q( zi+і) zi Лі (zi+і) -Лі (zt) в + Лі (zi )zi+1 -Лі (z,+1) z,
jWf- q( z, ) z, + q( Z +1) — q (Zi) •
Л (ZI )Zi+1 — Лі (ZI+1)Z± в — — Q
Если г* — корень уравнения (11), принадлежащий промежутку [г,; г1+] \. то искомое значение С0 в фиктивном узле с номером 0 будет равно
Рассуждения для правого конца стержня аналогичны.
Результаты численных расчетов
Для проведения расчетов взята следующая третья смешанная задача:
= Л, (u (0, t)) ( — u (0, t)) + Qt,
= Лг (u(L, t)) (r -u(L, t)) + Qr
где T = 100 c, L = 1 m, % = 22 °C, в, = 1400 °C, Qr = 1400 °C, О, = 105 Дж/(м‘с) , Qr =0 Дж/(м2с), а функции c(u), q(u), Л,(и) и Лг(и) заданы в табл. 1.
Значения входных параметров задачи, являющихся функциями температуры
Результаты численных расчетов по предложенной схеме приведены в табл. 2. В связи с тем, что точное решение задачи (12) неизвестно, проводилось сравнение решения, полученного по предложенной схеме, с решением, полученным по чисто неявной схеме, которая является безусловно сходящейся [3, 5].
Максимальная относительная погрешность решения в сравнении с решением по чисто неявной схеме
Величина шага по времени г, с
Число узлов N 0,01 0,05 0,1 0,5
40 4,7 -10-4 4,5 -10-4 1,52 -10-3 1,72 -10-3
60 1,12 10-3 1,12 10-3 1,19 10-3 2,18 -10-3
80 9,9 -10-4 1,0 10-3 1,06 10-3 2,15 -10-3
100 7,5 -10-4 7,7 -10-4 8,7 -10-4 2,25 -10-3
150 4,2 -10-4 4,7 -10-4 5,9 -10-4 2,43 -10-3
200 2,7 -10-4 3,4 -10-4 5,0 -10-4 2,67 -10-3
1. Геренштейн, А.В. Нагревание круга движущимся теплоисточником / А.В. Геренштейн,
Н. Машрабов // Обозрение прикладной и промышленной математики. — 2008. — Т. 15, №5. -С.870-871.
2. Геренштейн, А.В. Устойчивые явные схемы для уравнения теплопроводности / А.В. Геренштейн, Е.А. Геренштейн, Н. Машрабов // Вестник ЮУрГУ. Серия «Математическое моделирование и программирование». — 2008. — Вып. 1. — № 15(115). — С. 9-11.
3. Самарский, А.А. Теория разностных схем / А.А. Самарский. — М.: Наука, 1989. — 616 с.
4. Годунов, С.К. Разностные схемы / С.К. Годунов, B.C. Рябенький. — М.: Наука, 1977. -440 с.
5. Калиткин, Н.Н. Численные методы / Н.Н. Калиткин; под. ред. А.А. Самарского. — М.: Наука, 1978.- 512 с.
6. Шуп, Т. Решение инженерных задач на ЭВМ / Т. Шуп. — М.: Мир, 1982. — 235 с.
7. Геренштейн, А.В. Расчет температурных полей в цилиндре при действии поверхностных тепловых источников «Тепло 4.0» / А.В. Геренштейн, Н. Машрабов, Е.А. Геренштейн // Государственная регистрация в Отраслевом фонде алгоритмов и программ № 9776, 20.02.2008. — М.: ФГНУ ГКЦИТ, 2008.
8. Машрабов, Н. Расчет температурных полей в цилиндре при действии поверхностных теп-
ловых источников «Тепло 5.0» / Н. Машрабов, А.В. Геренштейн, Е.А. Геренштейн // Свидетельство о государственной регистрации программ для ЭВМ №2008612210, 30.04.2008,
EXPLICIT DIFFERENCE SCHEME FOR THE SOLUTION OF ONE-DIMENSIONAL QUASI-LINEAR HEAT CONDUCTIVITY EQUATION
A.V. Herreinstein1, M.Z. Khayrislamov2
Numerical method for the solution of the third mixed boundary value problem for one-dimensional quasi-linear heat conductivity equation of a parabolic type based on the use of explicit difference scheme is given. Dependence of coefficients on temperature is overcome by the introduction of the new required function that is a primitive integral of conductivity.
1. Herreinstein A.V., Mashrabov N. Nagrevanie kruga dvizhushhimsya teploistochnikom [Circle heating by moving heat source]. Obozrenieprikladnoj ipromyshlennoj matematiki. 2008. Vol. 15, no. 5. pp. 870-871. (in Russ.).
2. Herreinstein A.W., Herreinstein E.A., Mashrabov N. Ustojchivye yavnye skhemy dlya urav-neniya teploprovodnosti [Steady Obvious Schemes for Equation of Heat Conductivity]. Vestnik YuUrGU. Seriya «Matematicheskoe modelirovanie i programmirovanie». 2008. Issue 1. no. 15(115). pp. 9-11. (in Russ.).
3. Samarskij A.A. Teoriya raznostnykh skhem [Theory of difference schemes]. Moscow: Nauka, 1989. 616 p. (in Russ.).
4. Godunov S.K., Ryaben’kij B.C. Raznostnye skhemy [Difference schemes]. M.: Nauka, 1977. 440 p. (in Russ.).
5. Kalitkin N.N. Chislennye metody [Numerical methods]. M.: Nauka, 1978. 512 p. (in Russ.).
6. Shup T. Reshenie inzhenernykh zadach na EVM [The solution of engineering problems with a computer]. Moscow: Mir, 1982. 235 p. (in Russ.).
7. Herreinstein A.V., Mashrabov N., Herreinstein E.A. Raschet temperaturnykh polej v cilindre pri dejstvii poverxnostnykh teplovykh istochnikov «Teplo 4.0» [Calculation of temperature patterns in a cylinder at surface heat sources “Teplo 4.0” effect]. Gosudarstvennaya registraciya v Otraslevom fonde algoritmov iprogramm № 9776. 20.02.2008. Moscow: FGNU GKCIT, 2008. (in Russ.).
8. Mashrabov N., Herreinstein A.V., Herreinstein E.A. Raschet temperaturnykh polej v cilindre pri dejstvii poverkhnostnykh teplovykh istochnikov «Teplo 5.0» [Calculation of temperature patterns in a cylinder at surface heat sources “Teplo 5.0” effect]. Svidetel’stvo o gosudarstvennoj registracii programm dlya EVM №2008612210. 30.04.2008. ROSPATENT [Certificate of state registration of computer program No. 2008612210. 30.04.2008. ROSPATENT], (in Russ.).
Поступила в редакцию 27 декабря 2012 г.
1 Herreinstein Arcady Vasilevich is Cand. Sc. (Physics and Mathematics), Associate Professor, Applied Mathematics Department, South Ural State University.
2 Khayrislamov Mikhail Zinatullaevich is Post-Graduate student, Applied Mathematics Department, South Ural State University.