Дипломная работа: Разностные схемы для уравнения переноса на неравномерных сетках

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

Якутский государственный университет имени М.К. Аммосова

Институт математики и информатики

Кафедра прикладной математики

Дипломная работа

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

“Специальность 010501.65-

Прикладная математика и информатика”

Специализация “Математическое моделирование”

Едисеева Зоя Никитична

Научный руководитель: Охлопков Н.М

к.ф-м.н. профессор

Рецензент: Николаев Владимир Егорович

к.ф.-м.н., доцент

Якутск 2009


Содержание

Введение

Глава I. Основные понятия разностных схем

1.1 Сеточная область

1.2 Сеточная функция. Пространство сеточных функций. Нормы сеточных функций

1.3 Аппроксимация дифференциальных операторов

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

1.5 Корректность разностной схемы

1.6 Аппроксимация и сходимость

1.7 Неравномерная сетка

1.7.1 Построение сеточной области

1.7.2 Формирование сетки

Глава II. Одномерное уравнение переноса с переменными коэффициентами

2.1 Постановка задачи

2.2 ”Явные” схемы

2.3 Неявные схемы

2.3.1 Центрально-разностная схема

2.3.2 Трехточечная схема с весом

Глава III. Одномерное уравнение переноса с постоянными коэффициентами

3.1 Постановка задачи

3.2 Схема бегущего счета

3.3 Неявные схемы

3.3.1 Центрально-разностная схема

3.3.2 Трехточечная схема весом

3.3.3 Схема “прямоугольник”

3.3.4 Схема со сглаживанием

3.3.5 Схема прямоугольник со сглаживанием

3.3.6 “Шахматная ” схема

Заключение

Использованная литература

Приложение 1

Приложение 2

Приложение 3

Приложение 4

Приложение 5

Приложение 6


Введение

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

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

Разностная схема должна удовлетворять следующим основным требованиям:

1.Определенный порядок аппроксимации, устойчивость экономичность, консервативность, однородность.

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

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

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

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

Цель дипломной работы – выбор наиболее устойчивой разностной схемы.

Для достижения цели поставлены следующие задачи:

- рассмотреть разностные методы решения для уравнений переноса с переменными и постоянными коэффициентами на неравномерных сетках;

- выполнить численный эксперимент рассматриваемых схем.


Глава I. Основные понятия теории разностных схем

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

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

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

1.1 Сеточная область

Для построения разностной схемы необходимо построить сетку Gh-конечное множество точек, принадлежащих G, плотность распределения которых характеризуется параметрами h-шагом сетки. Пусть область изменения аргумента x есть отрезок G={0≤x≤1}. Разобьем этот отрезок точками xi=i∙h, i=0,n на n равных частей длины h=1/n каждая. Множество точек xi=i∙h, называется равномерной сеткой на отрезке 0≤x≤1 и обозначим ={xi=i∙h, i=0,n} , а число h-расстояние между точками (узлами) сетки называется шагом сетки. Разбиение отрезка 0≤x≤1 точками xi, i=0,n можно производить произвольным образом - 0<x1<…<xn-1<1. Тогда получаем сетку ={xi, i=0,n, x0=0, xn=1} c шагами hi=xi-xi-1, которое зависит от номера узла сетки. Если hi≠hi+1 хотя бы в одной точке, то сетка называется неравномерной и такую сетку обозначают ŵ. Точки x0 и xn назовем граничными узлами и обозначим их гh. Остальные узлы назовем внутренними и обозначим их wh. Узлы соседние с граничащими назовем приграничными. Тогда имеем

=wh гh .

 

1.2 Сеточная функция. Пространство сеточных функций. Нормы сеточных функций

 

Функция y=y(xi) дискретного аргумента xi называется сеточной функцией, определенной на сетке . Сеточные функции можно рассматривать как функции целочисленного аргумента, являющегося номером узла сетки, т. е. y=y(xi)=y(i). Далее мы будем писать y(xi)=yi.

Сеточная область wh зависит от параметра h. При различных значениях параметра h имеем различные сеточные области. Поэтому и сеточные функции yh(x) зависят от параметра h.

Функции u(x) непрерывного аргумента являются элементами функционального пространства H. Множество сеточных функций yh(x) образует пространство Hh. Таким образом, в методе сеток пространство H, заменяется пространством Hh сеточных функций yh(x).

Так как рассматривается множество сеток {wh}, то мы получаем множество {Hh} пространств сеточных функций, определенных на {wh}.

Пусть u(x) - решение исходной непрерывной задачи

Lu(x)=f(x), (1)

; yh- решение разностной задачи, . Для теории приближенных вычислений представляет большой интерес оценка близости u(x) и yh(x), но u(x) и yh(x) являются элементами из различных пространств. Пространство H отображается на пространство Hh. Каждой функции  ставится в соответствие сеточная функция yh(x), x wh, так что yh=Phu Hh, где Ph- линейный оператор из H в Hh. Это соответствие можно осуществить различными способами, т. е. зависит от выбора оператора Ph. Теперь, имея сеточную функцию uh, образуем разность yh-uh, которая является вектором пространства Hh. Близость yh и uh характеризуется числом yh-uhHh , где Hh – норма на Hh.

Соответствие функций u(x) и uh можно установить различными способами, например,

uh=u(x), x  wh.

В дальнейшем мы будем пользоваться этим способом соответствия.

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

Hh=H, (2)


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

Условие (2) называют условием согласования в пространствах Hh и Н.

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

wh={xi=i∙h} на отрезке 0≤x≤1.

1. Норма Hh=

удовлетворяет условию (2), если в качестве Н рассматривать пространство непрерывных функций с нормой

H=, H=[a,b],

а сеточную функцию определять в виде (2), т.е.

yh(x)=uh(x), x  wh

2. Норма Hh=

удовлетворяют условию (2), если за Н принять пространство непрерывных функций с нормой

H=u2(x)dx, H=C[a,b] ,

а сеточную функцию определять в виде

yh=uh(x), x  wh.


1.3 Аппроксимация дифференциальных операторов

 

Пусть имеем дифференциальный оператор

Этот оператор можно аппроксимировать несколькими способами. Например,

 - правая разностная производная; (3)

 - левая разностная производная; (4)

 - центральная разностная производная; (5)

Можно взять их линейную комбинацию

, (6) где у- вещественный параметр.

При у=1 из (6) получаем аппроксимацию (3); при у=0 – аппроксимацию (4), а при у=0.5- аппроксимацию (7).

Чтобы показать погрешность аппроксимации, разложим по формуле Тейлора

предполагая, что функция v(x) достаточно гладкая в некоторой окрестности (x-h0,x+h0) точки х, h<h0,h0- фиксированное число.

Подставляя это разложение в (3),(4),(5), получим:

Отсюда видно, что

Пусть L- дифференциальный оператор, Lh- разностный оператор, заданный на сетке wh. Говорят, что разностный оператор Lh:

1)         аппроксимируем дифференциальный оператор L в узле xi  wh, если

, где v(x)- достаточно гладкая функция, стремится к нулю при h→0;

2)         аппроксимируем L с порядком n >0 в узле xi  wh если , т.е.

, M=const>0.

В качестве следующего примера рассмотрим оператор .

Для аппроксимации этого оператора используем трехточечный шаблон (x-h, x, x+h).

Замечая , имеем

Отсюда


Пользуясь разложением (7), покажем, что порядок аппроксимации равен двум, т.е.

так как

 

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

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

Пусть имеем некоторую дифференциальную задачу, записанную в виде

Lu=f(x), xG (8)

с дополнительным условием

lu=ц(x), xГ. (9)

Введем в области  Г сетку  

и поставим в соответствие задаче (8), (9) разностную задачу

Lhyh=fh, xwh, (10)

Lhyhh, xгh. (11)

Функция yh(x), fh(x), цh(x) зависят от шага сетки. Меняя h, получаем множества функций {yh}, {fh}, {цh}, зависящих от параметра h. Таким образом, мы рассматриваем не одну разностную задачу, а семейство задач, зависящее от параметра h. Это семейство задач называется разностной схемой.

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

Пример 1. Имеем задачу Коши

, 0<x≤1, л = const

.

Используем аппроксимации:

;

.

После этого имеем разностную схему:

Расчетный алгоритм имеем вид

Пример 2. Рассмотрим задачу Коши.


  

Воспользуемся следующими аппроксимациями:

После этого имеем разностную схему

1.5 Корректность разностной схемы

Пусть имеем дифференциальную задачу

