Численное решение уравнения теплопроводности c

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

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

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

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

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

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

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

Видео:Численное решение уравнения теплопроводностиСкачать

Численное решение уравнения теплопроводности

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

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

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

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

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

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

Численное решение уравнения теплопроводности c

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

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

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

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

Численное решение уравнения теплопроводности c

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

Численное решение уравнения теплопроводности c

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

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Заменив Численное решение уравнения теплопроводности cна нашу оценку Численное решение уравнения теплопроводности c, запишем функционал ошибки:

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

где Численное решение уравнения теплопроводности c— ошибка в узлах сетки.

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

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

Видео:Решение уравнения теплопроводности в одномерной постановке в ExcelСкачать

Решение уравнения теплопроводности в одномерной постановке в Excel

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

Кратко о tensorflow

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

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

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

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

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

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

Запуск:

Видео:Лекция №1.1 Явная и неявная схемы для уравнения теплопроводностиСкачать

Лекция №1.1 Явная и неявная схемы для уравнения теплопроводности

Результаты

Численное решение уравнения теплопроводности c
Численное решение уравнения теплопроводности c

Условие как и оригинальное, но без Численное решение уравнения теплопроводности cв уравнении:

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

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

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

Численное решение уравнения теплопроводности c
Численное решение уравнения теплопроводности c

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

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c
Численное решение уравнения теплопроводности c

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

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c
Численное решение уравнения теплопроводности c

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

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c

Численное решение уравнения теплопроводности c
Численное решение уравнения теплопроводности c

Видео:Решение уравнения теплопроводности методом конечных разностейСкачать

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

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

Функция рисования 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 станет еще проще.

Видео:Численные методы математической физики - Решение смешанной задачи для уравнения теплопроводностиСкачать

Численные методы математической физики - Решение смешанной задачи для уравнения теплопроводности

Решение уравнения теплопроводности по алгоритму Томаса

Я пытаюсь решить дифференциальное уравнение теплопроводности, используя алгоритм Томаса.

Физическая проблема: У нас есть штекер, температура на левой стороне 0 температура правой стороны 1 ,

Для алгоритма Томаса я написал функцию, которая принимает три QVector а также int значение суммы уравнений.

Моя проблема:
когда я компилирую и запускаю его, я получаю это:

Снова и снова в цикле.
Я понятия не имею, почему я получаю это.

Может быть, моя ошибка в назначении Tn результат моего Thomas-метода-функции?
или в реализации метода Томаса? или в граничных условиях?

Видео:12. Как остывает шар (решение уравнения теплопроводности)Скачать

12. Как остывает шар (решение уравнения теплопроводности)

Решение

Граничные условия должны действовать на векторы

так что T [0] должно быть 0, а T [N-1] должно быть 1. Мы можем сделать это следующим образом:

и благодаря этому T [0] всегда будет равно нулю, а T [N-1] будет равно 1;

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

и мы можем использовать эту функцию снова, это не совсем оптимально, но работает стабильно.

Тогда весь код будет выглядеть так:

и на последнем шаге мы собираемся получить абсолютно «физические» результаты:

Видео:Решение уравнения теплопроводности в одномерной постановке в Excel с применением неявной схемыСкачать

Решение уравнения теплопроводности в одномерной постановке в Excel с применением неявной схемы

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки

Вход РегистрацияDonate FAQ Правила Поиск

Правила форума

В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе «Помогите решить/разобраться (М)».

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

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

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.

Видео:Уравнение в частных производных Уравнение теплопроводностиСкачать

Уравнение в частных производных  Уравнение теплопроводности

Одномерное уравнение теплопроводности. Численное решение.

Численное решение уравнения теплопроводности c

Доброго дня суток!

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

Теперь, непосредственно само задание(ссылка на скан листа, если что-то не понятно), которое я перепишу в формате Численное решение уравнения теплопроводности c

Здесь можно увидеть в самом верху, в рамке находится уравнение теплопроводности: Численное решение уравнения теплопроводности c
далее приводится рисунок, отображающий начальное условие системы при t=0:

Численное решение уравнения теплопроводности c

Заранее оговаривается метод, с помощью которого мы будем численно решать это уравнение:
Сеточные методы на Эйлеровых схемах (явная схема).

Конечно, нужно будет определить устойчивость схемы и выяснить, при каких критических значениях Численное решение уравнения теплопроводности cэта схема будет сходиться(ответ уже найден и равен Численное решение уравнения теплопроводности c, где Численное решение уравнения теплопроводности c— шаг по времени(Численное решение уравнения теплопроводности c), Численное решение уравнения теплопроводности c— шаг по пространственной координате)

