Явная и неявная схема для параболического уравнения

Курсовая работа: Решение параболических уравнений

Реферат

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

Объем курсовой работы: 33 с.

Ключевые слова: параболическое уравнение, уравнение теплопроводности, метод сеток, краевая задача, конечные разности.

1. Теоретическая часть

1.1 Метод сеток решения уравнений параболического типа

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

1.3 Оценка погрешности и сходимость метода сеток

1.4 Доказательство устойчивости разностной схемы

2. Реализация метода

2.1 Разработка программного модуля

2.2 Описание логики программного модуля

2.3 Пример работы программы

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

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

.

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

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

1. Теоретическая часть

1.1 Метод сеток решения уравнений параболического типа

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

. (1.1)

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

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

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

Рассмотрим неоднородное уравнение теплопроводности, являющееся частным случаем уравнений параболического типа:

, (1.2)

– известная функция.

Будем искать решение этого уравнения в области

Заметим, что эту полуполосу всегда можно привести к полуполосе, когда . Уравнение (1.2) будем решать с начальными условиями:

, (1.3)

– известная функция, и краевыми условиями:

(1.4)

где – известные функции переменной .

Для решения задачи область покроем сеткой .

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

.

Для производной запишем следующие формулы:

,

,

.

Можем получить три вида разностных уравнений:

, (1.5)

, (1.6)

, (1.7)

.

Разностные уравнения (1.5) аппроксимируют уравнение (1.2) с погрешностью , уравнение (1.6) – с такой же погрешностью, а уравнение (1.7) уже аппроксимирует уравнение (1.2) с погрешностью .

В разностной схеме (1.5) задействованы 4 узла. Конфигурация схемы (1.5) имеет вид:

В схеме (1.6) также участвуют 4 узла, и эта схема имеет вид:

В схеме (1.7) участвуют 5 узлов, и эта схема имеет вид:

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

Для узлов начального (нулевого) слоя значения решения выписываются с помощью начального условия (1.3):

(1.8)

Для граничных узлов, лежащих на прямых и , заменив производные по формулам численного дифференцирования, получаем из граничных условий (1.4) следующие уравнения:

(1.9)

Уравнения (1.9) аппроксимируют граничные условия (1.4) с погрешностью , так как используем односторонние формулы численного дифференцирования. Погрешность аппроксимации можно понизить, если использовать более точные односторонние (с тремя узлами) формулы численного дифференцирования.

Присоединяя к системе разностных уравнений, записанных для внутренних узлов, начальные и граничные условия (1.8) и (1.9) для разностной задачи получим полные разностные схемы трех видов. Для проведения вычислений самой простой схемой оказывается первая: достаточно на основании начального условия найти значения функции в узлах слоя , чтобы в дальнейшем последовательно определять значения решения в узлах слоев и т.д.

Третья схема также весьма проста для проведения вычислений, но при ее использовании необходимо кроме значений решения в узлах слоя найти каким-то образом значения функции и в слое . Далее вычислительный процесс легко организовывается. В случае второй схемы, которая является неявной, обязательно приходится решать систему уравнений для нахождения решения сеточной задачи.

С точки зрения точечной аппроксимации третья схема самая точная.

Введем в рассмотрение параметр . Тогда наши разностные схемы можно переписать, вводя указанный параметр. При этом самый простой их вид будет при .

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

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

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

Первая из построенных выше разностных схем в случае первой краевой задачи будет устойчивой при . Вторая схема устойчива при всех значениях величины . Третья схема неустойчива для любых , что сводит на нет все ее преимущества и делает невозможной к применению на ЭВМ.

Явные схемы просты для организации вычислительного процесса, но имеют один весьма весомый недостаток: для их устойчивости приходится накладывать сильные ограничения на сетку. Неявные схемы свободны от этого недостатка, но есть другая трудность – надо решать системы уравнений большой размерности, что на практике при нахождении решения сложных уравнений в протяженной области с высокой степенью точности может потребовать больших объемов памяти ЭВМ и времени на ожидание конечного результата. К счастью, прогресс не стоит на месте и уже сейчас мощности современных ЭВМ вполне достаточно для решения поставленных перед ними задач.

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

Рассмотрим частный случай задачи, поставленной в предыдущем разделе. В области

найти решение уравнения

(1.10)

с граничными условиями

(1.11)

и начальным условием

. (1.12)

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

Запишем разностное уравнение, аппроксимирующее дифференциальное уравнение (1.10) во всех внутренних узлах слоя . При этом будем использовать следующие формулы:

,

.

Эти формулы имеет погрешность . В результате уравнение (1.10) заменяется разностным:

(1.13)

Перепишем (1.13) в виде:

. (1.14)

Данная вычислительная схема имеет следующую конфигурацию:

(1.15)

(1.16)

Система (1.14) – (1.16) представляет собой разностную задачу, соответствующую краевой задаче (1.10) – (1.12).

За величину мы положили .

(1.14) – (1.16) есть система линейных алгебраических уравнений с 3-диагональной матрицей, поэтому ее резонно решать методом прогонки, так как он в несколько раз превосходит по скорости метод Гаусса.

. (1.17)

Здесь , – некоторые коэффициенты, подлежащие определению. Заменив в (1.17) на будем иметь:

. (1.18)

Подставив уравнение (1.18) в (1.14) получим:

. (1.19)

Сравнив (1.17) и (1.19) найдем, что:

(1.20)

Положим в (1.14) и найдем из него :

