Разностные схемы для уравнения переноса на неравномерных сетках
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
Якутский государственный университет имени М.К. Аммосова
Институт математики и информатики
Кафедра прикладной математики
Дипломная работа
“Разностные схемы для уравнения переноса на неравномерных сетках”
“Специальность 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 Сеточная область
Для построения разностной схемы необходимо построить сетку G>h>-конечное множество точек, принадлежащих G, плотность распределения которых характеризуется параметрами h-шагом сетки. Пусть область изменения аргумента x есть отрезок G={0≤x≤1}. Разобьем этот отрезок точками x>i>=i∙h, i=0,n на n равных частей длины h=1/n каждая. Множество точек x>i>=i∙h, называется равномерной сеткой на отрезке 0≤x≤1 и обозначим ={x>i>=i∙h, i=0,n} , а число h-расстояние между точками (узлами) сетки называется шагом сетки. Разбиение отрезка 0≤x≤1 точками x>i>, i=0,n можно производить произвольным образом - 0<x>1><…<x>n>>-1><1. Тогда получаем сетку ={x>i>, i=0,n, x>0>=0, x>n>=1} c шагами h>i>=x>i>-x>i>>-1>, которое зависит от номера узла сетки. Если h>i>≠h>i>>+1> хотя бы в одной точке, то сетка называется неравномерной и такую сетку обозначают ŵ. Точки x>0> и x>n> назовем граничными узлами и обозначим их г>h>. Остальные узлы назовем внутренними и обозначим их w>h>. Узлы соседние с граничащими назовем приграничными. Тогда имеем
=w>h>> > г>h>> .>
1.2 Сеточная функция. Пространство сеточных функций. Нормы сеточных функций
Функция y=y(x>i>) дискретного аргумента x>i>> >называется сеточной функцией, определенной на сетке . Сеточные функции можно рассматривать как функции целочисленного аргумента, являющегося номером узла сетки, т. е. y=y(x>i>)=y(i). Далее мы будем писать y(x>i>)=y>i>.
Сеточная область w>h> зависит от параметра h. При различных значениях параметра h имеем различные сеточные области. Поэтому и сеточные функции y>h>(x) зависят от параметра h.
Функции u(x) непрерывного аргумента являются элементами функционального пространства H. Множество сеточных функций y>h>(x) образует пространство H>h>. Таким образом, в методе сеток пространство H, заменяется пространством H>h> сеточных функций y>h>(x).
Так как рассматривается множество сеток {w>h>}, то мы получаем множество {H>h>} пространств сеточных функций, определенных на {w>h>}.
Пусть u(x) - решение исходной непрерывной задачи
Lu(x)=f(x), (1)
; y>h>- решение разностной задачи, . Для теории приближенных вычислений представляет большой интерес оценка близости u(x) и y>h>(x), но u(x) и y>h>(x) являются элементами из различных пространств. Пространство H отображается на пространство H>h>. Каждой функции ставится в соответствие сеточная функция y>h>(x), x w>h>, так что y>h>=P>h>u H>h>, где P>h>- линейный оператор из H в H>h>. Это соответствие можно осуществить различными способами, т. е. зависит от выбора оператора P>h>. Теперь, имея сеточную функцию u>h>, образуем разность y>h>-u>h>, которая является вектором пространства H>h>. Близость y>h> и u>h> характеризуется числом y>h>-u>hHh> , где >Hh> – норма на H>h>.
Соответствие функций u(x) и u>h> можно установить различными способами, например,
u>h>=u(x), x w>h>.
В дальнейшем мы будем пользоваться этим способом соответствия.
В линейном пространстве H>h> введем норму >Hh>, которая является аналогом нормы >Н> в исходном пространстве Н. Обычно принято выбирать норму в пространстве H>h> так, чтобы при стремлении к нулю h она переходила в ту или иную норму функций, заданных на всем отрезке, т.е. чтобы выполнялось условие
>Hh>=>H>>, >(2)
где >Н>- норма в пространстве функций, определенных на отрезке, которому принадлежит решение.
Условие (2) называют условием согласования в пространствах H>h> и Н.
Рассмотрим простейшие типы норм в H>h> для случая сеток
w>h>={x>i>=i∙h} на отрезке 0≤x≤1.
1. Норма >Hh>=
удовлетворяет условию (2), если в качестве Н рассматривать пространство непрерывных функций с нормой
>H>=, H=[a,b],
а сеточную функцию определять в виде (2), т.е.
y>h>(x)=u>h>(x), x w>h>
2. Норма >Hh>=
удовлетворяют условию (2), если за Н принять пространство непрерывных функций с нормой
>H>=u2(x)dx, H=C[a,b] ,
а сеточную функцию определять в виде
y>h>=u>h>(x), x w>h>>.>
1.3 Аппроксимация дифференциальных операторов
Пусть имеем дифференциальный оператор
Этот оператор можно аппроксимировать несколькими способами. Например,
- правая разностная производная; (3)
>> - левая разностная производная; (4)
>> - центральная разностная производная; (5)
Можно взять их линейную комбинацию
, (6) где у- вещественный параметр.
При у=1 из (6) получаем аппроксимацию (3); при у=0 – аппроксимацию (4), а при у=0.5- аппроксимацию (7).
Чтобы показать погрешность аппроксимации, разложим по формуле Тейлора
предполагая, что функция v(x) достаточно гладкая в некоторой окрестности (x-h>0>,x+h>0>) точки х, h<h>0>,h>0>- фиксированное число.
Подставляя это разложение в (3),(4),(5), получим:
Отсюда видно, что
Пусть L- дифференциальный оператор, L>h>- разностный оператор, заданный на сетке w>h>. Говорят, что разностный оператор L>h>:
аппроксимируем дифференциальный оператор L в узле x>i> w>h>, если
, где v(x)- достаточно гладкая функция, стремится к нулю при h→0;
аппроксимируем L с порядком n >0 в узле x>i> w>h> если , т.е.
, M=const>0.
В качестве следующего примера рассмотрим оператор .
Для аппроксимации этого оператора используем трехточечный шаблон (x-h, x, x+h).
Замечая , имеем
Отсюда
Пользуясь разложением (7), покажем, что порядок аппроксимации равен двум, т.е.
так как
1.4 Разностная схема
Как правило, дифференциальное уравнение решается с некоторыми дополнительными условиями - начальными (задача Коши), краевыми (краевая задача) либо и с начальными, и с краевыми условиями (смешанные задачи). Эти дополнительные условия при переходе к разностным уравнениям надо так же аппроксимировать.
Пусть имеем некоторую дифференциальную задачу, записанную в виде
Lu=f(x), xG (8)
с дополнительным условием
lu=ц(x), xГ. (9)
Введем в области Г сетку
и поставим в соответствие задаче (8), (9) разностную задачу
L>h>y>h>=f>h>, xw>h>, (10)
L>h>y>h>=ц>h>, xг>h>. (11)
Функция y>h>(x), f>h>(x), ц>h>(x) зависят от шага сетки. Меняя h, получаем множества функций {y>h>}, {f>h>}, {ц>h>}, зависящих от параметра h. Таким образом, мы рассматриваем не одну разностную задачу, а семейство задач, зависящее от параметра h. Это семейство задач называется разностной схемой.
Рассмотрим примеры разностных схем, аппроксимирующих дифференциальные задачи.
Пример 1. Имеем задачу Коши
, 0<x≤1, л = const
.
Используем аппроксимации:
;
.
После этого имеем разностную схему:
Расчетный алгоритм имеем вид
Пример 2. Рассмотрим задачу Коши.
Воспользуемся следующими аппроксимациями:
После этого имеем разностную схему
1.5 Корректность разностной схемы
Пусть имеем дифференциальную задачу
, (12)
(13) и на сетке > >аппроксимируем ее разностной схемой
> >(14)
> >(15)
Задача (12), (13) поставлена корректно, если выполнены условия:
задача однозначно разрешима при любых правых частях
решение задачи непрерывно зависит от правых частей т.е.
>H>> >≤ M>1>∙>H> +M>2>∙>H>>.>
Аналогично определяется понятие корректности разностной схемы (14), (15). Говорят, что разностная схема (14), (15) корректна, если при всех достаточно малых │h│< h>0>:
1) решение y>h> разностной схемы существует и единственно для всех входных данных f >h>H>h>, ц>h> H>h>;
2) существуют постоянные M>1>>0, M>2>>0 не зависящие от h и такие, что при любых f >h> H>h>, ц>h> H>h> справедлива оценка
>Hh>> >≤ M>1>∙>Hh> +M>2>∙>Hh>>. >(16)
Свойство 2), означающее непрерывную зависимость, равномерную относительно h, решения разностной схемы от правых частей, называется устойчивостью разностной схемы. Рассмотрим примеры.
Пример 1. Пусть имеем задачу:
(17)
Точным решением задачи (17) является функция
Если ввести новую функцию то получим задачу
(18)
Решением задачи (18) является функция
Задачу (18) аппроксимируем на равномерной сетке = {x>i>=ih, i=0,n} схемой:
(19)
Перепишем схему (19) в виде
Отсюда имеем
Рассмотрим фиксированную точку и выберем последовательность сеток таких, чтобы = i>0 >∙ h, т.е. является узлом сетки при h→0.
Вычислим значение у в этой точке y() = y>i>>0>=si0y>0>. Так как │s│< 1 при б>0
и любых h, то│ y()│≤│si0│∙│y>0>│< │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 H>h>.
Рассмотрим погрешность решения разностной схемы (14), (15), которая аппроксимирует на сетке дифференциальную задачу (12), (13).
Введем функцию погрешности решения
z>h>> >= y>h> –uh,
где y>h>> >– решение схемы (14), (15), uh- решение задачи (12), (13) на сетке ͞w>h>. Подставив y>h>> >= z>h> +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 ≤ h>0> выполняется неравенство
>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> ≤ M>1>>Hh>> >+ M>2>>Hh>. (29)
Таким образом, если схема (14), (15) корректна и аппроксимирует задачу (12), (13), то она сходится при h→0. Норма погрешности ‖z>h>‖>Hh>→0 при h→0, если >Hh>→0 и >Hh>→0 при h→0.
Из оценки (28) видно, что порядок точности схемы (14), (15) определяется порядком аппроксимации, и чтобы схема сходилась со скоростью O(hn), n>0 достаточно, чтобы она имела аппроксимацию того же порядка, т.е.
>Hh >= О(hn), >Hh> = O(hn).
Рассмотрим примеры.
Пример 1. Рассмотрим явную схему Эйлера
которая аппроксимирует дифференциальную задачу (20). Покажем порядок погрешности аппроксимации и сходимость.
Рассмотрим функцию погрешности решения
Для z>i> получаем схему:
(30)
Разложим u>i>>+1> по формуле Тейлора в точке x>i>, имеем
(31)
Подставляя (31) в ш>i>, получим
т.е. имеем порядок аппроксимации. Из (30) имеем
При имеем Выражая z>i>> >через z>0>, получим:
>>
Отсюда видно, что при h→0, │z>i>│→0. Для точности схемы имеем
│z>i>>+1>│≤ h∙│ш>s>│≤ h ∙ i ∙ O(h) = x>i>∙O(h) ≤ M ∙ h,
т.е. схема имеет первый порядок точности.
Пример 2. Рассмотрим неявную схему Эйлера
,
которая аппроксимирует дифференциальную задачу (20). Для погрешности решения z>i>> >= y>i> –u>i>> >получаем разностную схему:
Подставляя разложение (31) в ш>i>> >, получим
>>
Отсюда имеем
т.е. первый порядок аппроксимации. Для сходимости рассмотрим решение задачи для z>i>:
Множитель при л > 0. Выражая z>i> через z>0>, имеем
Отсюда │z>i>│≤ 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 – возрастающая геом. прогрессия.
Таким образом, можно рассматривать следующие модули сеток:
Равномерная сетка .
Квазиравномерная сетка (…).
Неравномерная по возрастающей геометрической прогрессии .
Неравномерная по убывающей геометрической прогрессии .
Среднеарифметический метод 3) и 4) .
Глава II. Одномерное уравнение переноса с переменными коэффициентами
2.1 Постановка задачи
Рассмотрим уравнение вида:
(1)
удовлетворяющий начальным условиям
(2)
и граничным условиям:
(3)
Входные данные:
1)
l=1, T=1
точное решение:
2)
точное решение:
3)
точное решение:
4)
точное решение:
Для решения задачи (1) – (3) используем различные разностные схемы, вернее, явную и неявную.
2.2 “Явные ” схемы
Явные схемы для нашей задачи используются тогда, когда p(x,t) > 0, (p>0>>0, p>N>>0) или p(x,t)<0, (p>0><0, p>N><0). На практике часто используют схему бегущего счета. В зависимости от знака функции p(x,t) используют правую или левую разностные схемы.
Итак, рассмотрим схему бегущего счета в обоих случаях.
1) p(x,t)>0, (p>0>>0, p>N>>0)
Разностная схема (правая) имеет вид
; (1′)
; (2′)
; (3′)
из (1′) ,
где .
2) p(x,t)<0, (p>0><0, p>N><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) p>0>>0, p>N>>0; 2) p>0><0, p>N><0; 3) p>0>>0, p>N><0; 4) p>0><0, p>N>>0.
Рассмотрим 2 различные разностные схемы:
Центрально- разностная схема.
Трехточечная схема с весом.
Все эти схемы решаются методом прогонки и все эти разностные уравнения, т.е. полученные при аппроксимации схемы, вернее, уравнения сводятся к виду:
(4)
Коэффициенты A>i>, B>i>, C>i>> >должны удовлетворять условиям:
(5)
Коэффициенты B>0 >, C>0> , F>0>, A>N> ,C>N> ,F>N> находятся из граничных условий. В данной задаче в зависимости от знака функции p(x,t) ставятся граничные условия и тем самым находятся наши коэффициенты. Рассмотрим все 4 случая:
1) p>0>>0, p>N>>0, u(l,t)=м>2>(t), (3′)
из уравнения (3′) A>N> ,C>N> ,F>N> .
B>0 >, C>0> , F>0 >находятся из дополнительного условия, которая ставится на левом конце.
2) p>0><0, p>N><0, u(0,t)=м>1>(t), (3″) из уравнения (3″) B>0 >, C>0> , F>0.>
A>N> ,C>N> ,F>N> находятся из дополнительного условия, которая ставится на правом конце.
3) p>0><0, p>N>>0, u(0,t)=м>1>(t), u(l,t)=м>2>(t), (3″′)
из уравненя (3″′) B>0 >, C>0> , F>0>
A>N> ,C>N> ,F>N>
4) p>0>>0, p>N><0, нет граничных условий.
Дополнительное условие ставится на левом и на правом концах. Находим B>0>, C>0> , F>0 >, A>N> ,C>N> ,F>N> .
Алгоритм правой прогонки
, .
,
.
При выполнении условий алгоритм правой прогонки устойчив.
2.3.1 Центрально разностная схема
Разностная схема имеет вид (задачи (1)-(3)):
, .
1) P>0>>0, P>N>>0
, , .
2) P>0><0, P>N><0
.
3) P>0><0, P>N>>0
B>0>=0, C>0>=1, F>0>= ,
→ A>N>=0, C>N>=1, > .>
4) P>0>>0, P>N><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) P>0>>0, P>N>>0 y>N>j+1 = м>2>j+1 → A>N >=0, C>N>=1, F>N >= м>2>j+1
(1.0)
Уравнение (1.0) приводим к виду
(1.1)
Из уравнения (1.1) находим
, ,
.
2) P>0><0, P>N><0 y>0>j+1 = м>1>j+1 → B>0 >=0, C>0>=1, F>0 >= м>1>j+1
. (2.0)
Уравнение (2.0) приводим к виду
(2.1)
Из уравнения (2.1) находим , ,
.
3)P>0><0, P>N>>0
y>0>j+1 = м>1>j+1 → B>0>=0> >,C>0>=1, F>0>= м>1>j+1 ,
y>N>j+1 = м>2>j+1 → A>N>=0> >,C>N>=1, F>N>= м>2>j+1.
4) P>0>>0, P>N><0
B>0 >=0,C>0>=1, F>0>= м>1>j+1
A>N>> >=0,C>N>=1, F>N>= м>2>j+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)
Коэффициенты A>i>, B>i>, C>i>> >должны удовлетворять условиям:
(3.5)
Коэффициенты B>0 >, C>0> , F>0>, A>N> ,C>N> ,F>N> находятся из граничных условий. В данной задаче в зависимости от знака функции p(x,t) ставятся граничные условия и тем самым находятся наши коэффициенты.
Когда р>0 задается правое граничное условие:
(3.3′)
Используя уравнения (3.3′) находим коэффициенты A>N> ,C>N> ,F>N> . Коэффициенты B>0 >, C>0> , F>0> находятся из дополнительного условия, которое ставится на левом конце.
2) Когда р<0 задается граничное условие на левом конце
(3.3″)
Используя уравнения (3.3″) находим коэффициенты B>0 >, C>0> , F>0>
Коэффициенты A>N> ,C>N> ,F>N>> >находятся из дополнительного условия, которое ставится на правом конце.
3.3.1 Центрально-разностная схема
Разностная схема задачи (3.1)-(3.3) имеет следующий вид:
1) р>0. В этом случае граничное условие задается на правом конце:
(3.6)
Используя уравнение (3.6) находим коэффициенты A>N> =0, C>N>=1,
Дополнительное условие на левом конце имеет вид:
(3.7)
Приведем уравнение (3.7) к виду :
(3.7′)
Отсюда находим коэффициенты:
В случае, когда р<0, граничное условие ставится на левом конце
(3.8)
Используя уравнение (3.8) находим коэффициенты B>0,>=0, C>0>=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)- нечетном решаем по неявной схеме явно. В целом схема реализуется явно.
Заключение
Теория разностных схем является самостоятельным разделом вычислительной математики, где изучаются методы приближенного решения дифференциальных уравнений путем замены их конечно –разностными уравнениями (разностными схемами).
Конечно –разностный метод (метод сеток) –один из мощных достаточно универсальных методов современной вычислительной математики. Этот метод относится к классу машинных методов решения широкого круга задач для дифференциальных уравнений.
В дипломной работе рассмотрены “явные” и неявные разностные методы решения для одномерного уравнения переноса с переменными коэффициентами и для одномерного уравнения переноса с постоянными коэффициентами на неравномерных сетках. Использованы такие разностные схемы, как схема бегущего счета, трехточечная схема с весом, центрально –разностная схема, схема “прямоугольник”, схема со сглаживанием, схема прямоугольник со сглаживанием, “шахматная ” схема.
Произведены некоторые расчеты для одномерного уравнения переноса с переменными и постоянными коэффициентами на неравномерных сетках, с целью определения наиболее устойчивой разностной схемы.
Исследование показало, что наиболее устойчивым методом для одномерного уравнения переноса с переменными коэффициентами является:
При p0>0, pN>0 трехточечная схема с весом при G=1, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00007549.
При p0<0, pN<0 неявная схема с центральной разностью, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00007574.
При p0<0, pN>0 так же схема с центральной разностью, абсолютная погрешность составляет 0,00009042.
Так же произведены расчеты некоторых методов одномерного уравнения переноса с постоянными коэффициентами.
Исследование показало, что наиболее устойчивым методом для одномерного уравнения переноса с постоянными коэффициентами является:
При p>0 трехточечная схема с весом при G=1, абсолютная погрешность аппроксимации на 50-м слое составляет 0,00000755.
2) При p<0 также трехточечная схема с весом при G=1, абсолютная погрешность на 50-м слое составляет 0,00022000
Список использованной литературы
Самарский А.А. Теория разностных схем. М.:Наука, 1977, с. 616.
Самарский А.А., Гулин А.В.Численные методы. М.Наука, 1989, с. 315.
Охлопков Н.М. Численные методы решения обыкновенных дифференциальных уравнений. Якутск: Изд-во Ягу, 1993, с. 38.
Охлопков Н.М., Охлопков Г.Н. Введение в специальность “Прикладная математика” часть 1,2 Якутск: Изд-во Ягу, 1997, с. 93, с. 85.
Охлопков Н.М., Иванов Ф.В. Вычислительные алгоритмы решения задач для дифференциальных уравнений Якутск: Изд-воЯгу, 1992, с.65.
Охлопков Н.М.,Иванов Ф.В. Пакет программ численного решения задач математической физики ч.2, Якутск: Изд-во Ягу, 1989, с 15.
Охлопков Н.М. Об экономичных методах решения задач математической физики. Якутск: Изд-во Ягу, 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,alfa,betta:m;
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[i+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.