, (12)

 (13) и на сетке  аппроксимируем ее разностной схемой

 (14)

 (15)


Задача (12), (13) поставлена корректно, если выполнены условия:

1)         задача однозначно разрешима при любых правых частях

2)         решение задачи непрерывно зависит от правых частей т.е.

H ≤ M1H +M2H.

Аналогично определяется понятие корректности разностной схемы (14), (15). Говорят, что разностная схема (14), (15) корректна, если при всех достаточно малых │h│< h0:

1) решение yh разностной схемы существует и единственно для всех входных данных f hHh, цh  Hh;

2) существуют постоянные M1>0, M2>0 не зависящие от h и такие, что при любых f h Hh, цh  Hh справедлива оценка

Hh ≤ M1Hh +M2Hh. (16)

Свойство 2), означающее непрерывную зависимость, равномерную относительно h, решения разностной схемы от правых частей, называется устойчивостью разностной схемы. Рассмотрим примеры.

Пример 1. Пусть имеем задачу:

 (17)

Точным решением задачи (17) является функция


Если ввести новую функцию  то получим задачу

 (18)

Решением задачи (18) является функция

Задачу (18) аппроксимируем на равномерной сетке  = {xi=ih, i=0,n} схемой:

 (19)

Перепишем схему (19) в виде

Отсюда имеем

Рассмотрим фиксированную точку  и выберем последовательность сеток  таких, чтобы  = i0 ∙ h, т.е.  является узлом сетки  при h→0.

Вычислим значение у в этой точке y() = yi0=si0y0. Так как │s│< 1 при б>0

и любых h, то│ y()│≤│si0│y0│< │y(0)│ при любом h. Из этого

неравенства видно, что решение разностной схемы (19) непрерывно зависит от вход€ных данных. В таких случаях говорят, что разностная схема устойчива по входным данным (по начальным условиям и по правой части).

Пример 2. Имеем уравнение

,   (20)

Точным решением задачи (20) является функция

Отсюда следует неравенство

, (21)

при л>0.

Для устойчивости вычислительных алгоритмов решения задачи (20) должно быть выполнено условие вида (21) т.е.

 (22)

Задачу (20) аппроксимируем явной схемой Эйлера

 

  (23)

.

Выражая решение схемы (23) через начальное условие, имеем


 

Неравенство (22) будет выполнено, если

т.е.  .

Таким образом, явная схема Эйлера условно устойчива.

Пример 3. Для численного решения задачи (20) используем неявную схему Эйлера

  (24)

Отсюда

 т.е.

 при

Схема (24) абсолютно устойчива, ибо выполнено условие (22) при любом h.

Пример 4. Задачу (20) аппроксимируем схемой с весом

  (25)

Отсюда имеем


Условие (22) будет выполнено, если

 т.е

Отсюда получаем

Схема абсолютно устойчива при

 и

т.е. схема (25) условно устойчива при

1.6 Аппроксимация и сходимость

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

Рассмотрим погрешность решения разностной схемы (14), (15), которая аппроксимирует на сетке дифференциальную задачу (12), (13).

Введем функцию погрешности решения


zh = yh –uh,

где yh – решение схемы (14), (15), uh- решение задачи (12), (13) на сетке ͞wh. Подставив yh = zh +uh в линейную задачу (14), (15), получим для zh задачу того же вида, что и (14), (15):

 (26)

 (27)

 (28)

Функции (28) называются погрешностью аппроксимации задачи (12), (13), схемой (14), (15) на решение задачи (12), (13).

Будем говорить, что решение разностной схемы (14), (15) сходится к решению задачи (12), (13), если

Hh = Hh → 0 при h→0.

Разностная схема сходится со скоростью О(hn) или имеет n-ый порядок точности, если при достаточно малом h ≤ h0 выполняется неравенство

 Hh =Hh M ∙ hn,

где M > 0, не зависит от h, n > 0.

Говорят, что разностная схема имеет n-ый порядок аппроксимации, если

шh = O(hn),

т.е  ≤ M∙hn.


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

Доказательство. Если схема (14), (15) корректна, то не трудно получить оценку погрешности решения через погрешность аппроксимации (28).

Задача (26), (27) аналогична задаче (14), (15), поэтому для нее пользуясь априорной оценкой вида (16), получим оценку

Hh = Hh M1Hh + M2Hh. (29)

Таким образом, если схема (14), (15) корректна и аппроксимирует задачу (12), (13), то она сходится при h→0. Норма погрешности ‖zhHh→0 при h→0, если Hh→0 и  Hh→0 при h→0.

Из оценки (28) видно, что порядок точности схемы (14), (15) определяется порядком аппроксимации, и чтобы схема сходилась со скоростью O(hn), n>0 достаточно, чтобы она имела аппроксимацию того же порядка, т.е.

Hh = О(hn), Hh = O(hn).

Рассмотрим примеры.

Пример 1. Рассмотрим явную схему Эйлера

  


которая аппроксимирует дифференциальную задачу (20). Покажем порядок погрешности аппроксимации и сходимость.

Рассмотрим функцию погрешности решения

Для zi получаем схему:

  (30)

Разложим ui+1 по формуле Тейлора в точке xi, имеем

 (31)

Подставляя (31) в шi, получим

т.е. имеем порядок аппроксимации. Из (30) имеем

При   имеем  Выражая zi через z0, получим:

Отсюда видно, что при h→0, │zi│→0. Для точности схемы имеем

│zi+1│≤  h∙│шs│≤ h ∙ i ∙ O(h) = xi∙O(h) ≤ M ∙ h,


т.е. схема имеет первый порядок точности.

Пример 2. Рассмотрим неявную схему Эйлера

,

которая аппроксимирует дифференциальную задачу (20). Для погрешности решения zi = yi –ui получаем разностную схему:

 

Подставляя разложение (31) в шi , получим

Отсюда имеем

т.е. первый порядок аппроксимации. Для сходимости рассмотрим решение задачи для zi:

Множитель  при л > 0. Выражая zi через z0, имеем


 

Отсюда │zi│≤ M∙h, т.е. схема имеет первый порядок точности. Таким же образом можно показать, что схема с весом

 

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

1.7 Неравномерная сетка

1.7.1 Построение сеточной области

Пусть исходная область ={}. Ее аппроксимируем сеточной областью:

 ,  - средний шаг}- сетка по х;

  , - средний шаг}- сетка по t;

Тогда искомая сетка есть  - неравномерная сетка.

На этой сетке аппроксимируем дифференциальные операторы:

 - правая разностная производная по х; (1)

-сеточная функция;

 - левая разностная производная по х; (2)

- центральная разностная производная по х; (3)

- аппроксимация с весом ; (4)

 Аппроксимация первой производной по t имеет вид:

- правая разностная производная по t; (5)

 - левая разностная производная по t; (6)

- центральная разностная производная по t; (7)

Аппроксимация второй производной по х и по t имеет вид:

; (8)

; (9)

Покажем погрешность аппроксимации первой производной по х.

Для этого введем функцию погрешности решения  Найдем  и подставим в (1).

Имеем = ,

Функцию  разложим по формуле Тейлора

,

и подставим в  Имеем


,

отсюда получаем аппроксимацию первого порядка .

 

1.7.2 Формирование сетки

I вариант

 

 , (1)

 , q>1-возраст.геометр.прогрессия

 , q<1-убыв.геометр.прогрессия

1) , (2)

 , q>1. (3)

2) , (4)

, q<1. (5)

и - задаем сами.

Пример Пусть  

q>1 и по формуле (3) n


Пример Пусть

вычисляем по формуле (5)

Действительно

II вариант

Можно использовать другой подход:

 

, , ,

,

, .

a) , q<1 - убывающая геом. прогрессия n и q-задаем сами.

в) , q>1 – возрастающая геом. прогрессия.

Таким образом, можно рассматривать следующие модули сеток:

1)    Равномерная сетка .

2)    Квазиравномерная сетка (…).

3)    Неравномерная по возрастающей геометрической прогрессии .

4)    Неравномерная по убывающей геометрической прогрессии .

5)    Среднеарифметический метод 3) и 4) .

 


Глава II. Одномерное уравнение переноса с переменными коэффициентами

 

2.1 Постановка задачи

Рассмотрим уравнение вида:

   (1)

удовлетворяющий начальным условиям

 (2)

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

 (3)

Входные данные:

1)

 l=1, T=1

точное решение:


2)

точное решение:

3)

точное решение:

4)

точное решение:

Для решения задачи (1) – (3) используем различные разностные схемы, вернее, явную и неявную.

2.2 “Явные ” схемы

Явные схемы для нашей задачи используются тогда, когда p(x,t) > 0, (p0>0, pN>0) или p(x,t)<0, (p0<0, pN<0). На практике часто используют схему бегущего счета. В зависимости от знака функции p(x,t) используют правую или левую разностные схемы.


Итак, рассмотрим схему бегущего счета в обоих случаях.

1) p(x,t)>0, (p0>0, pN>0)

Разностная схема (правая) имеет вид

 

; (1′)

; (2′)

 ; (3′)

из (1′) ,

где   .

2) p(x,t)<0, (p0<0, pN<0)

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

 

; (1″)

; (2″)

 ; (3″)

из (1′) ,

где   .


Таблица 1 Численное решение уравнения переноса с переменными коэффициентами схема бегущего счета “явная ” схема (правая разностная схема)

-------------kogda p0>0, pN>0-------------50sloy
N priblijennoe tochnoe  pogreshnosti
0 0.10039200 0.10004559 0.00034641
1 0.10731313 0.10694264 0.00037049
2 0.11471141 0.11431517 0.00039623
3 0.12261970 0.12219596 0.00042375
4 0.13107319 0.13062004 0.00045315
5 0.14010945 0.13962487 0.00048458
6 0.14976865 0.14925048 0.00051817
7 0.16009374 0.15953968 0.00055407
8 0.17113063 0.17053820 0.00059243
9 0.18292837 0.18229495 0.00063342
10 0.19553941 0.19486220 0.00067721
11 0.20901984 0.20829583 0.00072401
12 0.22342957 0.22265555 0.00077402
13 0.23883258 0.23800523 0.00082736
14 0.25528740 0.25441310 0.00087431
15 0.27195211 0.27195211 0.00000000

Таблица 2. Численное решение уравнения переноса с переменными коэффициентами схема бегущего счета “явная ” схема (левая разностная схема)

-------------kogda p0<0, pN<0-------------- 50sloy
N priblijennoe tochnoe  pogreshnosti
0 0.14715178 0.14715178 0.00000000
1 0.14242453 0.14232757 0.00009697
2 0.13785337 0.13766151 0.00019185
3 0.13343317 0.13314843 0.00028474
4 0.12915902 0.12878331 0.00037571
5 0.12502613 0.12456129 0.00046484
6 0.12102988 0.12047768 0.00055219
7 0.11716580 0.11652796 0.00063785
8 0.11342959 0.11270772 0.00072187
9 0.10981705 0.10901272 0.00080434
10 0.10632415 0.10543886 0.00088530
11 0.10294698 0.10198216 0.00096483
12 0.09968176 0.09863879 0.00104298
13 0.09652483 0.09540502 0.00111981
14 0.09347266 0.09227727 0.00119539
15 0.09052183 0.08925206 0.00126976

Текст программы смотри в приложении 1

 

2.3 Неявные схемы

В отличие от явной схемы неявные схемы используются для задачи (1) – (3) во всех случаях 1) p0>0, pN>0; 2) p0<0, pN<0; 3) p0>0, pN<0; 4) p0<0, pN>0.

Рассмотрим 2 различные разностные схемы:

1)    Центрально- разностная схема.

2)    Трехточечная схема с весом.

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

  (4)

Коэффициенты Ai, Bi, Ci должны удовлетворять условиям:

 (5)

Коэффициенты B0 , C0 , F0, AN ,CN ,FN находятся из граничных условий. В данной задаче в зависимости от знака функции p(x,t) ставятся граничные условия и тем самым находятся наши коэффициенты. Рассмотрим все 4 случая:

1) p0>0, pN>0, u(l,t)=м2(t), (3′)

из уравнения (3′)  AN ,CN ,FN .

B0 , C0 , F0 находятся из дополнительного условия, которая ставится на левом конце.

2) p0<0, pN<0, u(0,t)=м1(t), (3″) из уравнения (3″)  B0 , C0 , F0.

AN ,CN ,FN находятся из дополнительного условия, которая ставится на правом конце.

3) p0<0, pN>0, u(0,t)=м1(t), u(l,t)=м2(t), (3″′)

из уравненя (3″′)  B0 , C0 , F0

 AN ,CN ,FN

 

4) p0>0, pN<0, нет граничных условий.

Дополнительное условие ставится на левом и на правом концах. Находим B0, C0 , F0 , AN ,CN ,FN .

Алгоритм правой прогонки

 , .

,

.

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

2.3.1 Центрально разностная схема

Разностная схема имеет вид (задачи (1)-(3)):


, .

 

1) P0>0, PN>0

 , , .

 

2) P0<0, PN<0

    .


3) P0<0, PN>0

 B0=0, C0=1, F0= ,

→ AN=0, CN=1, .

 

4) P0>0, PN<0

 ,

  

Таблица 3. Численное решение уравнения переноса с переменными коэффициентами центральная разностная схема метод прогонки

-------------kogda p0>0, pN>0------------ 50sloy
N priblijennoe  tochnoe  pogreshnosti
0 0.18772094 0.18765555 0.00006539
1 0.18147920 0.18150347 0.00002427
2 0.17566576 0.17555308 0.00011268
3 0.16982701 0.16979776 0.00002924
4 0.16440069 0.16423113 0.00016956
5 0.15890974 0.15884699 0.00006275
6 0.15384782 0.15363937 0.00020845
7 0.14868453 0.14860247 0.00008206
8 0.14391438 0.14373070 0.00018368
9 0.13904086 0.13901865 0.00002221
10 0.13462315 0.13446108 0.00016208
11 0.13004378 0.13005292 0.00000914
12 0.12593278 0.12578928 0.00014351
13 0.12169429 0.12166541 0.00002888
14 0.11786577 0.11767675 0.00018903
15 0.11381884 0.11381884 0.00000000

Таблица 4. Численное решение уравнения переноса с переменными коэффициентами центральная разностная схема метод прогонки

-------------kogda p0<0, pN<0-------------- 50sloy
N priblijennoe  tochnoe  pogreshnosti
0 0.14715178 0.14715178 0.00000000
1 0.14240331 0.14232757 0.00007574
2 0.13769681 0.13766151 0.00003530
3 0.13325746 0.13314843 0.00010903
4 0.12885248 0.12878331 0.00006918
5 0.12470227 0.12456129 0.00014098
6 0.12057943 0.12047768 0.00010174
7 0.11669966 0.11652796 0.00017170
8 0.11284082 0.11270772 0.00013310
9 0.10921401 0.10901272 0.00020130
10 0.10560221 0.10543886 0.00016335
11 0.10221201 0.10198216 0.00022985
12 0.09883137 0.09863879 0.00019259
13 0.09566248 0.09540502 0.00025746
14 0.09249816 0.09227727 0.00022089
15 0.08953626 0.08925206 0.00028420

Таблица 5. Численное решение уравнения переноса с переменными коэффициентами центральная разностная схема метод прогонки

-------------kogda p0<0, pN>0--------------50sloy
N priblijennoe  tochnoe  pogreshnosti
0 0.03678794 0.03678794 0.00000000
1 0.03565917 0.03558189 0.00007728
2 0.03439784 0.03441538 0.00001754
3 0.03335557 0.03328711 0.00006846
4 0.03216179 0.03219583 0.00003404
5 0.03119895 0.03114032 0.00005863
6 0.03007027 0.03011942 0.00004915
7 0.02917987 0.02913199 0.00004788
8 0.02811435 0.02817693 0.00006258
9 0.02728957 0.02725318 0.00003639
10 0.02628567 0.02635971 0.00007405
11 0.02551993 0.02549554 0.00002439
12 0.02457633 0.02465970 0.00008337
13 0.02386341 0.02385126 0.00001215
14 0.02297890 0.02306932 0.00009042
15 0.02231302 0.02231302 0.00000000

Таблица 6. Численное решение уравнения переноса с переменными коэффициентами центральная разностная схема метод прогонки

-------------kogda p0>0, pN<0--------------50sloy
N priblijennoe  tochnoe  pogreshnosti
0 0.00379722 0.00375311 0.00004410
1 0.00328998 0.00328462 0.00000536
2 0.00291427 0.00287461 0.00003966
3 0.00250378 0.00251579 0.00001200
4 0.00225176 0.00220175 0.00005001
5 0.00190450 0.00192691 0.00002241
6 0.00172045 0.00168638 0.00003407
7 0.00145947 0.00147588 0.00001640
8 0.00129005 0.00129165 0.00000159
9 0.00109247 0.00113042 0.00003795
10 0.00092289 0.00098931 0.00006642
11 0.00074314 0.00086582 0.00012268
12 0.00056520 0.00075774 0.00019254
13 0.00038370 0.00066315 0.00027946
14 0.00020306 0.00058037 0.00037731
15 0.00002275 0.00050793 0.00048518

Текст программы смотри в приложении 2

 

2.3.2 Трехточечная схема с весом

Разностная схема для нашей задачи ((1)-(3)) имеет вид:

 (0)


Уравнение (0) приведем к виду

 

 (1)

Из уравнения (1) находим коэффициенты    

, , ,

.

 

1) P0>0, PN>0 yNj+1 = м2j+1 AN =0, CN=1, FN = м2j+1

 (1.0)

Уравнение (1.0) приводим к виду

 

(1.1)

Из уравнения (1.1) находим   

, ,

.

2) P0<0, PN<0 y0j+1 = м1j+1 B0 =0, C0=1, F0 = м1j+1


. (2.0)

Уравнение (2.0) приводим к виду

 

 (2.1)

Из уравнения (2.1) находим  , ,

 

.

 

3)P0<0, PN>0

y0j+1 = м1j+1 B0=0 ,C0=1, F0= м1j+1 ,

yNj+1 = м2j+1 AN=0 ,CN=1, FN= м2j+1.

 

4) P0>0, PN<0

B0 =0,C0=1, F0= м1j+1

AN =0,CN=1, FN= м2j+1


Таблица 7. Численное решение уравнения переноса с переменными коэффициентами Трехточечная схема с весом Метод прогонки

-------------------kogda p0>0, pN>0---------------kogda G=1
50sloy N priblijennoe  tochnoe  pogreshnosti
0 0.36842774 0.36787944 0.00054830
1 0.35627966 0.35581892 0.00046075
2 0.34461653 0.34415379 0.00046275
3 0.33324870 0.33287108 0.00037762
4 0.32234219 0.32195827 0.00038392
5 0.31170418 0.31140322 0.00030095
6 0.30150555 0.30119421 0.00031134
7 0.29155019 0.29131989 0.00023030
8 0.28201389 0.28176929 0.00024460
9 0.27269705 0.27253179 0.00016526
10 0.26378042 0.26359714 0.00018329
11 0.25506082 0.25495540 0.00010543
12 0.24672399 0.24659696 0.00012703
13 0.23856301 0.23851255 0.00005045
14 0.23076867 0.23069318 0.00007549
15 0.22313016 0.22313016 0.00000000

Таблица 8. Численное решение уравнения переноса на с переменнми коэффициентами Трехточечная схема с весом Метод прогонки

-------------------kogda p0>0, pN>0---------------kogda G=0.5
50sloy N priblijennoe  tochnoe  pogreshnosti
0 0.22317966 0.36787944 0.14469979
1 0.32550240 0.35581892 0.03031652
2 0.21980791 0.34415379 0.12434588
3 0.32390953 0.33287108 0.00896156
4 0.17318247 0.32195827 0.14877580
5 0.30172608 0.31140322 0.00967714
6 0.15878469 0.30119421 0.14240953
7 0.28118803 0.29131989 0.01013186
8 0.16595060 0.28176929 0.11581869
9 0.25958363 0.27253179 0.01294816
10 0.10012442 0.26359714 0.16347272
11 0.23108668 0.25495540 0.02386872
12 0.10648083 0.24659696 0.14011613
13 0.24403326 0.23851255 0.00552071
14 0.10163574 0.23069318 0.12905744
15 0.22313016 0.22313016 0.00000000

Таблица 9. Численное решение уравнения переноса с переменными коэффициентами Трехточечная схема с весом Метод прогонки

-------------------kogda p0<0, pN<0--------------- kogda G=1
50sloy N priblijennoe  tochnoe  pogreshnosti
0 0.36787944 0.36787944 0.00000000
1 0.35801340 0.35581892 0.00219448
2 0.36845033 0.34415379 0.02429654
3 0.35906842 0.33287108 0.02619734
4 0.37000945 0.32195827 0.04805117
5 0.36101823 0.31140322 0.04961501
6 0.37246014 0.30119421 0.07126592
7 0.36379087 0.29131989 0.07247098
8 0.37571304 0.28176929 0.09394375
9 0.36731988 0.27253179 0.09478809
10 0.37968642 0.26359714 0.11608928
11 0.37154421 0.25495540 0.11658881
12 0.38430710 0.24659696 0.13771013
13 0.37640856 0.23851255 0.13789601
14 0.38951172 0.23069318 0.15881854
15 0.38186439 0.22313016 0.15873423

Таблица 10 Численное решение уравнения переноса с переменными коэффициентами Трехточечная схема с весом Метод прогонки

-------------------kogda p0<0, pN<0---------------
kogda G=0,5 50sloy N priblijennoe  tochnoe  pogreshnosti
0 0.36787944 0.36787944 0.00000000
1 0.31801913 0.35581892 0.03779978
2 0.36478621 0.34415379 0.02063242
3 0.34573407 0.33287108 0.01286299
4 0.36983022 0.32195827 0.04787195
5 0.36678412 0.31140322 0.05538090
6 0.34570117 0.30119421 0.04450696
7 0.34004986 0.29131989 0.04872997
8 0.33360167 0.28176929 0.05183238
9 0.35119193 0.27253179 0.07866014
10 0.35046403 0.26359714 0.08686690
11 0.35792253 0.25495540 0.10296714
12 0.36451445 0.24659696 0.11791748
13 0.35527614 0.23851255 0.11676359
14 0.38271932 0.23069318 0.15202614
15 0.39593489 0.22313016 0.17280473

Текст программы смотри в приложении 3


Глава III. Одномерное уравнение переноса с постоянными коэффициентами

 

3.1 Постановка задачи

Рассмотрим уравнение переноса вида

   (3.1)

удовлетворяющее начальному условию

 (3.2)

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

1. P>0  p>0, нет на левой границе условий.

2. P<0  p<0, нет на правой границе условий. (3.3)

Входные данные:

1) P>0

2) P<0


3.2 “Явные” схемы

Рассмотрим схему бегущего счета в обоих случаях.

1) p>0

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

 

 (3.1′)

; (3.2′)

. (3.3′)

Из уравнения (3.1′) следует

2) p<0

Разностная схема(левая) имеет вид:

 

; (3.1″)

; (3.2″)

 (3.3″)

Из уравнения (3.1″) следует


Таблица 11. Численное решение уравнения переноса с постоянными коэффициентами схема бегущего счета “явная ” схема (правая разностная схема)

-------------kogda p>0-------------------------------------------50sloy
N priblijennoe tochnoe  pogreshnosti
0 1.37301170 1.35914091 0.01387078
1 1.41878826 1.40520915 0.01357911
2 1.46606506 1.45283887 0.01322618
3 1.51488985 1.50208301 0.01280684
4 1.56531173 1.55299629 0.01231544
5 1.61738112 1.60563527 0.01174585
6 1.67114985 1.66005846 0.01109139
7 1.72667123 1.71632633 0.01034490
8 1.78400003 1.77450141 0.00949863
9 1.84319260 1.83464833 0.00854427
10 1.90430684 1.89683395 0.00747290
11 1.96740228 1.96112735 0.00627493
12 2.03254007 2.02759998 0.00494008
13 2.09978305 2.09632572 0.00345734
14 2.16919578 2.16738091 0.00181487
15 2.24084454 2.24084454 0.00000000

Таблица 12. Численное решение уравнения переноса с постоянными коэффициентами схема бегущего счета “явная ” схема (левая разностная схема)

-------------kogda p<0-------------50sloy
N priblijennoe tochnoe  pogreshnosti
0 0.03678794 0.03678794 0.00000000
1 0.03444494 0.03558189 0.00113696
2 0.03220334 0.03441538 0.00221204
3 0.03005929 0.03328711 0.00322782
4 0.02800907 0.03219583 0.00418676
5 0.02604910 0.03114032 0.00509122
6 0.02417592 0.03011942 0.00594350
7 0.02238620 0.02913199 0.00674579
8 0.02067672 0.02817693 0.00750021
9 0.01904439 0.02725318 0.00820879
10 0.01748622 0.02635971 0.00887349
11 0.01599934 0.02549554 0.00949620
12 0.01458096 0.02465970 0.01007874
13 0.01322842 0.02385126 0.01062284
14 0.01193914 0.02306932 0.01113018
15 0.01071063 0.02231302 0.01160239

Текст программы смотри в приложении 4

 

3.3 Неявные схемы

Рассмотрим две различные разностные схемы:

1. Центрально-разностная схема.

2. Трехточечная схема с весом.

Все эти схемы сводятся к стандартному виду (3.4) и решаются методом прогонки

  (3.4)

Коэффициенты Ai, Bi, Ci должны удовлетворять условиям:

 (3.5)

Коэффициенты B0 , C0 , F0, AN ,CN ,FN находятся из граничных условий. В данной задаче в зависимости от знака функции p(x,t) ставятся граничные условия и тем самым находятся наши коэффициенты.

1)    Когда р>0 задается правое граничное условие:


 (3.3′)

Используя уравнения (3.3′) находим коэффициенты AN ,CN ,FN . Коэффициенты B0 , C0 , F0 находятся из дополнительного условия, которое ставится на левом конце.

2) Когда р<0 задается граничное условие на левом конце

 (3.3″)

Используя уравнения (3.3″) находим коэффициенты B0 , C0 , F0

Коэффициенты AN ,CN ,FN находятся из дополнительного условия, которое ставится на правом конце.

 

3.3.1 Центрально-разностная схема

Разностная схема задачи (3.1)-(3.3) имеет следующий вид:


1) р>0. В этом случае граничное условие задается на правом конце:

 (3.6)

Используя уравнение (3.6) находим коэффициенты AN =0, CN=1,

Дополнительное условие на левом конце имеет вид:

 (3.7)

Приведем уравнение (3.7) к виду :

 (3.7′)

Отсюда находим коэффициенты:

2)    В случае, когда р<0, граничное условие ставится на левом конце

 (3.8)

Используя уравнение (3.8) находим коэффициенты B0,=0, C0=1,

Дополнительное условие на правом конце имеет вид:


 (3.9)

Приводим уравнение (3.9) к виду :

 (3.9′)

отсюда находим коэффициенты:

 

Таблица 13. Численное решение уравнения переноса с постоянными коэффициентами центральная разностная схема метод прогонки

-------------kogda p>0--------------50sloy
N priblijennoe  tochnoe  pogreshnosti
0 0.03544452 0.03678794 0.00134342
1 0.03541069 0.03558189 0.00017120
2 0.03306824 0.03441538 0.00134714
3 0.03313883 0.03328711 0.00014828
4 0.03084494 0.03219583 0.00135089
5 0.03101552 0.03114032 0.00012480
6 0.02876471 0.03011942 0.00135472
7 0.02903119 0.02913199 0.00010080
8 0.02681828 0.02817693 0.00135865
9 0.02717688 0.02725318 0.00007630
10 0.02499699 0.02635971 0.00136272
11 0.02544422 0.02549554 0.00005132
12 0.02329272 0.02465970 0.00136698
13 0.02382538 0.02385126 0.00002588
14 0.02169787 0.02306932 0.00137145
15 0.02231302 0.02231302 0.00000000

Таблица 14. Численное решение уравнения переноса с постоянными коэффициентами центральная разностная схема метод прогонки

-------------kogda p<0--------------50sloy
N priblijennoe  tochnoe  pogreshnosti
0 0.03678794 0.03678794 0.00000000
1 0.03475182 0.03558189 0.00083008
2 0.03440516 0.03441538 0.00001021
3 0.03246493 0.03328711 0.00082218
4 0.03217504 0.03219583 0.00002079
5 0.03032529 0.03114032 0.00081503
6 0.03008771 0.03011942 0.00003171
7 0.02832337 0.02913199 0.00080861
8 0.02813396 0.02817693 0.00004297
9 0.02645027 0.02725318 0.00080290
10 0.02630518 0.02635971 0.00005453
11 0.02469766 0.02549554 0.00079788
12 0.02459330 0.02465970 0.00006639
13 0.02305773 0.02385126 0.00079352
14 0.02299077 0.02306932 0.00007855
15 0.02152320 0.02231302 0.00078982

Текст программы смотри в приложении 5

 

3.3.2 Трехточечная схема с весом

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

вещественный параметр

1. p>0

На левом конце ставится дополнительное условие


2. p<0

На правом конце ставится дополнительное условие

Разностные уравнения и дополнительные условия сводятся к стандартному виду (3.4) и решаются методом прогонки.

Таблица 15. Численное решение уравнения переноса с постоянными коэффициентами Трехточечная схема с весом Метод прогонки

50sloy N priblijennoe  tochnoe  pogreshnosti
-------------------kogda p>0---------------kogda G=1
0 0.03684277 0.03678794 0.00005483
1 0.03562797 0.03558189 0.00004607
2 0.03446165 0.03441538 0.00004627
3 0.03332487 0.03328711 0.00003776
4 0.03223422 0.03219583 0.00003839
5 0.03117042 0.03114032 0.00003010
6 0.03015056 0.03011942 0.00003113
7 0.02915502 0.02913199 0.00002303
8 0.02820139 0.02817693 0.00002446
9 0.02726970 0.02725318 0.00001653
10 0.02637804 0.02635971 0.00001833
11 0.02550608 0.02549554 0.00001054
12 0.02467240 0.02465970 0.00001270
13 0.02385630 0.02385126 0.00000505
14 0.02307687 0.02306932 0.00000755
15 0.02231302 0.02231302 0.00000000

Таблица 16. Численное решение уравнения переноса с постоянными коэффициентами Трехточечная схема с весом Метод прогонки

-------------------kogda p>0---------------kogda G=0.5
50sloy N priblijennoe  tochnoe  pogreshnosti
0 0.02231797 0.03678794 0.01446998
1 0.03255024 0.03558189 0.00303165
2 0.02198079 0.03441538 0.01243459
3 0.03239095 0.03328711 0.00089616
4 0.01731825 0.03219583 0.01487758
5 0.03017261 0.03114032 0.00096771
6 0.01587847 0.03011942 0.01424095
7 0.02811880 0.02913199 0.00101319
8 0.01659506 0.02817693 0.01158187
9 0.02595836 0.02725318 0.00129482
10 0.01001244 0.02635971 0.01634727
11 0.02310867 0.02549554 0.00238687
12 0.01064808 0.02465970 0.01401161
13 0.02440333 0.02385126 0.00055207
14 0.01016357 0.02306932 0.01290574
15 0.02231302 0.02231302 0.00000000

Таблица 17. Численное решение уравнения переноса с постоянными коэффициентами Трехточечная схема с весом Метод прогонки

-------------------kogda p<0--------------- kogda G=1
50sloy N priblijennoe  tochnoe  pogreshnosti
0 0.03678794 0.03678794 0.00000000
1 0.03676351 0.03654351 0.00022000
2 0.03679165 0.03630069 0.00049096
3 0.03676949 0.03605949 0.00070999
4 0.03679966 0.03581990 0.00097976
5 0.03677973 0.03558189 0.00119784
6 0.03681190 0.03534547 0.00146643
7 0.03679418 0.03511062 0.00168357
8 0.03682831 0.03487732 0.00195098
9 0.03681277 0.03464558 0.00216719
10 0.03684883 0.03441538 0.00243345
11 0.03683543 0.03418671 0.00264872
12 0.03687339 0.03395955 0.00291384
13 0.03686210 0.03373391 0.00312820
14 0.03690193 0.03350976 0.00339217
15 0.03689273 0.03328711 0.00360562

Таблица 18. Численное решение уравнения переноса с постоянными коэффициентами Трехточечная схема с весом Метод прогонки

-------------------kogda p<0--------------- kogda G=0.5
50sloy N priblijennoe  tochnoe  pogreshnosti
0 0.03678794 0.03678794 0.00000000
1 0.03697886 0.03654351 0.00043535
2 0.03685351 0.03630069 0.00055282
3 0.03694215 0.03605949 0.00088265
4 0.03678490 0.03581990 0.00096500
5 0.03709634 0.03558189 0.00151445
6 0.03702149 0.03534547 0.00167603
7 0.03710468 0.03511062 0.00199406
8 0.03712939 0.03487732 0.00225206
9 0.03693008 0.03464558 0.00228450
10 0.03706115 0.03441538 0.00264577
11 0.03679396 0.03418671 0.00260725
12 0.03713746 0.03395955 0.00317791
13 0.03669566 0.03373391 0.00296175
14 0.03706614 0.03350976 0.00355638
15 0.03675340 0.03328711 0.00346629

Текст программы смотри в приложении 6

 

3.3.3 Схема “прямоугольник”

1. p>0 разностная схема правая имеет вид

 

2. p<0 разностная схема левая имеет вид


 

3.3.4 Схема со сглаживанием

Разностная схема имеет вид

1. p>0

 

2. p<0

 

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

3.3.5 Схема прямоугольник со сглаживанием

1.p>0

2. p<0

 

 

3.3.6 “Шахматная” схема

Имеем схему с весом

1. p>0

2. p<0

Параметр  управляет реализацией схемы. При =0 и

(i+j)- четном решаем по явной схеме, при =1 и

(i+j)- нечетном решаем по неявной схеме явно. В целом схема реализуется явно.


Заключение

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

Конечно –разностный метод (метод сеток) –один из мощных достаточно универсальных методов современной вычислительной математики. Этот метод относится к классу машинных методов решения широкого круга задач для дифференциальных уравнений.

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

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

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

1)    При p0>0, pN>0 трехточечная схема с весом при G=1, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00007549.

2)    При p0<0, pN<0 неявная схема с центральной разностью, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00007574.

3)    При p0<0, pN>0 так же схема с центральной разностью, абсолютная погрешность составляет 0,00009042.

Так же произведены расчеты некоторых методов одномерного уравнения переноса с постоянными коэффициентами.

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

1)    При p>0 трехточечная схема с весом при G=1, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00000755.

2) При p<0 также трехточечная схема с весом при G=1, абсолютная погрешность на 50-м слое составляет 0,00022000

 


Список использованной литературы

1.   Самарский А.А. Теория разностных схем. М.:Наука, 1977, с. 616.

2.   Самарский А.А., Гулин А.В.Численные методы. М.Наука, 1989, с. 315.

3.   Охлопков Н.М. Численные методы решения обыкновенных дифференциальных уравнений. Якутск: Изд-во Ягу, 1993, с. 38.

4.   Охлопков Н.М., Охлопков Г.Н. Введение в специальность “Прикладная математика” часть 1,2 Якутск: Изд-во Ягу, 1997, с. 93, с. 85.

5.   Охлопков Н.М., Иванов Ф.В. Вычислительные алгоритмы решения задач для дифференциальных уравнений Якутск: Изд-воЯгу, 1992, с.65.

6.   Охлопков Н.М.,Иванов Ф.В. Пакет программ численного решения задач математической физики ч.2, Якутск: Изд-во Ягу, 1989, с 15.

7.   Охлопков Н.М. Об экономичных методах решения задач математической физики. Якутск: Изд-во Ягу, 1982, с. 39.


Приложение 1

 

Уравнение с переменными коэффициентами

“Явная” схема.

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

p0<0, pN<0

uses crt;

const n=15;j0=20;tt=1;l=1;A=0.01;a1=1;q=2;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j:integer;

x,h,t,tau,d:hi;

u,u1,g,u2,u11,u12:m;

function ut(p,r:real):real;

begin ut:= A*exp(p+r);end;

function fi(p,r:real):real;

begin fi:=A*exp(p+r)*(p*(p+1)+r*(r+1)+7); end;

function ro(p,r:real):real;

begin ro:=sqr(p)+sqr(r)+5;end;

function p1(p,r:real):real;

begin p1:=-(p+r+2);end;

begin

clrscr;

writeln ( 'sxema begushego scheta');

writeln(' kogda p0<0,pN<0');

writeln(' levaya raznostnaya sxema');

readln;

h[0]:=0;

h[1]:=a1;

for i:=2 to n do

h[i]:=l/n;

tau[j]:=tt/j0;

t[j]:=0;j:=1;

for i:=0 to n do

begin

x[i]:=i*h[i];t[j]:=j*tau[j];

u[i]:= A*(exp(x[i]));

end;

while t[j]<=tt do begin clrscr;

t[j]:=t[j]+tau[j];

u1[0]:=A*exp((t[j]));

for i:=n-1 downto 0 do

begin

g[i]:=tau[j+1]*p1(x[i],t[j+1])/h[i+1];

u11[i]:=(-g[i]*u1[i+1])+(ro(x[i],t[j+1])*u[i]);

u12[i]:=tau[j+1]*fi(x[i],t[j]);

u1[i]:=(u11[i]+u12[i])/(ro(x[i],t[j+1])+g[i]);

end;

for i:=n-1 downto 0 do

u[i]:=u1[i];

writeln('----------------------------------------------------------');

write(' ',j,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

j:=j+1;

writeln('--------------------------------------------------------------');

readln;

end;

end.

Уравнение с переменными коэффициентами

“Явная” схема.

Схема бегущего счета.

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

p0>0, pN>0

uses crt;

const n=15;j0=50;tt=1;l=0.5;A=0.5;a1=2;q=2;

type w=array[0..n] of real;

hi=array[0..n] of real;

var i,j:integer;

x,h,t,tau,d:hi;

u,u1,g,u2,u11,u12:w;

function ut(p,r:real):real;

begin ut:= A*exp(p+r);end; {to4noe reshenie}

function fi(p,r:real):real;

begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;

function ro(p,r:real):real;

begin ro:=sqr(p)+sqr(r)+5;end;

function p1(p,r:real):real;

begin p1:=p+r+2;end;

begin clrscr;

writeln ( 'sxema begushego scheta');

writeln(' kogda p0>0,pN>0');

writeln(' pravaya raznostnaya sxema');

readln;

h[0] := 0;

h[1] := a1;

for i:=2 to n do

h[i] := h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];

tau[j]:=t[j]-t[j-1];

t[j]:=0;j:=1;

for i:=0 to n do

begin

x[i]:=i*h[i];t[j]:=j*tau[j];

u[i]:= A*exp(x[i]); {u0(x)}

end;

begin

while t[j]<=tt do begin clrscr;

t[j]:=t[j]+tau[j];

u1[i]:=A*exp(l+t[j]); {mu2(t)}

for i:=n-1 downto 0 do

begin

g[i]:=(tau[j+1]*p1(x[i],t[j+1])/h[i+1]); {R[i,j+1]}

u11[i]:=(g[i]*u1[i+1])+ro(x[i],t[j+1])*u[i];

u12[i]:=tau[j+1]*fi(x[i],t[j+1]);

u1[i]:=(u11[i]+u12[i])/(ro(x[i],t[j+1])+g[i]); {y

end;

for i:=n-1 downto 0 do begin

u[i]:=u1[i]; end;

writeln('----------------------------------------------------------');

write(' ',j,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i :=0 to n do

begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

j:=j+1;

writeln('--------------------------------------------------------------'

readln;

end;

end;

end.


Приложение 2

Уравнение с переменными коэффициентами

Схема с центральной разностью

p0>0, pN>0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1;q=3;g1=1;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k:integer;

h,d,tau,t:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(p+r);end;

function fi(p,r:real):real;

begin fi:= begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;

function ro(p,r:real):real;

begin ro:=sqr(p)+sqr(r)+5;end;

p1(p,r:real):real;

begin p1:=p+r+2;end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'sxema s sentralnoy raznostju');

writeln(' kogda p0>0,pn>0');

readln;

h[0]:=0;

h[1]:=a1;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(x[i]);

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=1+(p1(x[i],t[j])*tau[j])/h[i]+tau[j]*q;

b[0]:=(tau[j]*p1)/h[i];

a[n]:=0;

c[n]:=1;

for i:=1 to n-1 do begin

r[i]:=tau[j]*p1/(2*h[i]);

a[i]:=-r[i];

c[i]:=ro;

b[i]:=-a[i];

f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;

f[0]:=tau[j]*fi(x[0],t[j])+u[0];

f[n]:= A1*exp(l+t[j]);

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.

Уравнение с переменными коэффициентами

Схема с центральной разностью

p0<0, pN<0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1; q=3;g1=1;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k:integer;

h,d,tau,t:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(p+r);end;

function fi(p,r:real):real;

begin fi:=A1*exp(p+r)*(p*(p+1)+r*(r+1)+7);end;

function ro(p,r:real):real;

begin ro:=sqr(p)+sqr(r)+5;end;

function p1(p,r:real):real;

begin p1:=-(p+r+2);end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'sxema s sentralnoy raznostju');

writeln(' kogda p0<0,pn<0');

readln;

h[0]:=0;

h[1]:=g1;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(x[i]);

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=1;

b[0]:=0;

a[n]:=-(tau[j]*p1[x)/h[i];

c[n]:=1-(p1*tau[j])/h[i]+tau[j]*q;

for i:=1 to n-1 do begin

r[i]:=tau[j]*p1/(2*h[i]);

a[i]:=-r[i];

c[i]:=ro;

b[i]:=-a[i];

f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;

f[0]:=A1*exp(t[j]);

f[n]:= (tau[j]*fi(x[n],t[j])+u[n]);

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.

Уравнение с переменными коэффициентами

Схема с центральной разностью.

p0<0, pN>0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1;q=3;a2=1;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k:integer;

h,d,tau,t:hi;

u,u1,r,x,z,a,b,c,f

function ut(p,r:real):real;

begin ut:= v*exp(p+r);end;

function fi(p,r:real):real;

begin fi:=A1*exp(p+r)*((p+r+10)-(2*p-1)*exp(2*r);end;

function ro(p,r:real):real;

begin ro:=p+r+10;end;

function p1(p,r:real):real;

begin p1:=(2*p-1)*exp(2*r);end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'sxema s sentralnoy raznostju');

writeln(' kogda p0<0,pn>0');

readln;

h[0]:=0;

h[1]:=a2;

for i:=2 to n do

h[i]:=h[i-1]*q1;

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i];

u[i]:= A1*exp(x[i]);

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=1;

b[0]:=0;

a[n]:=0;

c[n]:=1;

for i:=1 to n-1 do begin

r[i]:=tau[j+1]*p1/(2*h[i]);

a[i]:=-r[i];

c[i]:=ro;

b[i]:=-a[i];

f[i]:=ro*u[i]+tau[j+1]*fi(x[i],t[j]);end;

f[0]:=A1*exp(t[j]);

f[n]:=A1*exp(l+t[j]);

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.

Уравнение с переменными коэффициентами

Схема с центральной разностью.

p0>0, p<0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1; a2=1;q=3;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k:integer;

h,d,tau,t:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(p+r);end;

function fi(p,r:real):real;

begin fi:=A1*exp(p+r)*((p+r+10)-(2*p-1)*exp(2*r);end;

function ro(p,r:real):real;

begin ro:=p+r+10;end;

function p1(p,r:real):real;

begin p1:=(2*p-1)*exp(2*r);end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'sxema s sentralnoy raznostju');

writeln(' kogda p0>0,pn<0');

readln;

h[0]:=0;

h[1]:=a2;

for i:=2 to n do

h[i]:=h[i-1]*q;

h[i]:=x[i]-x[i-1];

tau[j]:=t[j]-tau[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(x[i]);

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=p1+ro*tau[j]/h[i];

b[0]:=tau[j]*p1/h[i];

a[n]:=tau[j]*p1/h[i];

c[n]:=-ro+p1*tau[j]/h[i];

for i:=1 to n-1 do begin

r[i]:=tau[j]*p1/(2*h[i]);

a[i]:=-r[i];

c[i]:=ro;

b[i]:=-a[i];

f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;

f[0]:=tau[j+1]*fi(x[0],t[j])+ro*u[0];

f[n]:=-(tau[j+1]*fi(x[n],t[j])+ro*u[n]);

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.


Приложение 3

Уравнение с переменными коэффициентами

Трехточечная схема с весом

Метод прогонки

p0>0, pN>0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1;q=3;a2=1;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k,G:integer;

h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(p+r);end;

function fi(p,r:real):real;

begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;

function ro(p,r:real):real;

begin ro:=sqr(p)+sqr(r)+5;end;

function p1(p,r:real):real;

begin p1:=p+r+2;end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'sxema begushego scheta');

writeln(' metod progonki');

writeln(' ------------------------------' );

writeln('-------------kogda p0>0,pN>0------------');

writeln(' vvedite G=' );

read(G);

writeln('----------------------------------------');

readln;

readln;

h[0]:=0;

h[1]:=a2;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(x[i]);

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=ro+(p1*tau[j])/h[i];

b[0]:=G*tau[j]*p1/h[i];

a[n]:=0;

c[n]:=1;

for i:=1 to n-1 do begin

a[i]:=-G*p1*tau[j]/(2*h[i]);

c[i]:=ro;

b[i]:=-a[i];

f1[i]:=(1-G)*p1*tau[j]/(2*h[i]);

f2[i]:=ro*u[i];

f3[i]:=G*tau[j]*fi(x[i],t[j]);

f4[i]:=(1-G)*tau[j]*fi(x[i],t[j]-tau[j]);

f[i]:=f1[i]*(u[i+1]-u[i-1])+f2[i]+f3[i]+f4[i];

end;

f5[i]:=(1-G)*p1*(u[1]-u[0])*tau[j]/h[i];

f6[i]:=ro*u[0]+f5[i]+G*tau[j]*fi(x[0],t[j]+tau[j]);

f[0]:=f6[j]+(1-G)*tau[j]*fi(x[0],t[j]);

f[n]:= A1*exp(l+t[j]);

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.

Уравнение с переменными коэффициентами

Трехточечная схема с весом

Метод прогонки

p0<0, pN<0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1;q=3;a2=1;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k,G:integer;

h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(p+r);end;

function fi(p,r:real):real;

begin fi:=A*exp(p+r)*(p*(p+1)+r*(r+1)+7); end;

function ro(p,r:real):real;

begin ro:=sqr(p)+sqr(r)+5;end;

function p1(p,r:real):real;

begin p1:=-(p+r+2);end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'trextochechnaya sxema');

writeln(' kogda p<0');

writeln(' vvedite G=' );

read(G);

writeln('----------------------------------------------------');

readln;

readln;

h[0]:=0;

h[1]:=a2;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(x[i]);

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=1;

b[0]:=0;

a[n]:=-g*(tau[j]*p1)/h[i];

c[n]:=ro-g*(p1*tau[j])/h[i];

for i:=1 to n-1 do begin

r[i]:=tau[j]*p1/(2*h[i]);

a[i]:=(-g*p1*tau[j])/(2*h[i]);

c[i]:=ro;

b[i]:=-a[i];

f1[i]:=(1-g)*(p1*tau[j])/(2*h[i]);

f2[i]:=ro*u[i];

f3[i]:=g*tau[j]*fi(x[i],t[j]);

f4[i]:=(1-g)*tau[j]*fi(x[i],t[j]-tau[j]);

f[i]:=f1[i]*(u[i+1]-u[i-1])+f2[i]+f3[i]+f4[i];end;

f[0]:=A1*exp(t[j]);

f5[i]:=(1-g)*p1*(u[1]-u[0])*tau[j]/h[i];

f6[i]:=ro*u[0]+f5[i]+g*tau[j]*fi(x[0],t[j]+tau[j]);

f[n]:=f6[j]+(1-g)*tau[j]*fi(x[0],t[j]);

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.


Приложение 4

Уравнение с постоянными коэффициентами

“Явная” схема.

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

p<0

uses crt;

const n=15;j0=50;tt=1;l=1;A=1;B=1;p1=1;q=3;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j:integer;

h,d,tau,t:hi;

u11,u12:real;

u,u1,x,g,u2:m;

function ut(p,r:real):real;

begin ut:= A*exp(B*(p+r));end;

function fi(p,r:real):real;

begin fi:=A*B*exp(B*(p+r))*(1-p1+q/B); end;

begin

clrscr;

writeln ( 'sxema begushego scheta');

writeln(' kogda p0>0,pN>0');

writeln(' pravaya raznostnaya sxema');

readln;

h[0]:=0;

h[1]:=a1;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;j:=1;

for i:=0 to n do

begin

x[i]:=i*h;t[j]:=j*tau[j];

u[i]:= A*(exp(B*(x[i])));

end;

while t[j]<=tt do begin clrscr;

t[j]:=t[j]+tau[j];

u1[n]:=A*exp(B*(l+t[j]));

for i:=n-1 downto 0 do begin

g[i]:=(tau[j+1]*p1)/h[i];

u11:=(g[i]*u1[+1])+u[i];

u12:=tau*fi(x[i],t[j]);

u1[i]:=(u11+u12)/(1+g[i]+tau[j+1]*q);

end;

for i:=0 to n do u[i]:=u1[i];

writeln('----------------------------------------------------------');

write(' ',j,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t):6:8,'  ',d[i]:6:8,'  '); end;

j:=j+1;

writeln('--------------------------------------------------------------');

readln;

end;

end.

Уравнение с постоянными коэффициентами

“Явная” схема.

Схема бегущего счета.

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

p>0

uses crt;

const n=15;j0=50;tt=1;l=1;A=1;B=-1;p1=-3;q=3;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j:integer;

x,h,d,tau,t:hi;

u11,u12:real;

u,u1,g:m;

function ut(p,r:real):real;

begin ut:= A*exp(B*(p+r));end;

function fi(p,r:real):real;

begin fi:=A*B*exp(B*(p+r))*(1-p1+q/B); end;

begin

clrscr;

