Главная > Математика > Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

ГЛАВА 7. ГРАНИЧНЫЕ ЗАДАЧИ

7.1. Метод конечных разностей для линейных граничных задач

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

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

Условия (7.1) могут быть заданы в любой из точек интервала

в частности, на границах интервала.

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

Граничные условия зададим в виде линейной комбинации искомой функции и ее первой производной в точках

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

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

где

В точках отстоящих на расстоянии от узла пользуясь разложением (7.4), получим следующие значения функции

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

Заменяя производные в уравнении (7.2) их приближенными значениями, получим конечно-разностную схему этого уравнения

где

Аналогичным образом заменим граничные условия (7.3) и конечноразностными представлениями

Соотношения (7.6) и (7.7) представляют собой систему линейных алгебраических уравнений относительно неизвестных

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

Из первого уравнения (7.7) выразим неизвестное и подставим его в конечно-разностное уравнение (7.6) при в результате получим линейное соотношение

где

При уравнение (7.6) с учетом соотношения (7.8) приводится к виду

а для произвольного значения получим

Пограничные коэффициенты вычисляются по рекуррентным формулам

полученным путем приведения уравнения (7.6) к форме (7.10) после замены значений по формуле

Из конечно-разностной схемы для второго граничного условия (7.7) после подстановки выражений для из формул (7.10) и (7.12) найдем соотношение для определения неизвестного

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

Рассмотренный вариант метода конечных разностей имеет второй порядок, так как погрешности аппроксимации первой и второй производных по значениям функции в трех узлах пропорциональны квадрату шага Оценку погрешностей и уточнение решений можно провести по формулам Рунге методом сгущения сетки [1].

Конечно-разностный метод для нелинейных граничных задач приводит к системе нелинейных уравнений относительно значений функции в узловых точках [1].

В программах 7.1 реализован метод конечных разностей для линейной граничной задачи в соответствии с блок-схемой рис. 7.1.

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

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

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

Рис. 7.1. Блок-схема программы решения линейной граничной задачи методом конечных разностей

Метод конечных разностей в программе оформлен в виде подпрограммы, размещенной в строках 100-199. После обращения к подпрограмме вычисления коэффициентов уравнения в начальной точке по формулам (7.9) определяются нулевые прогоночные коэффициенты (строки 100-120). Для экономии памяти прогоночные коэффициенты к, размещаются временно в массиве результатов У.

Прямой ход прогонки реализован с помощью цикла по переменной I (строки 130-160). В теле цикла после обращения к подпрограмме вычисления коэффициентов уравнения по рекуррентным формулам (7.11) вычисляются прогоночных коэффициентов

Значение функции в последнем узле определяется по формуле (7.13) с помощью арифметических операторов в строках 170-180.

Обратный ход метода прогонки реализован с помощью цикла с шагом -1, в теле которого реализована формула (7.10) (строка 190).

В качестве примера уравнения вида (7.2) взято уравнение Бесселя. Вычисление коэффициентов этого уравнения осуществляется в подпрограмме, расположенной в строках 200-290.

В программе метод конечных разностей оформлен в виде подпрограммы с именем имеющей следующие формальные параметры: число шагов на интервале интегрирования дифференциального уравнения; шаг интегрирования; левая граница интервала; массив коэффициентов граничных условий; У - массив результатов; имя подпрограммы для вычисления коэффициентов уравнения

Подпрограмма имеет формальные параметры: X - текущее значение аргумента коэффициенты уравнения. Значения параметра дифференциального уравнения Бесселя передаются в подпрограмму через неименованный COMMON-блок.

Отличие операторов, содержащих обращение к элементам массивов и

заголовки циклов, в программе от соответствующих операторов программ и 7.1 обусловлено тем, что нумерация элементов массивов в Фортране начинается с единицы.

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

Для тестирования программ 7.1 можно использовать граничные условия:

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

(см. скан)

(см. скан)

(см. скан)

<< Предыдущий параграф Следующий параграф >>
Оглавление