В этой части я расскажу решение задачи об остывании шара в том виде, в котором оно виделось авторам.
Итак, у нас имеется краевая задача на единичном шаре:
Коэффициент температуропроводности , а начальное условие задано своими замерами с некоторым шагом.
Благодаря симметрии, переходя в сферические координаты получим:
В принципе, здесь уже можно было бы задуматься о численном решении, но мы себе еще более упростим жизнь стандартной заменой.
Пусть теперь Тогда,аккуратно проделав все выкладки, имеем:
Т.е. в итоге получаем банальнейшую однородную двухточечную краевую задачу для одномерного уравнения теплопроводности. Замена переменных, которой мы сейчас воспользовались, общеизвестна и описывается в любом уважающем себя учебнике (надо бы и в нашем акцент усилить, хех), но ежели, вдруг, она поражает новизной, я бы посоветовал разок проделать ее полностью.
Ну теперь-то всяко уже пора численно решать!
Взяв простейший явный четырехточечный шаблон
получим простейшую разностную схему:
где Понятно, что k - счетчик шагов времени, а i - радиуса. Если кого-то эта формула вдруг напугала, то напрасно, мы просто тупо заменили вторую производную по пространственной координате на центральную разность второго порядка,а по времени у нас вообще схема Эйлера.
Собственно, пункт А уже практически сдался. Здесь есть, теоретически, одна мелкая подляна, но шансов споткнуться об нее даже у самого незамутненного решателя достаточно мало. Дело в том, что согласно теории разностных схем, описанная выше конструкция устойчива только при условии Так как шаг по радиусу нам задан принудительно в условии задачи (замеры начального условия сделаны с шагом 0,04 м), то наша схема устойчива при Эпоха перфокарт и дефицита машинного времени граничит с античностью и представить себе человека, который возьмет сегодня в такой схеме шаг по времени больше сорока секунд мне физически тяжело.
Найдя численно остается лишь перейти обратной заменой к T. Тут возникает некоторое неудобство. Если бы нас интересовала температура не в центре, мы бы поделили на r и дело с концом. Но делить на ноль, особенно численно, немного некомфортно. Было бы у нас аналитическое решение, то мы бы просто перешли к пределу, а так авторы задачи рекомендуют некий хитромудрый анализ (см. ниже). Для пункта А, тем не менее, на их мнение мы облокотимся, так как температура у нас функция хорошая-гладкая, и мы вполне можем ее проэкстраполировать Лагранжем по 3-4 соседним точкам [Spoiler (click to open)]трех хватит за глаза.
Короче говоря, чтоб вам не перенапрягаться с программированием, я тут сляпал на коленке версию на C++, можете поиграться:
Собственно, пункт А закрыт полностью. Как видите, он вполне по силам обычному старшекурснику и на всеросе такой задачке однозначно не место. Если бы не пункт Б, к которому мы, помолясь, и переходим.
В нем нам предлагается решить ту же краевую задачу но с отрицательным временем, она же ретроспективная задача теплопроводности. Это классическая некорректная задача и попытки ее решить используя разностную схему обречены на провал по причине численной неустойчивости. Основной подход "по взрослому" к таким задачам, если на пальцах - это установление некоторых дополнительных условий на поведение решения (в данном конкретном случае прокатило бы требование монотонности по пространственной координате), после чего задача особым образом регуляризуется. Заинтересовавшихся я отсылаю к классической книжке "Методы решения некорректных задач" за авторством А. Н. Тихонова и В. Я. Арсенина. Загвоздка в том, что этот матаппарат безнадежно тяжел для олимпиадной задачки, а значит надо шаманить что-нибудь заметно проще. К природе некорректности ретроспективной задачи теплопроводности мы еще вернемся в следующей части, а пока добьем таки пункт Б.
Авторами задачи, видимо предполагалось, что вдоволь наигравшись с температурами a la "-10^400", олимпиец возьмется за голову и попробует проанализировать решение уравнения в области положительного времени, там где оно хорошо обусловлено.
На промежутке времени от 0 до 10000 с выглядит наше численное решение следующим образом:
В частности, видно, что в каждый момент времени функция температуры монотонно убывает от центра к границе (см. про монотонность выше). Вдоволь повертев график в разные стороны, наш герой должен был осознать (нет, я не ожидаю, что вы это из приведенного графика увидите), что скорость остывания по времени не зависит от радиуса и решение задачи с положительным временем имеет неожиданно простой вид:
Поднапрягшись, должно получиться более-менее такое значение:
В частности, для интересующего нас центра шара получается мегапростое выражение:
С точки зрения авторов, лишь сейчас мы окончательно должны были решить пункт А. Ну нет уж, спасибо Лагранжу (хотя тем, кто дополз аж сюда это позволит слегка улучшить посчитанные в пункте А значения).
Остается последний шаг. Оснований считать, что поведение решения отличается в прошлом у нас нет (строго говоря, эти основания могут быть не видны при измерениях в нулевой момент времени, спрятавшись в погрешностях градусника, но это уже откровенная казуистика; впрочем, к этой теме мы в следующей части еще вернемся), поэтом температуру центра шара в прошлом мы считаем по уже полученной формуле и она таки даст нам правильные значения.
Решаемая таким способом, задачка вполне тянет на всерос, пункт Б откровенно непрост и одновременно интересен, позволяя поиграться с довольно нетривиальными вещами. Однако, есть один нюанс...
ЗЫ. Кто догадался, куда ветер дует, тот молодец, но просьба в комментариях воздержаться от спойлеров и не ломать интригу. Если есть желание проверить свою догадку - пишите в личку, я всем отвечу. Комментарии не закрываю.