writeln ( 'sxema begushego scheta');

writeln(' kogda p0<0,pN<0');

writeln(' levaya raznostnaya sxema');

readln;

h[0]:=0;

h[1]:=a1;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;j:=1;

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A*(exp(B*(x[i])));

end;

while t[j]<=tt do begin clrscr;

t[j]:=t[j]+tau[j];

u1[0]:=A*exp(B*(t[j]));

for i:=1 to n do begin

g[i]:=(tau[j]*p1)/h[i];

u11:=(-g[i]*u1[i-1])+u[i];

u12:=tau[j]*fi(x[i],t[j]);

u1[i]:=(u11+u12)/(1-g[i]+tau[j]*q);

end;

for i:=0 to n do u[i]:=u1[i];

writeln('----------------------------------------------------------');

write(' ',j,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[j]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[j]:6:8,'  '); end;

j:=j+1;

writeln('--------------------------------------------------------------');

readln;

end;

end.


Приложение 5.

Уравнение с постоянными коэффициентами

Схема с центральной разностью

p>0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1;B1=1;p1=1;q=3;g1=1;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k:integer;

h,d,tau,t:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(B1*(p+r));end;

function fi(p,r:real):real;

begin fi:=A1*B1*exp(B1*(p+r))*(1-p+q/B);end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'sxema s sentralnoy raznostju');

writeln(' kogda p0>0,pn>0');

readln;

h[0]:=0;

h[1]:=a1;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(B1*(x[i]));

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=1+(p1*tau[j+1])/h[1]+tau[j+1]*q;

b[0]:=(tau[j+1]*p1)/h[1];

a[n]:=0;

c[n]:=1;

for i:=1 to n-1 do begin

r[i]:=tau[j]*p1/(2*h[i]);

a[i]:=-r[i];

c[i]:=ro;

b[i]:=-a[i];

f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;

f[0]:=tau[j]*fi(x[0],t[j])+u[0];

f[n]:= A1*exp(B1*(l+t[j]));

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.


Уравнение с постоянными коэффициентами

Схема с центральной разностью

P<0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1;B1=-1;p1=-1; q=3;g1=1;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k:integer;

h,d,tau,t:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(B1*(p+r));end;

function fi(p,r:real):real;

begin fi:=A1*B1*exp(B1*(p+r))*(1-p1+q/B);end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'sxema s sentralnoy raznostju');

writeln(' kogda p0<0,pn<0');

readln;

h[0]:=0;

h[1]:=g1;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(B1*(x[i]));

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=1;

b[0]:=0;

a[n]:=-(tau[j]*p1)/h[i];

c[n]:=1-(p1*tau[j])/h[i]+tau[j]*q;

for i:=1 to n-1 do begin

r[i]:=tau[j]*p1/(2*h[i]);

a[i]:=-r[i];

c[i]:=ro;

b[i]:=-a[i];

f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;

f[0]:=A1*exp(t[j]);

f[n]:= (tau[j]*fi(x[n],t[j])+u[n]);

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.


Приложение 6

Уравнение с постоянными коэффициентами

Трехточечная схема с весом

Метод прогонки

p>0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1;B1=1;p1=1;q=3;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k,G:integer;

h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(B1*(p+r));end;

function fi(p,r:real):real;

begin fi:=A1*B1*exp(B1*(p+r))*(1-p1+q/B1);end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'sxema begushego scheta');

writeln(' metod progonki');

writeln(' ------------------------------' );

writeln('-------------kogda p0>0,pN>0------------');

writeln(' vvedite G=' );

read(G);

writeln('----------------------------------------');

readln;

readln;

h[0]:=0;

h[1]:=a1;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(B1*(x[i]));

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=ro+(p1*tau[j])/h[i];

b[0]:=G*tau[j]*p1/h[i];

a[n]:=0;

c[n]:=1;

for i:=1 to n-1 do begin

a[i]:=-G*p1*tau[j]/(2*h[i]);

c[i]:=ro;

b[i]:=-a[i];

f1[i]:=(1-G)*p1*tau[j]/(2*h[i]);

f2[i]:=ro*u[i];

f3[i]:=G*tau[j]*fi(x[i],t[j]);

f4[i]:=(1-G)*tau[j]*fi(x[i],t[j]-tau[j]);

f[i]:=f1[i]*(u[i+1]-u[i-1])+f2[i]+f3[i]+f4[i];

end;

f5[i]:=(1-G)*p1*(u[1]-u[0])*tau[j]/h[i];

f6[i]:=ro*u[0]+f5[i]+G*tau[j]*fi(x[0],t[j]+tau[j]);

f[0]:=f6[j]+(1-G)*tau[j]*fi(x[0],t[j]);

f[n]:= A1*exp(B1*(l+t[j]));

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.

Уравнение с постоянными коэффициентами

Трехточечная схема с весом

Метод прогонки

P<0

uses crt;

const n=15;j0=50;tt=1;l=1;A1=1;B1=-1;p1=-1;q=3;

type m=array[0..n] of real;

hi=array[0..n] of real;

var i,j,k,G:integer;

h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;

u,u1,r,x,z,a,b,c,f,alfa,betta:m;

function ut(p,r:real):real;

begin ut:= A1*exp(B1*(p+r));end;

function fi(p,r:real):real;

begin fi:=A1*B1*exp(B1*(p+r))*(1-p1+q/B1);end;

begin

clrscr;

writeln (' chislennoe reshenie uravneniya perenosa');

writeln ( 'trextochechnaya sxema');

writeln(' kogda p<0');

writeln(' vvedite G=' );

read(G);

writeln('----------------------------------------------------');

readln;

readln;

h[0]:=0;

h[1]:=a1;

for i:=2 to n do

h[i]:=h[i-1]*q;

for i:=0 to n do

h[i]:=x[i]-x[i-1];;

tau[j]:=t[j]-t[j-1];

t[j]:=0;k:=0;

clrscr;

writeln('------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('-------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnost ');

writeln('--------------------------------------------------------');

for i:=0 to n do

begin

x[i]:=i*h[i]; t[j]:=j*tau[j];

u[i]:= A1*exp(B1*(x[i]));

d[i]:=abs(ut(x[i],t[j])-u[i]);

write('',i,'',u[i]:6:8,' ');

writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');

end;

writeln('-------------------------------------------------------');

readln;

k:=1;

while t[j]<=tt do begin

clrscr;

t[j]:=t[j]+tau[j];

c[0]:=1;

b[0]:=0;

a[n]:=-g*(tau[j]*p1)/h[i];

c[n]:=ro-g*(p1*tau[j])/h[i];

for i:=1 to n-1 do begin

r[i]:=tau[j]*p1/(2*h[i]);

a[i]:=(-g*p1*tau[j])/(2*h[i]);

c[i]:=ro;

b[i]:=-a[i];

f1[i]:=(1-g)*(p1*tau[j])/(2*h[i]);

f2[i]:=ro*u[i];

f3[i]:=g*tau[j]*fi(x[i],t[j]);

f4[i]:=(1-g)*tau[j]*fi(x[i],t[j]-tau[j]);

f[i]:=f1[i]*(u[i+1]-u[i-1])+f2[i]+f3[i]+f4[i];end;

f[0]:=A1*exp(B1*(t[j]));

f5[i]:=(1-g)*p1*(u[1]-u[0])*tau[j]/h[i];

f6[i]:=ro*u[0]+f5[i]+g*tau[j]*fi(x[0],t[j]+tau[j]);

f[n]:=f6[j]+(1-g)*tau[j]*fi(x[0],t[j]);

alfa[0]:=b[0]/c[0];

betta[0]:=f[0]/c[0];

for i:=1 to n-1 do begin

z[i]:=c[i]-alfa[i-1]*a[i];

alfa[i]:=b[i]/z[i];

betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;

u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);

for i:=n-1 downto 0 do

u1[i]:=alfa[i]*u1[i+1]+betta[i];

writeln('----------------------------------------------------------');

write(' ',k,'sloy');

writeln(' ');

writeln('--------------------------------------------------------');

writeln('N priblijennoe  tochnoe  pogreshnosti ');

writeln('--------------------------------------------------------');

for i:=0 to n do begin

d[i]:=abs(ut(x[i],t[j])-u1[i]);

write('',I,' ',u1[i]:6:8,'  ');

writeln(ut(x[i],t[j]):6:8,'  ',d[i]:6:8,'  '); end;

k:=k+1;

writeln('--------------------------------------------------------------');

readln;

for i:=0 to n do

u[i]:=u1[i];

end;

end.