,

.

(1.21)

Заметим, что во второй формуле (1.21) величина подлежит замене на согласно первому условию (1.15).

С помощью формул (1.21) и (1.20) проводим прогонку в прямом направлении. В результате находим величины

Затем осуществляем обратный ход. При этом воспользуемся второй из формул (1.15) и формулой (1.17). Получим следующую цепочку формул:

(1.22)

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

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

1.3 Оценка погрешности и сходимость метода сеток

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

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

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

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

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

1.4 Доказательство устойчивости разностной схемы

Пусть есть решение уравнения (1.14), удовлетворяющее возмущенным начальным условиям

и граничным условиям

.

Здесь – некоторые начальные ошибки.

.

Погрешность будет удовлетворять уравнению

(1.23)

(в силу линейности уравнения (1.14)), а также следующими граничными и начальными условиями:

, (1.24)

. (1.25)

Частное решение уравнения (1.23) будем искать в виде

. (1.26)

Здесь числа и следует подобрать так, чтобы выражение (1.26) удовлетворяло уравнению (1.23) и граничным условиям (1.24).

При целом удовлетворяет уравнению (1.23) и условиям (1.24).

Подставим уравнение (1.26) в уравнение (1.24). При этом получим:

.

Выражение в квадратных скобках равно

.

Подставляя это выражение в предыдущее уравнение вместо выражения в квадратных скобках и проводя сокращения на получим:

,

откуда находим :

.

Таким образом, согласно уравнению (1.26), получаем линейно-независимые решения уравнения (1.23) в виде

Заметим, что это частное решение удовлетворяет однородным краевым условиям (1.24). Линейная комбинация этих частных решений также является решением уравнения (1.23):

, (1.27)

причем , определенное в выражении (1.27), удовлетворяет для любых однородным граничным условиям (1.24). Коэффициенты подбираются исходя из того, что должны удовлетворять начальным условиям (1.25):

.

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

,

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

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

. (1.28)

Анализируя (1.28) видим, что это неравенство выполняется для любых значений параметра . При этом при или в крайнем случае, когда

,

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

2. Реализация метода

2.1 Разработка программного модуля

Поставлена цель: разработать программный продукт для нахождения приближенного решения параболического уравнения:

(1.29)

,

(1.30)

Разобьем область прямыми

– шаг по оси ,

– шаг по оси .

Заменив в каждом узле производные конечно-разностными отношениями по неявной схеме, получим систему вида:

. (1.31)

Преобразовав ее, получим:

, (1.32)

В граничных узлах

(1.33)

В начальный момент

. (1.34)

Эта разностная схема устойчива при любом . Будем решать систему уравнений (1.32), (1.33) и (1.34) методом прогонки. Для этого ищем значения функции в узле в виде

, (1.35)

где – пока неизвестные коэффициенты.

. (1.36)

Подставив значение (1.35) в (1.32) получим:

.

. (1.37)

Из сравнения (1.35) и (1.37) видно, что

. (1.38)

. (1.39)

Для из (1.32) имеем:

.

.

Откуда, используя (1.35), получим:

, (1.40)

. (1.41)

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

1) Зная значения функции на границе (1.33), найдем значения коэффициентов по (1.40) и по (1.38) для всех .

2) Найдем по (1.41), используя для начальное условие (1.34).

3) Найдем по формулам (1.39) для .

4) Найдем значения искомой функции на слое, начиная с :

2.2 Описание логики программного модуля

Листинг программы приведен в приложении 1. Ниже будут описаны функции программного модуля и их назначение.

Функция main() является базовой. Она реализует алгоритм метода сеток, описанного в предыдущих разделах работы.

Функция f (x, y) представляет собой свободную функцию двух переменных дифференциального уравнения (1.29). В качестве аргумента в нее передаются два вещественных числа с плавающей точкой типа float. На выходе функция возвращает значение функции , вычисленное в точке .

Функции mu_1 (t) и mu_2 (t) представляют собой краевые условия. В них передается по одному аргументу (t) вещественного типа (float).

Функция phi() является ответственной за начальный условия.

В функции main() определены следующие константы:

– правая граница по для области ;

– правая граница по для области ;

– шаг сетки по оси ;

– шаг сетки по оси ;

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

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

Программа написана на языке программирования высокого уровня Borland C++ 3.1 в виде приложения MS-DOS. Обеспечивается полная совместимость программы со всеми широко известными операционными системами корпорации Майкрософт: MS-DOS 5.x, 6.xx, 7.xx, 8.xx, Windows 9x/Me/2000/NT/XP.

2.3 Пример работы программы

В качестве примера рассмотрим численное решение следующего дифференциального уравнения параболического типа:

,

Задав прямоугольную сетку с шагом оси 0.1 и по оси 0.01, получим следующее решение:

2.10 1.91 1.76 1.63 1.53 1.44 1.37 1.31 1.26 1.22 1.18

2.11 1.75 1.23 1.20 1.15 1.10 1.07 1.04 1.04 1.07 1.21

2.12 1.61 0.95 0.96 0.93 0.91 0.90 0.90 0.94 1.03 1.24

2.13 1.51 0.79 0.81 0.81 0.80 0.81 0.83 0.89 1.03 1.27

2.14 1.45 0.69 0.73 0.74 0.74 0.76 0.80 0.88 1.04 1.31

2.15 1.41 0.64 0.69 0.70 0.71 0.74 0.79 0.89 1.05 1.34

В таблице ось x расположена горизонтально, а ось t расположена вертикально и направлена вниз.

На выполнение программы на среднестатистическом персональном компьютере тратится время, равное нескольким миллисекундам, что говорит о высокой скорости алгоритма.

Подробно выходной файл output.txt, содержащий таблицу значений функции представлен в приложении 3.

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

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

1. Березин И.С., Жидков Н.П.Методы вычислений. Т.2. – М.: Физматгиз, 1962.

2. Тихонов А.Н., Самарский А.А.Уравнения математической физики. – М.: Наука, 1972.

3. Пирумов У.Г.Численные методы. – М.: Издательство МАИ, 1998.

4. Калиткин Н.Н.Численные методы. – М.: Наука, 1976.

Явная и неявная схема для параболического уравнения

Запишем аппроксимацию начального и граничных условий :

Аппроксимация граничных условий (4.7) записана на ( n + 1)-ом шаге по времени для удобства последующего изложения метода и алгоритма решения неявной разностной схемы (4.6).
В разделе » Порядок аппроксимации разностной схемы » было отмечено, что разностная схема (4.6) имеет такой же порядок аппроксимации , как и соответствующая ей явная разностная схема (4.2) , а именно:

В разделе » Доказательство абсолютной устойчивости неявной разностной схемы » было доказано, что неявная разностная схема (4.6) абсолютно устойчива, т.е. вне зависимости от выбора интервала деления на разностной сетке (или, иначе говоря, выбора расчётного шага по независимым переменным) погрешность решения неявной разностной схемы в процессе вычислений возрастать не будет. Отметим, что это, безусловно, является достоинством неявной разностной схемы (4.6) по сравнению с явной разностной схемой (4.2) , которая устойчива только при выполнения условия (3.12) . В то же время явная разностная схема имеет достаточно простой метод решения , а метод решения неявной разностной схемы (4.6), называемый методом прогонки , более сложен. Прежде чем перейти к изложению метода прогонки , необходимо вывести ряд соотношений , используемых этим методом.

Характеристика явной разностной схемы.

Рассмотрим одномерное дифференциальное уравнение параболического типа с начальным и граничными условиями :

Запишем для уравнения (4.1) явную разностную схему :

Запишем аппроксимацию начального и граничных условий :

Аппроксимация граничных условий (4.3) записана на ( n + 1)-ом шаге по времени для удобства последующего изложения метода и алгоритма решения явной разностной схемы (4.2).
В разделе » Порядок аппроксимации разностной схемы » было доказано, что разностная схема (4.2) имеет порядок аппроксимации :

В разделе » Доказательство условной устойчивости явной разностной схемы » было получено условие устойчивости данной разностной схемы, накладывающее ограничение на выбор интервала деления при создании разностной сетки (или, иначе говоря, ограничение на выбор расчётного шага по одной из независимых переменных):

Отметим, что это, безусловно, является недостатком явной разностной схемы (4.2). В то же время она имеет достаточно простой метод решения .

Явная и неявная схема для параболического уравнения

Дифференциальные уравнения в частных производных

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

Дифференциальные уравнения в частных производных требуют нахождения функции не одной, как для ОДУ, а нескольких переменных, например f(x,y) или f(x,t). Постановка задач (см. разд. 13.1) включает в себя само уравнение (или систему уравнений), содержащее производные неизвестной функции по различным переменным (частные производные), а также определенное количество краевых условий на границах расчетной области.

Несмотря на то, что Mathcad обладает довольно ограниченными возможностями по отношению к уравнениям в частных производных, в нем имеется несколько встроенных функций, количество и возможности которых увеличились в новой 11-й версии (см. разд. 13.3). Решать уравнения в частных производных можно и путем непосредственного программирования пользовательских алгоритмов (см. разд. 13.2). Автор совершенно сознательно сначала рассматривает численные методы для решения уравнений в частных производных, а уже затем описывает предназначенные для этого встроенные функции, чтобы читатель ясно осознавал, каким образом Mathcad 11 производит расчеты. «Слепое» использование встроенных функций для решения уравнений в частных производных не всегда бывает успешным, и ответственность за верный выбор их параметров часто ложится на пользователя, которому необходимо четко представлять основные принципы функционирования численных алгоритмов, примененных во встроенных функциях.

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

13.1. Постановка задач

13.1.1. Классификация уравнений в частных производных

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

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

  • граничные условия, т. е. динамику функции u(x,y,t) и / или ее производных на границах расчетной области;
  • начальное условие, т. е. функцию u(x,y, t).

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

Стационарное двумерное уравнение

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

Рис. 13.2. Решение стационарного двумерного уравнения теплопроводности (см. листинг 13.7 ниже)

Как несложно сообразить, если искомая функция не зависит от времени, то частная производная по времени в левой части уравнения равна нулю, и само уравнение можно переписать (переобозначив ради упрощения) следующим образом:

Полученное уравнение, согласно классификации предыдущего раздела, является эллиптическим. Его называют уравнением Пуассона, а для его решения в Mathcad предусмотрены две встроенные функции. Если, к тому же, источники равны нулю, то уравнение, принимающее вид du=0, называют уравнением Лапласа.

Одномерное динамическое уравнение

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

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

Одномерное уравнение намного проще двумерного, поскольку объем вычислений для реализации алгоритма его численного решения не так велик. Типичное решение одномерного уравнения диффузии тепла с коэффициентом диффузии D=2, нулевым источником ф=0 и начальным распределением температуры в форме нагретой центральной области стержня показано (в виде графика поверхности) на рис. 13.4.