Далее приводится 3 уравнения, назначение которых мне не совсем ясно, но имеются догадки:

Численное решение уравнения теплопроводности c

Видимо, нужно еще варьировать коэффициент Численное решение уравнения теплопроводности c— коэффициент теплопроводности в зависимости от этой системы уравнений, описанной выше.

Суть всего этого задания — реализовать в виде приложения на языке Си/С++, которое показывает зависимость точности решения от шага интегрирования на примере этого самого уравнения теплопроводности , что не составляет труда, если задание понятно и чётко сформулировано. Однако мои текущие познания в области вычислительной математики довольно скудны, поэтому мне довольно проблематично связать текущие соотношения в единую систему.

Во-первых, нужно задать граничные условия для нашего уравнения теплопроводности(исходя из рисунка):
Допустим Численное решение уравнения теплопроводности cгде Численное решение уравнения теплопроводности c(здесь подразумевается, что a и b — концы стержня)

Во-вторых, нужно ввести пространственно-временную сетку, которая будет представлять из себя матрицу, причем каждая строка её[матрицы] характеризует значения уравнения при каком-либо времени Численное решение уравнения теплопроводности c. (здесь поправьте меня, если я не правильно понял смысл всех этих сеток)

В-третьих, мы переписываем уравнение теплопроводности в виде разностной схемы: Численное решение уравнения теплопроводности cоткуда мы можем найти Численное решение уравнения теплопроводности cпри условии, что нам известно начальное распределение температуры на предыдущем временном слое(например на Численное решение уравнения теплопроводности c).

В-четвертых, следует учитывать еще эти три уравнения, связанные с самим коэффициентом теплопроводности. Таким образом задача усложняется — требуется понять, каким именно образом следует организовать эту связь и как мы можем вообще их применить либо хотя бы выразить. Я предполагаю, что начальный коэффициент теплопроводности (та самая Численное решение уравнения теплопроводности c) должен задаваться в начале, а затем уже выводятся и находятся остальные значения уравнений.

Возникает некоторое количество логичных вопросов:
1. На графике нарисован «стержень» — с равномерной начальной температурой по всей его длине. Что будет означать профиль графика в последующие моменты времени — нагрев окружающей среды и остужение самого стержня?
2. Достаточно ли я описал задачу(для описания её непосредственно в дискретной форме, в ЭВМ) и нет ли где «подводных» камней, либо неопределенности касаемо условий задачи?
3. Каким образом проще и понятнее ввести дополнительные условия для коэффициента теплопроводности(имеются в виду 3 вышеприведенных уравнения)?
4. Мелкие, но необходимые для целостной картины вопросы, описанные выше, в тексте.
5. Правильность моих рассуждений.

Заранее спасибо, если вы смогли осилить этот текст. Просьба: описывайте как можно более подробнее( желательно на пальцах ) свои мысли и объяснения.
В случае успеха я постараюсь выложить понятный алгоритм действий при решении задач такого рода.

🎦 Видео

Решение задачи Коши для уравнения теплопроводности (Часть 1)Скачать

Решение задачи Коши для уравнения теплопроводности (Часть 1)

Решение задачи Коши для уравнения теплопроводности (Часть 2)Скачать

Решение задачи Коши для уравнения теплопроводности (Часть 2)

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

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

8.1 Решение уравнения теплопроводности на отрезкеСкачать

8.1 Решение уравнения теплопроводности на отрезке

15. Решение уравнения теплопроводности в кругеСкачать

15. Решение уравнения теплопроводности в круге

Решение уравнения теплопроводности методом клеточных автоматов.Скачать

Решение уравнения теплопроводности методом клеточных автоматов.

Метод конечных элементов (Часть 1) | Пример реализации для уравнения теплопроводностиСкачать

Метод конечных элементов (Часть 1) | Пример реализации для уравнения теплопроводности

Метод Ньютона (касательных) и хорд Численное решение уравнения c++Скачать

Метод Ньютона (касательных) и хорд  Численное решение уравнения c++

Стационарное решение одномерного уравнения теплопроводности.Скачать

Стационарное решение одномерного уравнения теплопроводности.

Решение задачи теплопроводности методом конечных разностейСкачать

Решение задачи теплопроводности методом конечных разностей

Метод Фурье для неоднородного уравнения теплопроводностиСкачать

Метод Фурье для неоднородного уравнения теплопроводности

Численное решение задачи Коши методом ЭйлераСкачать

Численное решение задачи Коши методом Эйлера
Поделиться или сохранить к себе: