Ян (ahiin) wrote,
Ян
ahiin

Categories:

Гладко было на бумаге

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

Итак, у нас имеется краевая задача на единичном шаре:

Коэффициент температуропроводности , а начальное условие задано своими замерами с некоторым шагом.

Благодаря симметрии, переходя в сферические координаты получим:


В принципе, здесь уже можно было бы задуматься о численном решении, но мы себе еще более упростим жизнь стандартной заменой.


Пусть теперь Тогда,аккуратно проделав все выкладки, имеем:

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

Ну теперь-то всяко уже пора численно решать!

Взяв простейший явный четырехточечный шаблон
template
получим простейшую разностную схему:


где Понятно, что k — счетчик шагов времени, а i — радиуса. Если кого-то эта формула вдруг напугала, то напрасно, мы просто тупо заменили вторую производную по пространственной координате на центральную разность второго порядка,а по времени у нас вообще схема Эйлера.

Собственно, пункт А уже практически сдался. Здесь есть, теоретически, одна мелкая подляна, но шансов споткнуться об нее даже у самого незамутненного решателя достаточно мало. Дело в том, что согласно теории разностных схем, описанная выше конструкция устойчива только при условии Так как шаг по радиусу нам задан принудительно в условии задачи (замеры начального условия сделаны с шагом 0,04 м), то наша схема устойчива при Эпоха перфокарт и дефицита машинного времени граничит с античностью и представить себе человека, который возьмет сегодня в такой схеме шаг по времени больше сорока секунд мне физически тяжело.

Найдя численно остается лишь перейти обратной заменой к T. Тут возникает некоторое неудобство. Если бы нас интересовала температура не в центре, мы бы поделили на r и дело с концом. Но делить на ноль, особенно численно, немного некомфортно. Было бы у нас аналитическое решение, то мы бы просто перешли к пределу, а так авторы задачи рекомендуют некий хитромудрый анализ (см. ниже). Для пункта А, тем не менее, на их мнение мы облокотимся, так как температура у нас функция хорошая-гладкая, и мы вполне можем ее проэкстраполировать Лагранжем по 3-4 соседним точкам [Spoiler (click to open)]трех хватит за глаза.

Короче говоря, чтоб вам не перенапрягаться с программированием, я тут сляпал на коленке версию на C++, можете поиграться:



Собственно, пункт А закрыт полностью. Как видите, он вполне по силам обычному старшекурснику и на всеросе такой задачке однозначно не место. Если бы не пункт Б, к которому мы, помолясь, и переходим.

В нем нам предлагается решить ту же краевую задачу но с отрицательным временем, она же ретроспективная задача теплопроводности. Это классическая некорректная задача и попытки ее решить используя разностную схему обречены на провал по причине численной неустойчивости. Основной подход "по взрослому" к таким задачам, если на пальцах — это установление некоторых дополнительных условий на поведение решения (в данном конкретном случае прокатило бы требование монотонности по пространственной координате), после чего задача особым образом регуляризуется. Заинтересовавшихся я отсылаю к классической книжке "Методы решения некорректных задач" за авторством А. Н. Тихонова и В. Я. Арсенина. Загвоздка в том, что этот матаппарат безнадежно тяжел для олимпиадной задачки, а значит надо шаманить что-нибудь заметно проще. К природе некорректности ретроспективной задачи теплопроводности мы еще вернемся в следующей части, а пока добьем таки пункт Б.

Авторами задачи, видимо предполагалось, что вдоволь наигравшись с температурами a la "-10^400", олимпиец возьмется за голову и попробует проанализировать решение уравнения в области положительного времени, там где оно хорошо обусловлено.

На промежутке времени от 0 до 10000 с выглядит наше численное решение следующим образом:
temperature
В частности, видно, что в каждый момент времени функция температуры монотонно убывает от центра к границе (см. про монотонность выше). Вдоволь повертев график в разные стороны, наш герой должен был осознать (нет, я не ожидаю, что вы это из приведенного графика увидите), что скорость остывания по времени не зависит от радиуса и решение задачи с положительным временем имеет неожиданно простой вид:


Поднапрягшись, должно получиться более-менее такое значение:


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

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

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

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

Продолжение следует!
Продолжение.

ЗЫ. Кто догадался, куда ветер дует, тот молодец, но просьба в комментариях воздержаться от спойлеров и не ломать интригу. Если есть желание проверить свою догадку — пишите в личку, я всем отвечу. Комментарии не закрываю.
Tags: математика, математическая физика, математическое моделирование, ответ к задачке, программирование, физика, численные методы
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 5 comments