Начиная с новой версии Mathcad 11, для решения одномерных параболических и гиперболических уравнений можно применять новую встроенную функцию pdesolve.

Линейное и нелинейное уравнения

Если присмотреться к уравнению диффузии тепла внимательнее, то можно условно разделить практические случаи его использования на два типа.

  • Линейная задача — если коэффициент диффузии D не зависит от температуры и и, кроме того, если источник тепла ф либо также не зависит от и, либо зависит от и линейно. В этом случае неизвестная функция u(x,t) и все ее производные входят в уравнение только в первой степени (линейно).
  • Нелинейная задача — если уравнение имеет нелинейную зависимость от u (x, t), т. е. или коэффициент диффузии зависит от и, и / или источник тепла нелинейно зависит от и.

Рис. 13.4. Решение одномерного уравнения теплопроводности (см. листинг 13.1 ниже)

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

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

Различные линейные и нелинейные варианты рассматриваемого уравнения теплопроводности описывают различные модели физических сред, которые характеризуются определенными зависимостями D(u) и ф(и). В частности, для металлов в большинстве случаев можно считать, что D=const, в то время как для плазмы имеется специфическая зависимость коэффициента диффузии от температуры.

Обратное уравнение теплопроводности

Замечательными свойствами обладает так называемое обратное уравнение диффузии тепла, которое получается путем замены в исходном (прямом) уравнении переменной t на -t. Согласно постановке задачи, обратное уравнение теплопроводности описывает реконструкцию динамики профиля температуры остывающего стержня, если известно начальное условие в виде профиля температуры в некоторый момент времени после начала остывания. Таким образом, требуется определить, как происходило остывание стержня. Мы ограничимся самым простым линейным уравнением с D=const без источников тепла:

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

Если попробовать осуществить расчет обратного уравнения диффузии тепла по тем же самым алгоритмам, что и для обычных уравнений (для этого достаточно в листинге 13.1 или 13.2 заменить значение коэффициента диффузии на отрицательное число, например D=-1), то мы получим заведомо нефизичное решение. Оно показано на рис. 13.5 в виде профилей распределения температуры для нескольких последовательных моментов времени. Как видно, решение выражается в появлении все более быстрых пространственных осцилляции профиля температуры для каждого нового момента времени. Очень существенно, что такое поведение решение является не проявлением неустойчивости численного алгоритма (см. разд. «Устойчивость» этой главы), а определяется спецификой самой задачи.

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

Рис. 13.5. Численное решение обратного уравнения теплопроводности дает совершенно нефизичную картину динамики температуры (см. листинги 13.1, 2 ниже с параметром D=-1)

13.2. Разностные схемы

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

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

Таким образом, сначала следует покрыть расчетную область (x,t) сеткой и использовать затем узлы этой сетки для разностной аппроксимации уравнения. В результате, вместо поиска непрерывных зависимостей u(x,t) достаточно будет отыскать значения функции в узлах сетки (а ее поведение в промежутках между узлами может быть получено при помощи построения какой-либо интерполяции). По этой причине дискретное представление функции и часто называют сеточной функцией.

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

13.2.1. Явная схема Эйлера

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

Построение разностной схемы

Используем для решения уравнения теплопроводности шаблон, изображенный на рис. 13.6. Для дискретизации второй производной по пространственной координате необходимо использовать три последовательных узла, в то время как для разностной записи первой производной по времени достаточно двух узлов. Записывая на основании данного шаблона дискретное представление для (i,k)-ro узла, получим разностное уравнение:

Рис. 13.6. Шаблон аппроксимации явной схемы для уравнения теплопроводности

Приведем в разностной схеме (8) подобные слагаемые, перенеся в правую часть значения сеточной функции с индексом k (как часто говорят, с предыдущего слоя по времени), а в левую — с индексом k-t-i (т. е. со следующего временного слоя). Кроме этого, введем коэффициент с , который будет характеризовать отношение шагов разностной схемы по времени и пространству Несколько забегая вперед, заметим, что значение параметра с, называемого коэффициентом Куранта, имеет большое значение для анализа устойчивости разностной схемы. С учетом этих замечаний, разностная схема (8) запишется в виде:

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

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

Важно подчеркнуть, что возможная нелинейность полученной системы алгебраических уравнений определяется зависимостями от температуры функций D(u) и ф(и), т. е. как коэффициент диффузии, так и источник тепла могут быть функциями сеточной функции uik.

Если присмотреться к разностным уравнениям (9) повнимательнее, то можно сразу предложить несложный алгоритм реализации этой разностной схемы. Действительно, каждое неизвестное значение сеточной функции со следующего временного слоя, т. е. левая часть соотношения (9) явно выражается через три ее значения с предыдущего слоя (правая часть), которые уже известны. Таким образом, в случае уравнения теплопроводности нам очень повезло — для расчета 1-го слоя по времени следует попросту подставить в (9) начальное условие (известные значения и с нулевого слоя в узлах сетки), для расчета 2-го слоя достаточно использовать вычисленный таким образом набор и с 1-го слоя и т. д. Из-за того, что разностная схема сводится к такой явной подстановке, ее и называют явной, а благодаря пересчету значений с текущего слоя через ранее вычисленные слои — схемой бегущего счета.

Сделанные замечания относительно реализации явной схемы для уравнения диффузии тепла сразу определяют алгоритм ее программирования в Mathcad. Для решения задачи нужно аккуратно ввести в листинг соответствующие формулы при помощи элементов программирования.

Решение системы разностных уравнений (9) для модели без источников тепла, т. е. ф(х, T, t)=o и постоянного коэффициента диффузии D=const приведена в листинге 13.1. В его первых трех строках заданы шаги по временной и пространственной переменным т и Д, а также коэффициент диффузии D, равный единице. В следующих двух строках заданы начальные (нагретый центр области) и граничные (постоянная температура на краях) условия, соответственно. Затем приводится возможное программное решение разностной схемы, причем функция пользователя v(t) задает вектор распределения искомой температуры в каждый момент времени (иными словами, на каждом слое), задаваемый целым числом t.

Листинг 13.1. Явная схема для линейного уравнения теплопроводности

Рис. 13.7. Решение линейного уравнения теплопроводности (листинг 13.1)

Начальное распределение температуры вдоль расчетной области и решение для двух моментов времени показано на рис. 13.7 сплошной, пунктирной и штриховой линиями, соответственно. Физически такое поведение вполне естественно — с течением времени тепло из более нагретой области перетекает в менее нагретую, а зона изначально высокой температуры остывает и размывается.

Намного более интересные решения можно получить для нелинейного уравнения теплопроводности, например с нелинейным источником тепла Ф(u)=10 3 (u-u 3 ). Заметим, что в листинге 13.1 мы предусмотрительно определили коэффициент диффузии и источник тепла в виде пользовательских функций, зависящих от аргумента и, т. е. от температуры (если бы собирались моделировать явную зависимость их от координат, то следует ввести в пользовательскую функцию в качестве аргумента переменную х, как это сделано для источника тепла ф). Поэтому нет ничего проще замены определения этих функций с констант D(u)=1 и ф(х,u)=0 на новые функции, которые станут описывать другие модели диффузии тепла. Начнем с того, что поменяем четвертую строку листинга 13.1 на ф(х,u)=10 3 (u-u 3 ), не изменяя пока постоянного значения коэффициента диффузии.

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

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

Еще более неожиданные решения возможны при нелинейности также и коэффициента диффузии. Например, если взять квадратичный коэффициент диффузии D(x,u)=u 2 (что с учетом его умножения на неизвестные функции создаст кубическую нелинейность уравнения), а также ф(х,u)=10 3 u 3 5 , то Вы сможете наблюдать совсем иной режим горения среды. В отличие от рассмотренного эффекта распространения тепловых фронтов, горение оказывается локализованным в области первичного нагрева среды, причем, температура в центре нагрева со временем возрастает до бесконечной величины (рис. 13.9). Такое решение описывает так называемый режим горения «с обострением».

Рис. 13.8. Решение уравнения теплопроводности с нелинейным источником (тепловой фронт)

Читателю предлагается поэкспериментировать с этим и другими нелинейными вариантами уравнения теплопроводности. Существенно, что такие интересные результаты удается получить лишь численно, а в Mathcad только с применением элементов программирования.

Рис. 13.9. Решение уравнения теплопроводности с нелинейным источником и коэффициентом диффузии (режим локализации горения)

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

Слегка изменим соотношение шагов по времени и пространственной координате, произведя расчеты сначала с т=0.0005 (эти результаты показаны на рис. 137 выше) и также с т=0.0010 и т=0.0015. Результат применения разностной схемы Эйлера для т=0.0010 примерно тот же, что и для меньшего значения т, приведенного на рис. 13.7. А вот следующее (казалось бы, незначительное) увеличение шага по времени приводит к катастрофе (рис. 13.10). Вместо ожидаемого решения получается совершенно неожиданные профили температуры, которые быстро осциллируют вдоль пространственной координаты, причем амплитуда и число пиков этих осцилляции быстро увеличиваются от шага к шагу. Совершенно ясно, что полученное решение не имеет ничего общего с физикой моделируемого явления, а является следствием внутренних свойств самой разностной схемы, которые до этого были для нас скрыты.

Рис. 13.10. Численное решение уравнения теплопроводности при помощи явной схемы Эйлера (см. листинг 13.1 ниже с временным шагом т=0.0015)

Характерная «разболтка» решения как раз и является проявлением неустойчивости явной схемы Эйлера для выбранного соотношения шагов по времени и пространству. В теории численных методов показывается, что явная схема Эйлера для уравнения теплопроводности устойчива при значениях коэффициента Куранта, меньших 1, и неустойчива в противоположном случае. Иными словами, существует ограничение для выбора соотношения шагов, заключающееся в том, что для расчета на более частых пространственных сетках необходимо использовать также и малые шаги по времени

Как несложно убедиться, для т=0.0005 коэффициент Куранта C=0.4, для т=0.0010 он все еще меньше единицы C=0.8, а для т=0.0015 решение уже больше единицы: C=1.2, в связи с чем схема становится неустойчивой (рис 13.10).

13.2.2. Неявная схема Эйлера

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

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

Чтобы построить неявную разностную схему для уравнения диффузии, используем шаблон, изображенный на рис. 13.11, т. е. для дискретизации пространственной производной будем брать значения сеточной функции с верхнего (неизвестного) слоя по времени. Таким образом, разностное уравнение для (i,k)-ro узла будет отличаться от уравнения для явной схемы (8) только индексами по временной координате в правой части:

Рис. 13.11. Шаблон неявной схемы для уравнения теплопроводности

Если привести подобные слагаемые, то получится система уравнений, связывающая для каждого 1-го узла три неизвестных значения сеточной функции (в самом этом узле и в соседних с ним слева и справа узлах). Множители при неизвестных значениях сеточной функции в узлах шаблона показаны на рис. 13.11 в виде подписей, подобно тому как это было сделано для явной схемы (см. рис. 13.6).

Очень важно, что если само уравнение теплопроводности линейно, то с в левой части разностного уравнения является константой, а ф в его правой части может зависеть только от первой степени и. Поэтому система уравнений (10) для всех пространственных узлов 1=1. м-1 является линейной системой, что существенно упрощает ее решение (поскольку известно, что для линейных систем с ненулевым определителем решение существует и является единственным). Напомним, что для получения замкнутой системы линейных уравнений необходимо дополнить данный набор разностных уравнений граничными условиями, т. е. известными значениями сеточной функции для 1=0 и i=M.

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

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

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

Листинг 13.2. Неявная схема для линейного уравнения теплопроводности

Приведем в данном разделе описание чрезвычайно популярного алгоритма реализации неявных разностных схем, который называется методом прогонки. Этот алгоритм имел историческое значение для становления технологий расчетов уравнений в частных производных, и мы просто не можем не упомянуть о нем в этой книге.

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

Основным вычислительным ядром программы, реализующей на Mathcad неявную разностную схему, было решение (на каждом временном слое) системы линейных алгебраических уравнений, задаваемых матрицей А. Заметим, что эта матрица, как говорят, имеет диагональное преобладание, а точнее, является трехдиагоналъной (рис. 13.13). Все ее элементы, кроме элементов на главной диагонали и двух соседних диагоналях, равны нулю. С точки зрения оптимизации быстродействия алгоритма, применение встроенной функции isolve является весьма расточительным, поскольку основной объем арифметических операций, выполняемых компьютером (а он составляет, как нетрудно убедиться величину порядка M 2 ), сводится к непроизводительному перемножению нулей.

Рис. 13.12. Решение линейного уравнения теплопроводности при помощи неявной схемы на первом слое по времени (листинг 13.2)

Для отыскания решения линейных систем алгебраических уравнений имеется чрезвычайно эффективный алгоритм, называемый прогонкой, который позволяет снизить число арифметических операций на целый порядок, т. е. до значения порядка м. Это означает, что при использовании пространственных сеток с юоо узлами выигрыш во времени вычислений составит величину порядка 10 3 ! Реализация данного алгоритма приведена в листинге 13.3, который является продолжением листинга 13.2, используя определенные в нем коэффициенты матрицы А, а также начальное условие.

Программа листинга 13.3 осуществляет пересчет одного шага по времени, т. е. заменяет содержимое столбца и с предыдущего временного слоя вычисленными значениями неизвестной функции со следующего слоя. Первые пять строк листинга 13.3 представляют так называемый обратный ход прогонки, а последние две строки — ее прямой ход. Заинтересовавшемуся читателю предлагается самому оформить представленный алгоритм прогонки в виде программы решения разностных уравнений для вычисления произвольного временного слоя по примеру листингов 13.1 и 13.2. Заметим, что описание этого знаменитого алгоритма можно отыскать практически в любом современном учебнике по численным методам.

Рис. 13.13. Матрица системы линейных разностных уравнений для неявной схемы (листинг 13.2 для М=10)

Листинг 13.3. Алгорктм прогонки (продолжена листинга 13.2)

13.2.3. О возможности решения многомерных уравнений

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

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

соответствующего многомерного дифференциального уравнения, то вполне возможно запрограммировать ее при помощи описанных нами средств. Самым главным противодействием будет существенное увеличение времени расчетов. Простая оценка необходимого количества операций показывает, что ввод зависимости уравнения от второй пространственной координаты многократно увеличивает число разностных уравнений, которые должны решаться при реализации каждого шага по времени. К примеру, если используется пространственная сетка из 100 узлов по каждой координате, то вместо 10 2 разностных уравнений на каждом шаге придется решать уже 10 4 уравнений, т. е. объем вычислений сразу же возрастает в 100 раз. Вообще говоря, пакет Mathcad не является экономичной средой вычислений, и бороться с их сильно возрастающим объемом пользователю следует еще на этапе разработки алгоритма. Хорошим примером такой борьбы может служить применение специфических алгоритмов, типа метода прогонки (см. разд. «Алгоритм прогонки» этой главы).

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

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

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

Можно посмотреть на полученную задачу с несколько другой стороны — а именно как на дифференциальное уравнение относительно неизвестной функции двух переменных ui+1(x,y). Подчеркнем, что такое уравнение получается для каждого шага по времени, т. е. для реализации всей разностной схемы требуется решить большое число таких уравнений.

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

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

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

Не будем далее останавливаться на способах решения многомерных уравнений, ограничившись этими замечаниями относительно путей оптимизации алгоритмов их решения.

13.3. Встроенные функции для решения уравнений в частных производных

Как видно из предыдущего раздела, с уравнениями в частных производных вполне можно справиться, и не прибегая к специфическим средствам Mathcad. Между тем, в пакете Mathcad 11 имеется несколько встроенных функций, при помощи которых можно автоматизировать процесс решения дифференциальных уравнений в частных производных. Рассмотрим в данном разделе основные аспекты их применения, отмечая не только инструкции по их применению, описанные разработчиками Mathcad, но также и некоторые «скрытые» возможности этих функций.

13.3.1. Параболические и гиперболические уравнения

В новой версии Mathcad 11 разработчики впервые применили встроенную функцию pdesolve для решения уравнений в частных производных, отлично осознавая значимость этих задач для современного исследователя и инженера. Эта функция применяется в рамках вычислительного блока, начинающегося ключевым словом Given и пригодна для решения различных гиперболических и параболических уравнений.

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

  • Pdesolve(u, x, xrange, t, trange, [xpts] , [tpts])) — возвращает скалярную (для единственного исходного уравнения) или векторную (для системы уравнений) функцию двух аргументов (x,t), являющуюся решением дифференциального уравнения (или системы уравнений) в частных производных. Результирующая функция получается интерполяцией сеточной функции, вычисляемой согласно разностной схеме.
    • u — явно заданный вектор имен функций (без указания имен аргументов), подлежащих вычислению. Эти функции, а также граничные условия (в форме Дирихле или Неймана) должны быть определены пользователем перед применением функции pdesolve в вычислительном блоке после ключевого слова Given. Если решается не система уравнений в частных производных, а единственное уравнение, то, соответственно, вектор и должен содержать только одно имя функции и вырождается в скаляр.
    • х —пространственная координата (имя аргумента неизвестной функции).
    • xrange — пространственный интервал, т. е. вектор значений аргумента х для граничных условий. Этот вектор должен состоять из двух действительных чисел (представляющих левую и правую границу расчетного интервала).
    • t — время (имя аргумента неизвестной функции).
    • trange — расчетная временная область: вектор значений аргумента t, который должен состоять из двух действительных чисел (представляющих левую и правую границу расчетного интервала по времени).
    • xpts — количество пространственных точек дискретизации (может не указываться явно, в таком случае будет подобрано программой автоматически).
    • tpts — количество временных слоев, т. е. интервалов дискретизации по времени (также может не указываться пользователем явно).

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

В качестве примера использования этой новой функции Mathcad 11 (листинг 13.4) используем то же самое одномерное уравнение теплопроводности (5) с граничными и начальными условиями (6) и (7).

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

Для корректного использования функции Pdesolve предварительно, после ключевого слова Given, следует записать само уравнение и граничные условия при помощи логических операторов (для их ввода в Mathcad существует специальная панель). Обратите внимание, что уравнение должно содержать имя неизвестной функции u(x,t) вместе с именами аргументов (а не так, как она записывается в пределах встроенной функции Pdesolve). Для идентификации частных производных в пределах вычислительного блока следует использовать нижние индексы, например, uxx(,t) для обозначения второй производной функции и по пространственной координате х..

Как видно из рис. 13.14, на котором изображены результаты расчетов по листингу 13.4, встроенная функция с успехом справляется с уравнением диффузии, отыскивая уже хорошо знакомое нам решение. Заметим, что использование встроенной функции Pdesolve связано с довольно громоздкими вычислениями, которые могут отнимать существенное время.

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

Приведем еще один пример применения функции Pdesolve для решения уравнений в частных производных. Рассмотрим одномерное волновое уравнение, которое описывает, например, свободные колебания струны музыкального инструмента:

Рис. 13.14. Решение уравнения диффузии тепла при помощи встроенной функции Pdesolve (листинг 13.4)

Здесь неизвестная функция u(x,t) описывает динамику смещения профиля струны относительно невозмущенного (прямолинейного) положения, а параметр с характеризует материал, из которого изготовлена струна.

Как Вы видите, уравнение (11) содержит производные второго порядка как по пространственной координате, так и по времени. Для того чтобы можно было использовать встроенную функцию pdesoive, необходимо переписать волновое уравнение в виде системы двух уравнений в частных производных, введя вторую неизвестную функцию v=ut. Программа для решения волнового уравнения приведена в листинге 13.5, а результат — на рис. 13.15.

Листинг 13.5. Решение волнового уравнения.

Рис. 13.15. Решение волнового уравнения (листинг 13.5)

13.3.2. Эллиптические уравнения

Решение эллиптических уравнений в частных производных реализовано только для единственного типа задач — двумерного уравнения Пуассона. Это уравнение содержит вторые производные функции u(х,у) по двум пространственным переменным:

Уравнение Пуассона описывает, например, распределение электростатического поля u(х,у) в двумерной области с плотностью заряда f (х,у) или (см. разд. 13.1.2) стационарное распределение температуры u(х,у) на плоскости, в которой имеются источники (или поглотители) тепла с интенсивностью f (х,у).

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

Уравнение Пуассона с нулевыми граничными условиями

Корректная постановка краевой задачи для уравнения Пуассона требует задания граничных условий. В Mathcad решение ищется на плоской квадратной области, состоящей из (м+1)х(м+1) точек. Поэтому граничные условия должны быть определены пользователем для всех четырех сторон упомянутого квадрата. Самый простой вариант — это нулевые граничные условия, т. е. постоянная температура по всему периметру расчетной области. В таком случае можно использовать встроенную функцию multigrid.

  • muitigrid(F,ncycle) — матрица решения уравнения Пуассона размера (M+1)х(M+1) на квадратной области с нулевыми граничными условиями;
    • F — матрица размера (M+1)X(M+1), задающая правую часть уравнения Пуассона;
    • ncycie — параметр численного алгоритма (количество циклов в пределах каждой итерации).

Сторона квадрата расчетной области должна включать точно M=2 n шагов, т.е. 2 n +1 узлов, где n — целое число.

Параметр численного метода ncycie в большинстве случаев достаточно взять равным 2. Листинг 13.6 содержит пример использования функции multigrid для расчета краевой задачи на области ззхзз точки и точечным источником тепла в месте, задаваемом координатами (15,20) внутри этой области.

Листинг 13.6. Решение уравнения Пуассона с нулевыми граничными условиями.

В первой строке листинга задается значение M=32, в двух следующих строках создается матрица правой части уравнения Пуассона, состоящая из всех нулевых элементов, за исключением одного, задающего расположение источника. В последней строке матрице G присваивается результат действия функции multigrid. Обратите внимание, первый ее аргумент сопровождается знаком «минус», что соответствует записи правой части уравнения Пуассона (11). Графики решения показаны на рис. 13.16 и 13.17 в виде трехмерной поверхности и линий уровня, соответственно.

Уравнение Пуассона с произвольными граничными условиями

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

  • reiax(a,b,c,d,e,F,v,rjac) — матрица решения дифференциального уравнения в частных производных на квадратной области, полученного с помощью алгоритма релаксации для метода сеток;
    • a,b,c,d,e— квадратные матрицы коэффициентов разностной схемы, аппроксимирующей дифференциальное уравнение;
    • F — квадратная матрица, задающая правую часть дифференциального уравнения;
    • v — квадратная матрица граничных условий и начального приближения к решению;
    • rjac — параметр численного алгоритма (спектральный радиус итераций Якоби).

Рис. 13.16. График поверхности решения уравнения Пуассона (листинг 13.6)

Рис. 13.17. График линий уровня решения уравнения Пуассона (листинг 13.6)

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

Все матрицы, задающие как коэффициенты разностной схемы a,b,c,d,e, граничные условия v, так и само решение F, должны иметь одинаковый размер (M+1)х(M+1), соответствующий размеру расчетной области. При этом целое число м обязательно должно быть степенью двойки: M=2″.

Решение уравнения Пуассона с тремя источниками разной интенсивности при помощью функции relax приведено в листинге 13.7.

Листинг 13.7. Решение уравнения Пуассона с помощью функции relax

Первые три строки имеют тот же смысл, что и в предыдущем листинге. Только вместо одного источника тепла взято их другое распределение — один сильный источник, один более слабый и один сток тепла. В следующих шести строках задаются коэффициенты разностной схемы. Отложим их обсуждение до последнего раздела этой главы, ограничившись утверждением, что для решения уравнения Пуассона коэффициенты должны быть взяты именно такими, как показано в листинге 13.7. В предпоследней строке задана матрица нулевых граничных условий и нулевых начальных приближений, а в последней матрице G присваивается результат действия функции relax. График полученного решения в виде линий уровня показан на рис. 13.18.

Рис. 13.18. Решение уравнения Пуассона с помощью функции relax (листинг 13.7)

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

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

Начнем с пояснения выбора этих коэффициентов (см. листинг 13.7) для уравнения Пуассона. Согласно основным идеям метода сеток (см. разд. «Разностные схемы» этой главы), для дискретизации обеих пространственных производных в уравнении (12) следует использовать по три соседних узла вдоль каждой из координат. Поэтому уравнение Пуассона (12) может быть записано в разностной форме при помощи шаблона типа «крест» (рис. 13.19). В этом случае после приведения подобных слагаемых в разностных уравнениях коэффициенты разностной схемы будут такими, как показано возле узлов шаблона на этом рисунке (аналогичные коэффициенты для явной и неявных схем решения уравнения теплопроводности см. на рис. 13.6 и 13.11, соответственно).

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

Рис. 13.19. Шаблон аппроксимации уравнения Пуассона «крест»

Решение уравнения диффузии тепла при помощи функции relax

Приведем пример применения встроенной функции relax для решения другого уравнения в частных производных (т. е. не уравнения Пуассона, для которого она изначально предназначена). Вычислим при помощи этой функции решение уже хорошо нам знакомого однородного линейного уравнения теплопроводности (см. разд. 13.1.2). Будем использовать явную разностную схему, шаблон которой изображен на рис. 13.6. Для того чтобы «приспособить» для явной схемы функцию relax, требуется только задать ее аргументы в соответствии с коэффициентами, показанными на шаблоне (см. тот же рис. 13.6). Программа, реализующая таким способом явную схему, представлена на листинге 13.8. Число Куранта в этом листинге обозначено переменной с, как и положено явной разностной схеме, она выдает устойчивое решение только для C Решение уравнения теплопроводности с помощью функции relax (листинг 13.8)

В заключение разговора об уравнениях в частных производных, нельзя не сказать несколько слов об их визуализации. Результат решения динамических уравнений (зависящих от времени t) выглядит намного эффектнее, если будет представлен в виде анимации. Для создания анимационных роликов расчетное время следует выразить через константу FRAME и затем применить команду View / Animate (Вид / Анимация) (как об этом рассказано в разд. «Создание анимации» гл. 16).


источники:

http://5fan.ru/wievjob.php?id=46738

http://el1504.narod.ru/Charter13/1.htm

Название: Решение параболических уравнений
Раздел: Рефераты по математике
Тип: курсовая работа Добавлен 21:20:53 10 октября 2009 Похожие работы
Просмотров: 900 Комментариев: 21 Оценило: 4 человек Средний балл: 4.3 Оценка: неизвестно Скачать